CI 묻고 답하기

제목 DB에서 읽은 값이 VIEW에 나타나지 않을 때
글쓴이 비오는날 작성시각 2014/02/18 21:42:32
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 12767   RSS
 안녕하세요.

이제 독학으로 프로그래밍 공부를 시작한지 한 달된 초짜입니다.
생활코딩에서 codeigniter를 알고 그 매력에 흠뻑 빠져 현재 헤매고 있는 중입니다.

다름이 아니라 DB에 저장된 값을 읽어 view에 출력시킬려고 하는데
이렇게 저렇게 해보고 찾아보고 다시 해보고 하다 하다 안되어서 이렇게 글을 남깁니다.

컨트롤 모델 뷰 순으로 올리겠습니다.

        function gets(){        
     
        $this->load->model('dbtest_m');
        $data=$this->dbtest_m->gets();       
        $this->load->view('gets_v', array('data' => $data));
       }


------------------------------

        function gets(){
        return $this->db->query("select * from test;");
        
    }



-------------------------------------

<?php
      foreach ($data->result() as $row) {

         echo $row->name;

         echo $row->phon;

         echo $row->bd;
                           
    }
?>


------------------------------------------

모델과 컨트롤에서 foreach를 이용해서 db값을 정상적으로 불러와 출력하는  것을 확인했는데
뷰에서는  에러 메세지만 뜨네요

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: data

Filename: views/gets_v.php

Line Number: 6


고수님들의 많은 조언 부탁드립니다.

감사합니다.

 다음글 디비 셀렉트 질문입니다. (2)
 이전글 config 파일 오버로딩 가능한가요? (6)

댓글

변종원(웅파) / 2014/02/18 23:16:53 / 추천 0
매뉴얼을 다시 한번 차근차근 읽어보세요.

에러메세지는 $data 라는 변수가 선언되지 않았다는 겁니다.

아래 소스 보시고 뭐가 다른지 보세요.

 function gets(){        
     
        $this->load->model('dbtest_m');
        $data['gets']=$this->dbtest_m->gets();       
        $this->load->view('gets_v', $data);
       }


------------------------------
model
        function gets(){
        $query = $this->db->query("select * from test;");
        return $query->result();
    }



-------------------------------------

<?php
      foreach ($gets() as $row) {
         echo $row->name;
         echo $row->phon;
         echo $row->bd;
                           
    }
?>




비오는날 / 2014/02/19 15:59:30 / 추천 0
안녕하세요. 

바로 답변을 달아 주셔서 감사드립니다.

오늘 아침부터 열심히 해 보았는데.....

다시 한번 조언 부탁드립니다.

보여주신 소스를 참고로 해보았지만 일단 실패를 했습니다.

나중에는 이것 저것 다 해보다가

컨트롤과 모델  뷰에서 불필요한 코드는 죄다 삭제하고 

조언해주신 소스만 사용하여  실행했는데도.

어떠한 메세지도 보여주지 않고 있는 상태입니다.

크롬이나 익스도 마찬가지이고요.

저의 테스트 환경은 bitnami amp를 설치한 컴퓨터 loxalhost에서 진행하고 있습니다.

foreach로 테스트해 본 결과 model에서는 정상적으로 데이터를 읽어오는데

컨트롤부터는 못 읽어오는 것 같습니다.

메뉴얼을 다시 한번 보아도 어디가 문제인지 잘 모르겠습니다.

(이쪽으로는 감각이 없나 하는 생각도 드네요.)

다시 한번 조언 부탁드립니다.

수고하세요.
<?php 
class dbtest extends CI_Controller {
     
  function gets(){        
     
        $this->load->model('dbtest_m');
        $data['gets']=$this->dbtest_m->gets();       
        $this->load->view('gets_v', $data);
    }


}
?>






<?php
class Dbtest_m extends CI_Model {
 
  
 function gets(){
        $query = $this->db->query("select * from test;");
        return $query->result();
    }

}

?>






<html>

<?php
      foreach ($gets() as $row) {
         echo $row->name;
         echo $row->phon;
         echo $row->bd;
                           
    }

?>
</html>

한대승(불의회상) / 2014/02/19 17:09:30 / 추천 0
foreach 문에서 에러가 있습니다.

$gets() 가 아니라 $gets 입니다.
변종원(웅파) / 2014/02/19 17:18:24 / 추천 0
아이고 죄송합니다. 소스 복사해서 수정할때 ()를 그대로 남겨놨네요. T.T
비오는날 / 2014/02/19 17:25:59 / 추천 0
두 분 모두 감사합니다.

웅파님의 말씀대로 진리(?)는 메뉴얼에 있는데

아직 코드 보는 눈이 부족해서 그런 것 같은데 좀더 열심히 하겠습니다.

수고하세요,


참고로 속이 너무 후련하네요.  ㅎ ㅎ ㅎ