제목 | 게시판 데이터 출력이 이상해서 질문드립니다. | ||
---|---|---|---|
글쓴이 | 다스부 | 작성시각 | 2013/07/25 18:11:06 |
|
|||
하루 종일 고민하다가 질문 드립니다. 교재 p77~p91 까지의 내용중 질문 입니다. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Board_m extends CI_Model { function __construct() { parent::__construct(); } function get_list($table='ci_board') { $sql = "SELECT * FROM ".$table." ORDER BY board_id DESC"; $query = $this->db->query($sql); $result = $query->result_array(); return $result; } }위 코드는 모델 코드 입니다. 1. 첫번째 질문 입니다. $sql에 table 변수를 읽지 못해 데이터 베이스 오류가 납니다. 에러 내역은 다음과 같습니다. Error Number: 1064 SELECT * FROM ORDER BY board_id DESC 처럼 테이블 명을 제대로 가져오지 못합니다. 2. 두번째 질문 입니다. <article id="board_area"> <header> <h1></h1> </header> <table cellspaCodeIgniterng="0" cellpadding="0"> <thead> <tr> <th scope="col">번호</th> <th scope="col">제목</th> <th scope="col">작성자</th> <th scope="col">조회수</th> <th scope="col">작성일</th> </tr> </thead> <tbody> <?php print_r($list)?> <?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);?>/board_id/<?php echo $lt->board_id;?>/page/<?php echo $page;?>"><?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 } ?> </tbody> </table> </article> 위 코드는 제 뷰 코드 입니다. 웅파님께서 예제코드로 배포하신것중 4.1 부분에 해당 부분만 편집하여 붙여 넣은 뷰 입니다. 모델의 $sql 에 $table 변수를 ci_board 라고 명시 하고 테스트해 보았습니다. print_r($list) 를 하여 데이터를 확인해 보니 데이터는 전부 가져 오는것을 확인했습니다. 하지만 테이블에 뿌려지는 값은 board_id 가 제일 높은 값 한개만 표시가 되더군요. 왜 한개만 표시가 되는지 이해가 안가서 질문 드립니다. 세번째, 질문입니다.. bootstrap 적용이 안되서 한글이 깨지던데, _remap 함수를 정의 했음에도 왜그런것 인지 궁금합니다. 제 컨트롤러 소스도 혹시 몰라 첨부 합니다. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Board extends CI_Controller { function __construct() { parent::__construct(); $this->load->database(); $this->load->model('board_m'); } public function index() { $this->lists(); } public function _remap($method) { $this->load->view('header_v'); if(method_exists($this, $method)) { $this->{"{$method}"}(); } $this->load->view('footer_v'); } public function lists() { $data['list'] = $this->board_m->get_list($this->uri->segment(3)); $this->load->view('board/list_v',$data); } } 나름대로 여기저기 다 찾아보아도 답이 안나와 질문 드립니다. 감사합니다. |
|||
다음글 | 책 56Page mdate 문제.. (8) | ||
이전글 | 섹션별로 코드가 나눠져 있었으면 좋겠어요. (1) | ||
변종원(웅파)
/
2013/07/25 18:40:34 /
추천
0
|
변종원(웅파)
/
2013/07/25 21:39:49 /
추천
0
2번 추가 답변입니다.
모델에서는 일반배열(result_array())로 가져오고 뷰에서는 객체배열($lt->board_id)형태를 사용하고 있습니다. 책 내용을 다시 보시면 일반배열은 주석처리 되어 있고 객체배열(result())로 되어 있습니다. 87페이지 5번 print_r( $list ) 로 정상적으로 몇개의 데이터가 나왔다면 그 밑의 foreach()문에서도 똑같은 수의 리스트가 나오는 것이 정상입니다. 모델을 result_array()에서 result()로 바꿔보세요.
|
다스부
/
2013/07/26 10:02:17 /
추천
0
빠른 답변 감사합니다!!
잘 지도해주신 덕분에 제대로 출력이 되는군요! 하나 더 여쭤봐도 될까요? 여전히 모델에서 sql 을 $sql = "SELECT * FROM ".$table." ORDER BY board_id DESC"; 로 하면 안되더군요.. ci_board라고 하드 코딩하면 되긴 하던데.. 세그먼트 숫자 말씀하신거 처럼 4로 바꿔도 안되더라구요.. |
변종원(웅파)
/
2013/08/01 23:18:46 /
추천
0
주소에서 네번째 세그먼트가 게시판명입니다. 그게 제대로 안되어 있으면 모델에서
테이블명을 가져오지 못합니다. 책 보시고 주소를 제대로 입력해보세요. (첫번째 답변에도 있습니다) |
http://localhost/bbs/board/lists/ci_board/page/1
4번째 세그먼트가 테이블명입니다.
2. 2번 질문도 아마 테이블명과 연관이 있는 것 같습니다. 주소를 제대로 해서 테스트해보세요.
3. 부트스트랩과 한글은 상관이 없습니다. 브라우저의 캐릭터셋을 확인하세요.
ci는 utf-8 입니다.