제목 | 게시판 리스트 페이지 이동시 500에러가 납니다. | ||
---|---|---|---|
카테고리 | CI 4 관련 | ||
글쓴이 | 허접한개똥이 | 작성시각 | 2021/03/09 14:44:28 |
|
|||
-model- <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); /* * @Fnc : 게시판 모델구현 * @Create Date : 2017-11-23 * @Author : MS */ class Project_m extends CI_Model { function __construct() { parent::__construct(); } /** * 공지사항 자료실 최근게시물 조인 추출 * */ public function get_total_recent($args){ $sql ="select * from ".$args['tb1']." union select * from ".$args['tb1'].""; $query = $this->db->query($sql); return $query->result(); } public function get_category_info($args){ $this->db->select('*'); $this->db->from('project_category'); if($args['category']){ $this->db->where('project_category.category', $args['category']); } $query = $this->db->get(); $ret = ''; if ($query->num_rows() > 0) { $result = $query->row_array(); $ret = $result; } return $ret; } /** * 최근게시물 추출 * @param unknown $args * @return unknown|boolean */ public function get_recent($args){ $this->db->select('project.SEQ'); $this->db->select('project.SUBJECT'); $this->db->select('project.CONTENTS'); $this->db->select('project.REGDT'); $this->db->select('sysaccount.SYSID'); $this->db->from('project'); $this->db->join('sysaccount', 'project.REGID = sysaccount.SEQ', 'left'); $this->db->limit($args['limit']); $this->db->where('project.DELYN !=', '1'); /$this->db->where('project.category', $args['category']); $this->db->order_by('project.'.$args['orderby'],'desc'); $query = $this->db->get(); //echo $this->db->last_query(); if ($query->num_rows() > 0) { $ret = $query->result_array(); foreach($ret as $k=>$v){ $ret[$k]['SUBJECT'] = trim(strip_tags($ret[$k]['SUBJECT'])); } return $ret; } else { return FALSE; } } /** * 공지사항 게시물 갯수 추출 * @param unknown $args * @return unknown */ public function get_counts($args){ #일반 검색 if($args['searchstr'] != ''){ switch ($args['searchtype']) { case 0 : $this->db->where('(project.SUBJECT like "%' . $args['searchstr'] . '%" or project.CONTENTS like "%' . $args['searchstr'] . '%" )'); break; case 1 : $this->db->where('(project.SUBJECT like "%' . $args['searchstr'] . '%" )'); break; case 2 : $this->db->where('(project.CONTENTS like "%' . $args['searchstr'] . '%" )'); break; } } $this->db->where('project.category', $args['category']); $this->db->where('DELYN !=', '1'); $this->db->from('project'); $query = $this->db->get(); $ret = $query->num_rows(); return $ret; } /** * 일반 게시물 목록 조회 * @param unknown $args * @return unknown|boolean */ public function get_lists($args){ #일반검색 if($args['searchstr'] != ''){ switch ($args['searchtype']) { case 0 : $this->db->where('(project.SUBJECT like "%' . $args['searchstr'] . '%" or project.CONTENTS like "%' . $args['searchstr'] . '%" )'); break; case 1 : $this->db->where('(project.SUBJECT like "%' . $args['searchstr'] . '%" )'); break; case 2 : $this->db->where('(project.CONTENTS like "%' . $args['searchstr'] . '%" )'); break; } } $this->db->select('project.*'); $this->db->select(' sysaccount.SYSID, sysaccount.NAME, '); $this->db->select('(select count(*) from project_file where project.SEQ = project_file.PROJECTSEQ) AS FILECNT'); $this->db->from('project'); $this->db->join('sysaccount', 'project.REGID = sysaccount.SEQ', 'left'); $this->db->limit($args['limit'], $args['offset']); $this->db->where('project.category', $args['category']); $this->db->where('sysaccount.DELYN =', '0'); $this->db->where('project.DELYN =', '0'); $this->db->order_by('SEQ','desc'); //echo $this->db->last_query(); $query = $this->db->get(); if ($query->num_rows() > 0) { $ret = $query->result_array(); return $ret; } else { return FALSE; } } /** * @공지 게시물 목록 조회 * @param unknown $args * @return unknown|boolean */ /* public function get_notice2_lists($args){ $this->db->select( $args["tb"].'.*' ); $this->db->select(' sysaccount.SYSID, sysaccount.NAME, '); $this->db->from($args['tb']); $this->db->join('sysaccount', $args['tb'].'.REGID = sysaccount.SYSID', 'left'); $this->db->limit($args['limit'], $args['offset']); $this->db->where($args['tb'].'.GUBUN =', '2'); $this->db->where('sysaccount.DELYN !=', '1'); $this->db->where($args['tb'].'.DELYN !=', '1'); $this->db->order_by('project.SEQ','desc'); //echo $this->db->last_query(); $query = $this->db->get(); if ($query->num_rows() > 0) { $ret = $query->result_array(); return $ret; } else { return FALSE; } } */ /** * 상세 조회 * @param unknown $args * @return unknown|boolean */ public function get_detail($args){ $this->db->select('project.*'); $this->db->select(' sysaccount.SYSID, sysaccount.NAME, '); $this->db->from('project'); $this->db->join('sysaccount', 'project.REGID = sysaccount.SEQ', 'left'); $this->db->where('sysaccount.DELYN !=', '1'); $this->db->where('project.SEQ', $args['seq']); $this->db->where('project.category', $args['category']); $this->db->where('project.DELYN !=', '1'); $query = $this->db->get(); if ($query->num_rows() > 0) { $ret = $query->row_array(); return $ret; } else { return FALSE; } } /** * 조회수 * @param unknown $args * @return boolean */ public function pulus_hit($args){ $this->db->set('READCNT', 'READCNT + 1', FALSE); $this->db->where('SEQ', $args['seq']); $this->db->update('project'); //echo $this->db->last_query(); if ($this->db->affected_rows() > 0) { return TRUE; } else { return FALSE; } } /** * 이전글, 다음글 구현 * @param 테이블 $tb * @param board PK $board_id * @return 테이터 1 반환 */ public function get_prev($board_id) { $query = $this->db->query("SELECT project.SEQ, project.SUBJECT, project.REGDT, sysaccount.NAME FROM `project` LEFT JOIN sysaccount ON project.REGID = sysaccount.SEQ WHERE (project.SEQ < '".$board_id."' AND project.DELYN = '0' AND project.CATEGORY = '".$category."') ORDER BY project.SEQ DESC LIMIT 0,1;" ); return $query->row_array(); } public function get_next($board_id) { $query = $this->db->query( "SELECT project.SEQ, project.SUBJECT, project.REGDT, sysaccount.NAME FROM `project` LEFT JOIN sysaccount ON project.REGID = sysaccount.SEQ WHERE (project.SEQ > '".$board_id."' AND project.DELYN = '0' AND project.CATEGORY = '".$category."')ORDER BY project.SEQ ASC LIMIT 0,1;" ); return $query->row_array(); } /** * 파일첨부 정보 * @param unknown $args * @return boolean */ public function get_file_info($args){ $this->db->select('*'); $this->db->from('project_file'); $this->db->where('PROJECTSEQ', $args['seq']); $this->db->where('DELYN', 0); $query = $this->db->get(); if ($query->num_rows() > 0) { $ret = $query->result_array(); return $ret; } else { return FALSE; } } } /* End of file */ -컨트롤- <?php if(!defined('BASEPATH')) exit ( 'No direct script access allowed' ); /* * @Fnc : 게시판 구현(notice, pds) * @Create Date : 2017-11-23 * @Author : MS */ class Project extends CI_Controller { # 전역 view_data var $view_data = array (); #page var $context = 'contents1'; var $langs = 'en'; public function __construct() { parent::__construct (); #MY_Output class's nocache() method $this->output->nocache(); #libraries / helpers $this->load->helper('url'); $this->load->helper('alert'); $this->load->helper('fnc'); $this->load->helper('form'); $this->load->library('form_validation'); $this->load->library('pagination'); //$this->load->model('member_m'); $this->load->model('project_m'); # login 체크 /* $this->load->library('auth'); $this->view_data ['logged'] = $this->auth->is_logged(); $this->view_data ['admin_logged'] = $this->auth->is_admin_logged(); # 로그인 후 회원 정보 $this->view_data ['logged_data'] = $this->auth->get_member_info(); */ # 카테고리 표시 $this->category = $this->uri->segment(4,0); $this->project_info = $this->project_m->get_category_info(array('category'=>$this->category,'langs'=>$this->langs)); if (empty($this->project_info['CATEGORY']) != FALSE) { alert('생성되지 않은 게시판입니다.'); } $this->view_data['category_name'] = $this->project_info['NAMES']; $this->view_data['category'] = $this->project_info['CATEGORY']; #게시판 디자인 $this->view_data['appearance'] = $this->project_info['APPEARANCE']; #카테고리 정보 $this->view_data['category_list'] = $this->project_info; #홈페이지 정보 $this->load->library('setupinfo'); $this->view_data['setupinfo'] = $this->setupinfo->info($this->langs); #언어 $this->view_data['langs'] = $this->langs; //프로파일러 $this->output->enable_profiler(FALSE); } /** * index */ public function index() { show_404(); } /** * 목록 * @param $arg */ public function lists(){ if (empty($this->category)){show_404();} #게시판종류 $model_data['category'] = $this->category; #쿼리스트링 $querystring = $_SERVER['QUERY_STRING']; $this->view_data['query_string'] = $querystring; # pagination 환경 설정 $this->pagination_config = $this->config->item('pagination'); //$this->pagination_config['per_page'] = 10; # 페이지당 표시할 게시물수 $this->pagination_config['uri_segment'] = 5; # 페이지 번호가 지정될 세그먼트 번호 $this->pagination_config['num_links'] = 2; # 표시될 페이지수 / 2 (5면 10개씩 표시됨) $this->pagination_config['base_url'] = site_url('/'.$this->langs.'/project/lists/'.$this->category.'/'); $this->pagination_config['suffix'] = '?'.$querystring; #검색 값 추출 $searchType = $this->input->get('searchType', TRUE); //제목, 내용 타입 $searchStr= $this->input->get('searchStr', TRUE); //검색 단어 #검색 $model_data['searchtype'] = $searchType; $model_data['searchstr'] = $searchStr; #언어 $model_data['langs'] = $this->langs; # 총 카운트 수 $total_rows = $this->project_m->get_counts($model_data); $this->view_data['counts'] = $total_rows; # 페이지네이션 설정 $this->pagination_config['total_rows'] = $total_rows; $this->pagination_config ['per_page'] = 10; $this->pagination->initialize($this->pagination_config); # 검색 설정이 완료 된 후 페이지네이션 추가. $this->view_data['pagination'] = $this->pagination->create_links(); # 기본 view를 위한 모델 데이터 $model_data['limit'] = $this->pagination_config['per_page']; $model_data['offset'] =$this->uri->segment($this->pagination_config['uri_segment'], 0); #게시물 추출 $this->view_data['records'] = $this->project_m->get_lists($model_data); switch ($this->category){ case 'en_project' : $this->load->view('/web/'.$this->langs.'/page/contents1/lists', $this->view_data); break; case 'en_notice' : $this->load->view('/web/'.$this->langs.'/page/contents1/lists', $this->view_data); break; } } /** * 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; } /** * 상세보기 * @param unknown $arg */ public function view() { if (empty($this->uri->segment(5,0))){show_404();} $model_data = array( 'category' => $this->category, 'seq' => $this->uri->segment(5,0) ); $this->project_m->pulus_hit($model_data); # 이전글 다음글 $this->view_data ['prev'] = $this->project_m->get_prev($this->uri->segment(4, 0), $this->uri->segment(5, 0) ); $this->view_data ['next'] = $this->project_m->get_next($this->uri->segment(4, 0), $this->uri->segment(5, 0) ); # 레코드 $this->view_data['records'] = $this->project_m->get_detail($model_data); # 파일레코드 $this->view_data['filerecords'] = $this->project_m->get_file_info($model_data); switch ($this->category){ case 'en_project' : $this->load->view('/web/'.$this->langs.'/page/contents1/view', $this->view_data); break; /*case 'en_notice' : $this->load->view('/web/'.$this->langs.'/page/contents1/view', $this->view_data); break;*/ } } /** * 글작성 */ public function write() { # 인증 되어 있지 않을 경우 목록으로 리디렉션 if ($this->session->userdata ( 'logged_in' ) == FALSE) { alert('회원만 이용이 가능합니다.' ,'/member/login'); } # 유저 정보 조회 $model_data_retrieve = array(); $this->view_data['memid'] = $this->session->userdata('memid'); $model_data_retrieve['memid'] = $this->view_data['memid']; $retrieve = $this->member_m->get_member_info($model_data_retrieve); $this->view_data['retrieve'] = $retrieve; //print_r($model_data_retrieve); //print_r($this->view_data); # 밸리데이션 $this->form_validation->set_rules('subject', '제목', 'trim|required|xss_clean'); $this->form_validation->set_rules('gubun', '구분', 'trim|required'); $this->form_validation->set_rules('secretYN', '공개여부', 'trim|required'); $this->form_validation->set_rules('contents', '내용', 'trim|required'); # error 설정 $this->form_validation->set_message('required', '%s(는)은 필수 입력입니다!'); $form_validate = $this->form_validation->run(); //print_r($this->input->post()); //print_r($_POST); # 밸리데이션 체크 실패 | 성공 if ($form_validate == FALSE) { $this->load->view('/cs/qna_write', $this->view_data); //echo validation_errors(); } else { # 모델데이터 세팅 $model_data = array( 'SUBJECT' => $this->input->post('subject', TRUE), 'GUBUN' => $this->input->post('gubun', TRUE), 'SECRETYN' => $this->input->post('secretYN', TRUE), //'CONTENTS'=> $_POST['contents'], 'CONTENTS'=> $this->input->post('contents', TRUE), 'REGID' => $retrieve['MEMID'], 'REGDT' => date('Y-m-d h:i:s'), 'DELYN' => 0 ); //print_r($model_data); # 게시물 작성 if ($this->project_m->qna_write($model_data)) { redirect('/project/lists/'.$this->uri->segment(3,0)); } } } /** * QNA 취소 */ public function cancel(){ if($this->uri->segment(3,0) != 'qna'){ alert('비정상적인 접근입니다.'); } # 인증 되어 있지 않을 경우 목록으로 리디렉션 if ($this->session->userdata ( 'logged_in' ) == FALSE) { alert('회원만 이용이 가능합니다.' ,'/member/login'); } #유저 정보 조회 $memseq = $this->session->userdata('memseq'); $model_data ['seq'] = $memseq; $member_data = $this->member_m->get_member_info($model_data); // 유저 정보와 작성자가 같으면 삭제 가능 if ($member_data['MEMBERSEQ'] != $memseq) { alert('작성자만 취소가 가능 합니다.'); } # 게시물 히든처리 $delmsg = $member_data['NAME'].'('.$member_data['MEMID'].') 님이 삭제 하였습니다.'; $model_data = array ( 'QNASEQ' => $this->input->post('seq', TRUE), 'DELYN' => '1', 'DELDT' => date('Y-m-d H:i:s'), 'DELID' => $member_data['MEMID'], 'DELRSN' => $delmsg ); //print_r($model_data); if ($this->project_m->qna_update($model_data)) { redirect('/project/lists/' . $this->uri->segment(3,0) . '/'); } } } /* End of file */ url은 도메인/컨트롤파일이름/lists/카테고리 순으로 들어가면 500에러가 뜹니다.. 지금 현재의 페이지 모습은 아래와 같습니다.. 선배님들의 따뜻한 조언좀 부탁드리겠습니다.. 어디가 문제인지...ㅠㅠ
|
|||
다음글 | 트렌젝션 질문드립니다2 (5) | ||
이전글 | Pagination 사용시 한글 깨지는 문제가 있어 문... (2) | ||
PureAni
/
2021/03/09 16:23:33 /
추천
0
lists 함수에 segment 를 넣어보시면 어떤가요?
|
테러보이
/
2021/03/09 16:33:04 /
추천
0
모드를 개발자 모드로 전환 하시고 에러를 확인 해보세요. 아니만 서버로그를 참조하세요. |