| 제목 | 게시판 예제 연습중 A PHP Error was encountered에러가뜹니다.. | ||
|---|---|---|---|
| 카테고리 | CI 2, 3 | ||
| 글쓴이 | 요다다잉 | 작성시각 | 2021/02/17 15:45:18 | 
|  | |||
| <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); /** * 게시판 메인 컨트롤러 */ 
 class Board extends CI_Controller { /** * 게시물 쓰기 */ function write() { echo '<meta http-equiv="content-type" content="text/html; charset=utf-8" />'; 
 if ($_POST) { // 글쓰기 POST 전송 시 
 $this -> load -> helper('alert'); 
 // 주소 중에서 page 세그먼트가 있는지 검사하기 위해 주소를 배열로 반환 $uri_array = $this -> segment_explode($this -> uri -> uri_string()); 
 if (in_array('page', $uri_array)) { $pages = urldecode($this -> url_explode($uri_array, 'page')); } else { $pages = 1; } 
 if (!$this -> input -> post('subject', TRUE) AND !$this -> input -> post('contents', TRUE)) { // 글 내용이 없을 경우, 프로그램 단에서 한 번 더 체크 alert('비정상적인 접근입니다.', '/bbs/board/lists/' . $this -> uri -> segment(3) . '/page/' . $pages); exit ; } 
 // var_dump($_POST); $write_data = array( 'subject' => $this -> input -> post('subject', TRUE), 'contents' => $this -> input -> post('contents', TRUE), 'table' => $this -> uri -> segment(3) ); 
 $result = $this -> board_m -> insert_board($write_data); 
 if ($result) { alert("입력되었습니다.",'/bbs/board/lists/'.$this->uri->segment(3).'/page/'.$pages); exit; } else { alert("다시 입력해주세요.",'/bbs/board/lists/'.$this->uri->segment(3).'/page/'.$pages); exit; } } else { // 쓰기 폼 view 호출 $this->load->view('/write_v'); } } 
 /** * 게시물 보기 */ function view() { // 게시판 이름과 게시물 번호에 해당하는 게시물 가져오기 $data['views'] = $this -> board_m -> get_view($this -> uri -> segment(3), $this -> uri -> segment(4)); 
 // view 호출 $this -> load -> view('/view_v', $data); 
 } 
 function __construct() { parent::__construct(); $this -> load -> database(); $this -> load -> model('board_m'); $this -> load -> helper(array('url', 'date')); } 
 /** * 주소에서 메서드가 생략되었을 때 실행되는 기본 메서드 */ public function index() { $this -> lists(); } 
 /** * 목록 불러오기 */ public function lists() { 
 $this -> output -> enable_profiler(TRUE); // 검색어 초기화 $search_word = $page_url = ''; $uri_segment = 5; 
 // 주소 중에서 q(검색어) 세그먼트가 있는 지 검사하기 위해 주소를 배열로 반환 $uri_array = $this -> segment_explode($this -> uri -> uri_string()); 
 if (in_array('q', $uri_array)) { // 주소에 검색어가 있을 경우 처리 $search_word = urldecode($this -> url_explode($uri_array, 'q')); 
 // 페이지네이션 용 주소 $page_url = '/q/' . $search_word; 
 $uri_segment = 7; } 
 // 페이지네이션 라이브러리 로딩 $this -> load -> library('pagination'); 
 // 페이지 네이션 설정 $config['base_url'] = '/bbs/board/lists/ci_board' . $page_url . '/page/'; // 페이징 주소 $config['total_rows'] = $this -> board_m -> get_list($this -> uri -> segment(3), 'count', '', '', $search_word); // 게시물 전체 개수 $config['per_page'] = 5; // 한 페이지에 표시할 게시물 수 $config['uri_segment'] = $uri_segment; // 페이지 번호가 위치한 세그먼트 
 // 페이지네이션 초기화 $this -> pagination -> initialize($config); // 페이지 링크를 생성하여 view에서 사용하 변수에 할당 $data['pagination'] = $this -> pagination -> create_links(); 
 // 게시물 목록을 불러오기 위한 offset, limit 값 가져오기 $page = $this -> uri -> segment($uri_segment, 1); 
 if ($page > 1) { $start = (($page / $config['per_page'])) * $config['per_page']; } else { $start = ($page - 1) * $config['per_page']; } 
 $limit = $config['per_page']; 
 $data['list'] = $this -> board_m -> get_list($this -> uri -> segment(3), '', $start, $limit, $search_word); $this -> load -> view('/list_v', $data); } 
 /** * url 중 키 값을 구분하여 값을 가져오도록 * * @param Array $url : segment_explode 한 url 값 * @param String $key : 가져오려는 값의 key * @return String $url[$k] : 리턴 값 */ 
 function url_explode($url, $key) { $cnt = count($url); 
 for ($i = 0; $cnt > $i; $i++) { if ($url[$i] == $key) { $k = $i + 1; return $url[$k]; } } } 
 /** * HTTP의 URL을 "/"를 Delimiter로 사용하여 배열로 바꿔 리턴한다. * * @param String 대상이 되는 문자열 * @return string[] */ function segment_explode($seg) { // 세그먼트 앞 뒤 "/" 제거 후 uri를 배열로 반환 
 $len = strlen($seg); 
 if (substr($seg, 0, 1) == '/') { $seg = substr($seg, 1, $len); } 
 $len = strlen($seg); 
 if (substr($seg, -1) == '/') { $seg = substr($seg, 0, $len - 1); } 
 $seg_exp = explode("/", $seg); return $seg_exp; } 
 } <?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', $type = '', $offset = '', $limit = '', $search_word = '') { 
 $sword = ''; 
 if ($search_word != '') { // 검색어 있을 경우 $sword = ' WHERE subject like "%' . $search_word . '%" or contents like "%' . $search_word . '%" '; } 
 $limit_query = ''; 
 if ($limit != '' OR $offset != '') { // 페이징이 있을 경우 처리 $limit_query = ' LIMIT ' . $offset . ', ' . $limit; } 
 $sql = "SELECT * FROM " . $table . $sword . " ORDER BY board_id DESC " . $limit_query; $query = $this -> db -> query($sql); 
 if ($type == 'count') { $result = $query -> num_rows(); } else { $result = $query -> result(); } 
 return $result; } 
 /** * 게시물 상세보기 가져오기 * * @param string $table 게시판 테이블 * @param string $id 게시물 번호 * @return array */ function get_view($table, $id) { // 조횟수 증가 $sql0 = "UPDATE " . $table . " SET hits = hits + 1 WHERE board_id='" . $id . "'"; $this -> db -> query($sql0); 
 $sql = "SELECT * FROM " . $table . " WHERE board_id = '" . $id . "'"; $query = $this -> db -> query($sql); 
 // 게시물 내용 반환 $result = $query -> row(); 
 return $result; 
 } 
 /** * 게시물 입력 * * @param array $arrays 테이블 명, 게시물 제목, 게시물 내용 1차 배열 * @return boolean 입력 성공여부 */ function insert_board($arrays) { $insert_array = array( 'board_pid' => 0, 'user_id' => 'advisor', 'user_name' => 'palpit', 'subject' => $arrays['subject'], 'contents' => $arrays['contents'], 'reg_date' => date("Y-m-d H:i:s") ); 
 $result = $this->db->insert($arrays['table'], $insert_array); 
 return $result; } 
 } 
 
 | |||
| 첨부파일 | 이미지 6.png (203.2 KB) 이미지 2.png (225.3 KB) 이미지 4.png (215.6 KB) | ||
| 다음글 | 로그인 없이 다른 페이지로 가야하는데 반드시 로그인이 ... (1) | ||
| 이전글 | redirect 시 주소창에 index.php 뜨는것 ... (2) | ||
| 
                                변종원(웅파)
                                /
                                2021/02/17 15:51:09 /
                                추천
                                1
                             | 
| 
                                PureAni
                                /
                                2021/02/17 15:58:26 /
                                추천
                                1
                             
                                php8 버전인듯한데, $views 에 $views->subject; 라던가 값이 재대로 들어가 있는지 확인해보셔야 할듯하네요.
                             | 
| 
                                변종원(웅파)
                                /
                                2021/02/17 15:59:34 /
                                추천
                                1
                             확대해보니 책 소스네요. 모델에서 넘어온 내용을 출력해보세요. var_dump($data['views']); 그리고 모델에서 오브젝트 배열로 데이터를 가져왔는지도 확인하시구요 | 
| 
                                요다다잉
                                /
                                2021/02/17 16:10:26 /
                                추천
                                0
                             <!DOCTYPE html> <html>     <head>         <meta charset="UTF-8"/>         <meta name="apple-mobile-web-app-capable" content="yes" />         <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />         <title>CodeIgniter</title>         <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>         <link type="text/css" rel="stylesheet" href="/bbs/css/bootstrap.min.css" />         <script>             $(document).ready(function() {                 $("#search_btn").click(function() {                     if ($("#q").val() == '') {                         alert("검색어를 입력하세요!");                         return false;                     } else {                         var act = "/bbs/board/lists/ci_board/q/" + $("#q").val() + "/page/1";                         $("#bd_search").attr('action', act).submit();                     }                 });             });             function board_search_enter(form) {                 var keycode = window.event.keyCode;                 if (keycode == 13)                     $("#search_btn").click();             }        </script>     </head>     <body>         <div id="main">             <header id="header" data-role="header" data-position="fixed">                 <blockquote>                     <p>                         만들면서 배우는 CodeIgniter                     </p>                     <small>실행 예제</small>                 </blockquote>             </header>             <nav id="gnb">                 <ul>                     <li>                         <a rel="external" href="/bbs/<?php echo $this -> uri -> segment(1); ?>/lists/<?php echo $this -> uri -> segment(3); ?>">                              게시판 프로젝트 </a>                     </li>                 </ul>             </nav>             <article id="board_area">                 <header>                     <h1></h1>                 </header>                 <table cellspacing="0" cellpadding="0" class="table table-striped">                     <thead>                         <tr>                             <th scope="col">글제목:<?php echo $views -> subject;?></th>                             <th scope="col">이름: <?php echo $views -> user_name;?></th>                             <th scope="col">조회수: <?php echo $views -> hits;?></th>                             <th scope="col">등록일: <?php echo $views -> reg_date;?></th>                            <? var_dump($data['views']);?>                         </tr>                     </thead>                     <tbody>                         <tr>                             <th colspan="4">                                 글내용<?php echo $views -> contents;?>                             </th>                         </tr>                     </tbody>                     <tfoot>                         <tr>                             <th colspan="4">                                 <a href="/bbs/board/lists/<?php echo $this -> uri -> segment(3); ?>/                                     page/<?php echo $this -> uri -> segment(7); ?>" class="btn btn-primary">목록 </a>                                 <a href="/bbs/board/modify/<?php echo $this -> uri -> segment(3); ?>/board_id/                                     <?php echo $this -> uri -> segment(4); ?>/page/<?php echo $this -> uri -> segment(7); ?>"                                     class="btn btn-warning"> 수정 </a>                                 <a href="/bbs/board/delete/<?php echo $this -> uri -> segment(3); ?>/board_id/                                     <?php echo $this -> uri -> segment(5); ?>/page/<?php echo $this -> uri -> segment(7); ?>"                                     class="btn btn-danger"> 삭제 </a>                                 <a href="/bbs/index.php/board/write/ci_board/<?php echo $this -> uri -> segment(3); ?>/page/<?php echo $this -> uri -> segment(7); ?>"                                     class="btn btn-success">쓰기</a>                                                 </th>                         </tr>                     </tfoot>                 </table>             </article>             <footer id="footer">                 <dl>                     <dt>                         <a class="azubu" href="http://www.cikorea.net/" target="blank"> CodeIgniter 한국 사용자포럼 </a>                     </dt>                     <dd>                         Copyright by <em class="black">Palpit</em>.                     </dd>                 </dl>             </footer>         </div>     </body> </html> | 
| 
                                요다다잉
                                /
                                2021/02/17 16:10:46 /
                                추천
                                0
                             
                                부탁드립니다 ㅠㅠ
                             | 
| 
                                요다다잉
                                /
                                2021/02/17 17:11:42 /
                                추천
                                0
                             
                                 var_dump($data['views']); 하니깐 똑같은 에러가뜹니다 ㅠㅠ..
                             | 
| 
                                ledco
                                /
                                2021/02/17 18:14:12 /
                                추천
                                0
                             function view() { // 게시판 이름과 게시물 번호에 해당하는 게시물 가져오기 $data['views'] = $this -> board_m -> get_view($this -> uri -> segment(3), $this -> uri -> segment(4)); var_dump($data['views']); # 여기서 한번 찍어보죠 // view 호출 $this -> load -> view('/view_v', $data); 
 } | 
이미지가 작아서 소스 내용이 안보이네요
warning 메세지로는 해당 내용들이 없습니다. 컨트롤러에서 뷰로 데이터를 어떻게 넘겼는지 해당부분 소스 올려주세요