만들면서 배우는 CodeIgniter Q&A

제목 p87질문입니다.
글쓴이 스피드퀸 작성시각 2014/04/11 12:20:24
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 11753   RSS
1.컨트롤러
board.php
public function lists()
 {
  $data['list'] = $this->board_m->get_list($this->uri->segment(3));
  $this->load->view('board/list_v', $data);
 }
2.모델
function get_list($table='ci_board')
 {
         $sql = "SELECT * FROM ".$table." ORDER BY board_id DESC";     
  $query=$this->db->query($sql);
  $result=$query->result();
  return $result;
 }
3.뷰
<?php
foreach ($list as $lt)
{
?>
    <tr>
     <th scope="row">
      <?php echo $lt->board_id;?>
     </th>
     <td><a rel="external" href="/bbs/<?php echo $this->uri->segment(1);?>/view/<?php echo $this->uri->segment(3);?>"><?php echo $lt->subject;?></a></td>
     <td><?php echo $lt->user_name;?></td>
     <td><?php echo $lt->hits;?></td>
     <td><time datetime="<?php echo mdate("%Y-%M-%j", human_to_unix($lt->reg_date));?>"><?php echo mdate("%M. %j, %Y", human_to_unix($lt->reg_date));?></time></td>
    </tr>
<?php
}
?>

질문
1.컨트롤러에서 호출
get_list($this->uri->segment(3));

2.function get_list($table='ci_board') {
echo $table;
}
2번에서 echo로 $table을 출력해 보면 아무결과가 나오지 않고
SELECT * FROM ORDER BY board_id DESC 조회문이 이렇게 되네요..

여기서 질문..
get_list()에서  인자로 $this->uri->segment(3)를 전달하면
이 인자를 $table 변수가 받는건가요??
만약 인자를 받았다고  치면
처음에는 $table 변수에 $this->uri->segment(3)의 값이 할당이 되고,
그다음 다시 $table='ci_board'에 의해서 table 변수에 ci_board값이 할당이 되는 건가요?

어떻게 하든 테이블에는 아무런 값도 나오지가 않네요...
결론은 컨트롤러에서 값을 전달을 못해준거 같은데....
뭐가 문제일까요?
답변해 주시면 감사하겠습니다.








 다음글 p57 todo 보기 만들기 질문입니다. (2)
 이전글 게시판에 다중 검색 조건을 넣고 싶은 경우 (4)

댓글

변종원(웅파) / 2014/04/11 14:10:41 / 추천 0
이 게시판 보시면 동일 질문이 많은데 거의 대부분 주소를 잘못 입력해서 그렇습니다.

모델에서 get_list($talbe='ci_board') 라는 것은 파라미터가 아무 것도 없을 경우 자동으로
$table 변수에 ci_board라는 값을 할당하라는 의미입니다.
(이 부분은 codeigniter가 아니라 php 함수의 기본사용법입니다.)

컨트롤러에서 $this->uri->segment(3) 을 출력해서 ci_board 가 나오지 않으면 
주소를 잘못 치신 겁니다. 

그리고 한가지 책에서 게시판은 bbs 디렉토리에 작성을 해서 주소는 
http://localhost/bbs/board/lists/ci_board 가 되어 ci_board가 $this->uri->segment(4)라고 생각할 수 있지만
segment의 기준은 index.php입니다. index.php가 0번째 세그먼트이고 위 주소는
localhost/bbs/index.php/board/lists/ci_board 라서 세그먼트가 3이 됩니다.


스피드퀸 / 2014/04/11 19:43:49 / 추천 0
답변 감사합니다...주소가 문제였습니다;;증말 바보같네요;;
변종원(웅파) / 2014/04/14 17:20:33 / 추천 0
누구나 실수 합니다. (저도)
다만 다음에 똑같은 실수 안하면 됩니다. ^^ 
이그니 / 2014/06/12 11:53:18 / 추천 0
프레임웍 안거치고 그냥 /application/models/board_m형식으로 들어가서 echo를 확인하는건가요??
작동이 안될때 echo를 어떻게 찍어보는지 궁금합니다.
변종원(웅파) / 2014/08/01 10:10:13 / 추천 0
이그니/ 프레임워크 안거치고 모델만 실행할 수 없습니다. 그래서도 안되구요.
그냥 모델 내부에서 원하는 변수를 출력해보면 됩니다. 
프레임워크라고 일반 php작업하는 것과 크게 다르지 않습니다. 
(프레임워크 자체 문법과 php 문법이 혼용되어 사용되죠)

echo $var;