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