| 제목 | 게시판 데이터 출력이 이상해서 질문드립니다. | ||
|---|---|---|---|
| 글쓴이 | 다스부 | 작성시각 | 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 입니다.