만들면서 배우는 CodeIgniter Q&A

제목 4장 view_v 관련(120page, 145page) 질문입니다.
글쓴이 지상 작성시각 2017/02/17 15:08:16
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 1082   RSS

120페이지 4.3 보기 기능 추가하기(145페이지 전체코드)를 학습중인데요.

/**
	 * 게시물 보기
	 */
	function view() {
		// 게시판 이름과 게시물 번호에 해당하는 게시물 가져오기
		$data['views'] = $this->board_m->get_view($this->uri->segment(3), $this->uri->segment(5));

이 부분에서 똑같이 치고 결과를 보면

이렇게 뜨구요.

 

주소창에 있는 ci_board 다음에 board_id를 타이핑하거나

혹은, 뒤에 segment(5)를 segment(4)로 고치니까 제대로 뜹니다.

책에서 보니 주소가 앞에 bbs가 빠져있고, board/view/ci_board/board_id/글 번호 이런 형식이고,

제 결과는 보시다시피 board_id가 빠져있습니다.

책에 실린 그림에 주소에 'bbs'가 빠진 것은 별개로 지금까지 다른 문제는 없었으니 그러려니 하겠는데

문제는 책에서는 글 번호가 board_id 다음에 segment(5) 자리에 있는 것이 맞는데

저의 실습 결과는 board_id를 주소에 끼워넣지 못하기 때문에 발생하는 오류로 보입니다.

 

지금 실습을 PHP7 버전에서 하고있어서 그런 것일까요?

코드의 오류는 한 10번 확인해봤지만 전혀 없습니다.

 다음글 3쇄 89쪽 오탈자 (1)
 이전글 페이지 내이션 uri문제 (2)

댓글

변종원(웅파) / 2017/02/17 15:41:47 / 추천 0

이미지의 주소를 참고하지 마시고 책 본문의 주소로 작업을 하세요.

그리고 아래쪽에 동일한 글이 있는데 게시판 목록의 공지사항 - 오탈자 부분도 확인하시기 바랍니다.

1쇄를 보고 계신 것 같습니다.

원인은 처음엔 BBS 디렉토리가 없이 서술하다가 중간에 기획의도에 따라 BBS 디렉토리가 추가되면서 소스에 제대로 반영이 

안되서 그런 것입니다. 오탈자 게시판에 등록되어 있고 한빛미디어 사이트에서 다운받은 소스가 최종본이라 

다운받은 소스를 참조하시면 됩니다.

지상 / 2017/02/17 16:00:23 / 추천 0

아뇨.. 일단 제가 보고 있는 건 2015년에 나온 3쇄본이구요.

bbs랑은 지금 상관이 없는 문제고, 주소에 board_id가 안 들어가서 발생하는 문제입니다.

다른 기능은 아무 문제없는데 Board 컨트롤러에 있는 function view() 부분만 문제가 있습니다.

아! 그리고 참고로 PHP7과 CodeIgniter 3버전으로 하고 있습니다.

말씀하시는 뉘앙스를 보니 PHP7과는 별로 상관이 없어보이는데, 그럼 CI3에서 발생하는 문제일까요?

변종원(웅파) / 2017/02/17 16:44:26 / 추천 0

php, ci 버전과 관계없습니다.

bbs랑 상관이 있습니다. 그게 들어가면 번호가 바뀌어야 합니다. 

주소에서 ciboard는 db 테이블명이고 그 뒤의 12가 게시물번호입니다. 그것만 맞춰주시면 됩니다.

지상 / 2017/02/17 17:26:18 / 추천 0

제 질문이 잘 이해가 안 되시는거 같은데

4장까지 마치고, 구현된 것을 확인하면 정상 작동되어야 맞는 것이잖아요.

게시글 목록은 잘 나오는데, 게시글을 하나 선택해서 들어가면 view(게시물 보기) 기능에서 오류가 난다는 것이죠.

function view()
{
    $table = $this->uri->segment(3);
    $board_id = $this->uri->segment(5);

    // 게시판 이름과 게시물 번호에 해당하는 게시물 가져오기
    $data['views'] = $this->board_m->get_view($table, $board_id);

    // view 호출
    $this->load->view('board/view_v', $data);
}

코드는 이렇습니다.

문제는 저기 있는 segment(5)를 segment(4)로 고쳐주면 정상 작동한다는 것입니다.

책에 있는 내용은 ci_board가 (3)자리고, board_id가 (4)자리, 게시물 번호가 (5)자리잖아요.

그런데 저는 게시물을 누르고 브라우저 주소를 보면 (4)자리에 있어야 할 board_id가 없고,

ci_board 다음에 바로 게시물 번호가 들어갑니다.

책에는 ci_board/board_id/게시물 번호 이런 식인데 제가 하면

ci_board/게시물 번호 이런 식으로 board_id가 빠지잖아요.

여기서 왜 책이랑 다른 것인지 궁금하네요.

변종원(웅파) / 2017/02/17 20:42:34 / 추천 0

목록에서 뷰로 들어가는 주소 링크 부분을 보세요. 잘못 만드셨으니까 없겠죠.

질문자가 다르게 만든것을 왜 다르냐고 물어보면 어떻게 대답을 할까요? ㅎㅎㅎ

지상 / 2017/02/20 10:49:13 / 추천 0

목록을 언급하셨길래 주말 지나고 책을 펴서 list_v 부분을 저의 소스와 비교해보았습니다.

<tr><td></td></tr> 안에 들어가는 내용의 코드가 문제를 일으켰네요.

102쪽 코드에서 갑자기 아무 설명없이(!!) 106쪽 코드가 일부 변경(사이에 갑자기 /board_id/가 들어가있음)되었고,

전체코드 파트에서 156쪽에도 마찬가지로 106쪽 코드랑 다르게 일부 코드가 추가(/page/, <?php echo $page;?> 추가)되었네요.

이러면 처음부터 차근차근 따라가다가 작동이 안 되면 저같은 초보에겐 대 혼란이 올 수밖에 없습니다.

 

지상 / 2017/02/20 10:51:55 / 추천 0

아! 지금 오탈자 안내글을 보니 어느 분께서 이미 제보한 내용이네요.

그리고 156쪽에 나온 코드대로 따라하면 또다시 오류가 납니다. 156쪽은 4강까지만 해당되어야 하거든요.

<td></td>에 해당하는 내용인데, <a rel="external" ........... $lt->board_id;?> 다음에 /page/<?php echo $page;?>

요게 빠져야 정상적으로 작동하더군요.