CI 묻고 답하기

제목 게시판 제작하다가 막혀서 문의 드립니다.
글쓴이 꾸숑 작성시각 2013/01/28 01:41:03
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 17000   RSS

제가 예전에 공부하면서 만든 게시판을 코드이그나이트로 다시 만들어 보고 있습니다.
현재 글쓰기, 리스트 를 만들었는데 글읽기에서 막혀서 몇칠째 매뉴얼만 째려 보고 있습니다.

또한 지금 제가 작업하는게 제대로 하는것인지도 확신이 없네요.. 여러가지 지적 부탁해요

아래 소스의 파란글로 제가 표시한 부분이 잘못된것 같은데 어떻게 해야 할까요?

공부하는 학생이니 수고스럽지만 도움 부탁드립니다.

controllers/board.php
<?
  class Board extends CI_Controller{

 function Board(){
    
   parent::__construct();

   $this->load->model('board_model');
   $this->load->helper('url');
   $this->load->helper('form');

 }

 function index(){

      //list
   $data['result'] = $this->board_model->select();
   $data['title']='게시판 리스트';
   $this->load->view('list_view',$data);
 }
    
     //write_form
 function write_form(){
   $data['title']='글쓰기';
   $this->load->view('write_form_view',$data);
 } 
   
 //insert
 function write(){
   $this->board_model->write();
   redirect('../board/');
 } 

    //read
 function read(){
   $this->board_model->read();
   $data['title']='글읽기';
   $this->load->view('read_view',$data);
 }
 
  }
?>

models/board_model.php
<?php
class board_model extends CI_Model {

     // 모델 생성자 호출
    function board_model(){
       parent::__construct();
    }
   
 //select->리스트
    function select(){
        $query = $this->db->get('board');
       
        if ($query->num_rows() > 0)
        {
            return $query->result();
        }else{
            show_error('Database is empty!');
        }
    }

 //select->글읽기
    function read(){
      $query = $this->db->query('SELECT * FROM board LIMIT 1');
      $row = $query->row();
    }

    //insert
 function write(){
   $this->db->insert('board',$_POST);
 } 
}
?>

views/list_view.php
<html>
 <head>
  <title> <?=$title?> </title>
 </head>
 <body>
  <table border=1 width=100%>
  <tr bgclor=#336699>
    <td align=center>번호</font>
    <td align=center>제목</font>
    <td align=center>글쓴이</font>
    <td align=center>날짜</font>
    <td align=center>조회수</font>
  <? foreach($result as $row){ ?>
    <tr>
  <td><?=$row->num?>
  <td><a href=board/read/><?=$row->subject?></a>
     <td><?=$row->name?>
  <td><?=$row->wdate?>
  <td><?=$row->view?>
  <? } ?>
    <tr>
  <td align=center colspan=5><?=anchor('../board/write_form/','글쓰기');?>
 </body>
</html>

views/read_view.php
<html>
 <head>
  <title> <?=$title?> </title>
 </head>
 <body>
<!--
      <?
      $query = $this->db->query('SELECT * FROM board');
      if ($query->num_rows() > 0){
        $row = $query->row();
      }
   ?>
-->
 <table border=1 width=100%>
    <tr>
      <td>제목
      <td colspan=3><?=$row->subject?>
    <tr>
      <td>이름
      <td><?=$row->name?>
      <td>E-mail
      <td><?=$row->email?>
   <tr>
     <td>날짜
     <td><?=$row->wdate?>
     <td>조회수
     <td><?=$row->view?>
 <tr>
      <td>내용
      <td colspan=3><textarea name="content" rows="10" cols="100"><?=$row->content?></textarea>
    <tr>
      <td colspan=4>
수정 | 삭제 | 이전
 
  </table>
  </center>
 </body>
</html>

 

태그 코드이그나이트,글읽기,게시판
 다음글 CodeIgniter Get 처리 (1)
 이전글 DB join 해서 불러오려고 합니다. (1)

댓글

꾸숑 / 2013/01/28 04:41:32 / 추천 0
세그먼트 의 개념을 모르니 링크를 걸수가 없군요^^

http://codeigniter-kr.org/tip/view/303/page/1 요기에 답이 있는것 같군요

하지만 제 실력에 봐도 잘 이해가 가지 않네요..

열공!!!!
변종원(웅파) / 2013/01/28 08:09:44 / 추천 0
컨트롤러에서 read 모델에서 값을 변수로 받아 뷰에 전달하는 과정이 없네요 list뷰에서 board/read/번호 형태로 만드시고 컨트롤러 리드함수에서 segment함수로 값을 가져오면 됩니다 세그먼트 함수는 매뉴얼 참고하세요
꾸숑 / 2013/01/28 14:37:35 / 추천 0

웅파//
아래와 같이 웅파님 말씀대로 나름대로 수정해 봤습니다.

일단 제가 원하는데로 해당 게시물을 읽어 오고 있습니다. 짝짝짝!!
뒤에 따라오시는 분들을 위해서 소스를 올립니다

웅파님 감사합니다.

2일정도 밤샘 했던것 같네요


list_view.php

<a href=board/read/num/<?=$row->num?>><?=$row->subject?></a>

controllers/board.php
  function read()
 {
  $num = $this->seg_value('num');

  $this->db->select("*");
  $this->db->where('num', $num);
  $query = $this->db->get('board');
  $row = $query->row_array();
    
  $data['title']='글읽기';
  $data['num'] = $num;
  $data['name'] = $row['name'];
  $data['subject'] = $row['subject'];
  $data['content'] = $row['content'];
  $data['view'] = $row['view'];
  $data['wdate'] = $row['wdate'];


  // 카운터
  $data2 = array(
  'view' => $row['view']+1
  );

  $this->db->where('num', $this->seg_value('num'));
  $this->db->update('board', $data2);

  $this->load->view('read_view',$data);
 }
/*
    //read
 function read(){
   $this->board_model->read();
   $data['title']='글읽기';
   $this->load->view('read_view',$data);
 }
*/ 

   /**
  *  세그먼트값 찾기 (id/test 일때 id=test)
  */ 
 function seg_value($key,$segment=NULL)
 {
  if($segment == NULL) {
   $segment = $this->uri->segment_array();
  }

  $this->seg_exp = array_values($segment);
  $arr_key = array_keys($this->seg_exp, $key);

  
  if($arr_key)
  {
   $arr_val = $arr_key[0] + 1;
  } else {
   $arr_val = 200;
  }

  if(count($this->seg_exp) > $arr_val)
  {
   return $this->seg_exp[$arr_val];
  }

 }

 /**
  *  세그먼트 위치값 (id/test 일때 test의 세그먼트 위치값)
  */ 
 function seg_index($key,$segment=NULL)
 {
  if($segment == NULL) {
   $segment = $this->uri->segment_array();
  }

  $this->seg_exp = array_values($segment);
  $arr_key = array_keys($this->seg_exp, $key);

  $tot =count($arr_key);

  if($tot > 0) {
   $arr_val = $arr_key[0] + 2;

   return $arr_val;
  } else {
   return "";
  }
 }

views/read_view.php
<html>
 <head>
  <title> <?=$title?> </title>
 </head>
 <body>

 <table border=1 width=100%>
    <tr>
      <td>제목
      <td colspan=3><?=@$subject?>
    <tr>
      <td>이름
      <td><?=@$name?>
      <td>E-mail
      <td><?=@$email?>
   <tr>
     <td>날짜
     <td><?=$wdate?>
     <td>조회수
     <td><?=$view?>
 <tr>
      <td>내용
      <td colspan=3><textarea name="content" rows="10" cols="100"><?=$content?></textarea>
    <tr>
      <td colspan=4>
수정 | 삭제 | 이전
 
  </table>
  </center>
 </body>
</html>

변종원(웅파) / 2013/01/28 17:43:58 / 추천 0
꾸숑/ 짝짝짝. 수고하셨습니다.