제목 | 게시판 예제 연습중 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 메세지로는 해당 내용들이 없습니다. 컨트롤러에서 뷰로 데이터를 어떻게 넘겼는지 해당부분 소스 올려주세요