만들면서 배우는 CodeIgniter Q&A

제목 오탈자 안내
글쓴이 변종원(웅파) 작성시각 2013/07/23 18:38:46
댓글 : 49 추천 : 0 스크랩 : 1 조회수 : 40824   RSS

책 78페이지의 스키마입니다.use ci_book;

 

CREATE TABLE `ci_board` (

  `board_id` int(10) NULL AUTO_INCREMENT,

  `board_pid` int(10) NULL DEFAULT '0' COMMENT '원글번호',

  `user_id` varchar(20) NULL COMMENT '작성자ID',

  `user_name` varchar(20) NOT NULL COMMENT '작성자이름',

  `subject` varchar(50) NOT NULL COMMENT '게시글제목',

  `contents` text NOT NULL COMMENT '게시글내용',

  `hits` INT(10) NOT NULL COMMENT '조회수',

  `reg_date` datetime NOT NULL COMMENT '등록일',

  PRIMARY KEY (`board_id`),

  INDEX `board_pid` (`board_pid`)

)

COMMENT='CodeIgniter </span><span >게시판</span><span lang="EN-US">'

COLLATE='utf8_general_ci'

ENGINE=MyISAM;4.1절 게시판 테이블 만들기의 스키마입니다.제가 테스트한 윈도우7, xampp1.8.1 환경에서 에러가 나지 않아 소스를 올렸는데 한분이 에러보고를 해주셨습니다.hits 부분을 다음과 같이 수정하면 됩니다.`hits` INT(10) NOT NULL DEFAULT '0' COMMENT '조회수',

댓글

사랑나눔 / 2017/03/06 18:04:11 / 추천 0

3쇄 180쪽, 5.4 콜백 함수 아래에 2번째줄 오탈자

"ID 중복 여부를 체크하는 사용합니다." -> "ID 중복 여부를 체크하는데 사용합니다."

"데"가 빠진것 같습니다.

사랑나눔 / 2017/03/08 16:23:43 / 추천 1

3쇄 190쪽, $write_data 에

'table' => $this->uri->segment(3), //게시판 테이블명 누락 된 것 같습니다.

 

3쇄 196쪽, 그림6-1 처럼 저장 되지 않습니다. 코드이그나이터가 3.1.0 으로 버전이 올라간 탓인것 같습니다.

 

3쇄 198쪽, form_open() 함수 관련하여 config.php 에서

아래 내용을 추가해야만 정상 동작 하네요.

$config['base_url'] = 'http://localhost/bbs/';

명시하지 않았다면 The action you have requested is not allowed

요런 에러를 만나게 됩니다.

 

3쇄 203쪽, config 부분에서 코드이그나이터 2.0 대로 설명되어 있습니다.

코드이그나이터 3.1.0 에서는, 아래와 같이 변경해야 하며,

코드이그나이터 한국 사용자 포럼의 메뉴얼을 잘 참조해야 합니다.

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

p203쪽 테이블 생성도 코드이그나이터 2.0 에 맞는 테이블이며,

코드이그나이터 3.1.0 에서는 아래의 쿼리로 생성해야

페이지가 정상적으로 표시됩니다.

CREATE TABLE IF NOT EXISTS `ci_sessions` (
`id` varchar(40) NOT NULL,
`ip_address` varchar(45) NOT NULL,
`timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
`data` blob NOT NULL,
PRIMARY KEY (id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

3쇄 205쪽, 가운데쯤, 

$autoload['helper'] = array('date');

위 내용을 굵게 강조 표시 해주시면 좋겠습니다.

저는 콘트롤러에서 추가 위 내용을 못보고,

$this->load->helper(array('form','date')); 추가 했다가 다시 수정 했습니다.

 

여담으로, it 종사자는 공부가 끝이 없습니다 ㅜ.ㅜ 

새로운 기술들, 새로운 버전업, 최근들어 한달만 지나도

구식 기술이 되어간다는 숨막힘을 느끼고 있습니다.

but, 제 복이다 생각하고 부족하지만 계속 노력 하겠습니다.

난만이 / 2018/01/15 11:02:50 / 추천 0

웅파님이 17년3월6일에 올리신 수정사항은 아래와 같습니다.

 

               3쇄 117쪽, 그림4-8 에는 "쓰기" 버튼이 있는데,

               107쪽 코드에는 쓰기 버튼에 대한 코드가 없습니다.

               추가 되었으면 합니다.

               107쪽 4번째줄 </table> 아래에,

               <table>
                    <tr>               
                         <th>
                              <a href="/bbs/board/write/<?php echo $this->uri->segment(3);?>/page/
                                           <?php echo $this->uri->segment(7);?>"
                               class="btn btn-success">
                               쓰기
                              </a>
                         </th>           
                    </tr>
               </table>
 
그런데 아래 코드처럼 작성해야 할 듯 하네요.
<table>
     <tr>               
          <th>
               <a href="/bbs/board/write/<?=$this->uri->segment(3)?>/page/
<?php 
     if($this->uri->segment(5) == '') {
          echo '1';
     } else {
          echo $this->uri->segment(5);
     }
?>"
               class="btn btn-success">
               쓰기
               </a>
          </th>           
     </tr>
</table>
첫페이지인 '/bbs/board/lists/ci_board'에서 "쓰기"버튼을 클릭했을 때에는
3번째 세그먼트가 마지막이기 때문에 '페이지번호'를 가져올 수 없습니다.
그렇기 때문에
"쓰기"페이지['/bbs/board/write/ci_board/page/']에서 글 작성 후 "작성"버튼을 클릭했을 경우
컨트롤러의 write메서드가 url_explode()를 활용하여 'page' 바로 다음에 나오는 '페이지번호'를 가져오려고 하는데
'페이지번호'가 없기 때문에 url_explode() 실행에 오류가 발생하네요. 
그래서 저는 위와 같이 해결했습니다.
혹시 오류나 더 좋은 방법 있으면 댓글 부탁드립니다.
jooness / 2018/02/21 02:09:30 / 추천 0

윗댓글 한줄로 처리하면 삼항연산자 쓰면 되긋네요..

<a href="/bbs/board/write/<?php echo $this->uri->segment(3);?>/page/<?php echo ($this->uri->segment(5)=='')?'1':$this->uri->segment(5);?>" class="btn btn-success">쓰기</a>