CI 묻고 답하기

제목 controller에서 view로 넘겨준 값을 화면에 출력하지 못하고 있습니다.
글쓴이 혀늬 작성시각 2015/12/11 09:58:35
댓글 : 9 추천 : 0 스크랩 : 0 조회수 : 22704   RSS

게시판을 만들고 있는데 model에서 controller로 보내는 것 까지는 됐는데,

controller에서 view로 넘겨 주어서 결과를 찍으면 에러가 납니다.

 

controller에서 print_r로 찍으면

Array ( [list] => Array ( [0] => Array ( [BNO] => 1 [BNAME] => 박재현 [TITLE] => php 게시판 테스트 [CONTENT] => 테스트입니다. [REGDT] => 15/12/08 [CNT] => 0 ) [1] => Array ( [BNO] => 2 [BNAME] => 재현박 [TITLE] => 불러와라 [CONTENT] => 불러와라 좋은말 할때 [REGDT] => 15/12/10 [CNT] => 0 ) [2] => Array ( [BNO] => 3 [BNAME] => 현재박 [TITLE] => 테스트 [CONTENT] => insert [REGDT] => 15/12/10 [CNT] => 0 ) ) )

이런 형태로 출력이 됩니다.

 

제 생각에서 배열에서 구분을 지어주는 부분이 없어서 그런거 같은데...

여기 저기 찾아봐도 넘기는 값을 view에서 처럼 찍으면 된다고 그러더라고요 ㅠㅠ

뷰에서 확인하면

A PHP Error was encountered

Severity: Notice

Message: Undefined index: bno

Filename: board/boardList.php

Line Number: 19

이런 에러가 쭈욱 뜹니다.

 

view에서 데이터를 게시판 리스트 형태로 찍고 싶은데 도와주세요 ㅠㅠ

 

아래는 제가 만든 코드 입니다.

참고로 db는 oracle쓰고 있습니다.

 

board_model.php

//생성자        

public function __construct() {

            parent::__construct();        

}

//전체 게시물

        public function selectAll() {

          $sql = "select * from board";

          return $this->db->query($sql)->result_array();

}

 

board.php(controller입니다.)

                // 생성자

        public function __construct() {

            parent::__construct();

            $this->load->helper('url');

            $this->load->database();

        }

                // 티폴트 호출자

        public function index() {

            echo "Hello World";

        }

                // 리스트

        public function lists() {

          $this->load->model('board_model');

          $data['list'] = $this->board_model->selectAll();                                               //print_r($data);

          $this->load->view('board/boardList', $data);

        }

 

boardList.php

<? foreach ($list as $row) : ?>

    <tr>

            <td>

              <?php echo "aaaa";?>

              <?echo $row['bno'];?>

            </td>

            <td>

                <a href="/board/boardView?bno=<?=$row['bno']?>">

                 <?=$row['title']?>

                 </a>

             </td>

            <td><?=$row['bname']?></td>

            <td><?=$row['regdt']?></td>

            <td><?=$row['cnt']?></td>

        </tr>

    <? endforeach; ?>

 

 다음글 PHP Parse error 해결 문의 드립니다. (2)
 이전글 CI에 기본파일에 보면 php 종료태그인 ?&g... (4)

댓글

문군 / 2015/12/11 10:26:49 / 추천 0

<

<?php
/*foreach 사용법이 이런 경우가 있나요?*/
foreach($list as $row){
echo $listitem['bno'];
}
?>

<?php
/*foreach 이렇게 사용하셔야 하는거 아닌가요?*/
foreach($list as $row){
echo $row['bno'];
}
?>

 $listitem['bno']

혀늬 / 2015/12/11 10:32:44 / 추천 0

//문군

 

제가 테스트 하던거를 올렸었네요.. ㅠㅠ  다시 view쪽 올렸습니다.

kaido / 2015/12/11 10:43:47 / 추천 0
<?
//다차원 배열일 경우
foreach($list as $key => $val){
echo $val['bno'];
}
?>

<?
//1차원 배열일 경우
foreach($list as  $val){
echo $val['bno'];
}
?>

 

문군 / 2015/12/11 12:15:57 / 추천 0
<?php
/*그럼 이렇게 해보세요.*/
foreach($list as $row){
echo $row->BNO;
echo $row->BNAME;
echo $row->TITLE;
echo $row->CONTENT;
echo $row->REGDT;
echo $row->CNT;
}
?>
혀늬 / 2015/12/11 12:18:46 / 추천 0

foreach($data as $key => $row) {
            foreach($row as $item => $items) { 
             //echo "





";
              //print_r($items);
              foreach($items as $rows) {
                echo "





"; 
               print_r($rows);
              }
            }
            //print_r($row);
          }

kaido님 말처럼 여러 번을 해서 하나씩 풀어서 프린트가 됐는데...

http://sample.cikorea.net/mvc_sample/basic_sample

 

참고해서 제 방식 대로 만든건데 model쪽에서 query를 처리 할 때가 문제 인가요??ㅠㅠ

 

테스트 한 부분은 controller입니다.

문군 / 2015/12/11 12:19:23 / 추천 0
<?php
/* model쪽은 
이렇게 구성하시는 것으로 추천 드립니다.
*/
  $sql = "SELECT * FROM ".$table." ".$sword." AND board_pid = '0' ORDER BY board_id DESC".$limit_query;
     $query = $this->db->query($sql);

  if ( $type == 'count' )
      {
       //리스트를 반환하는 것이 아니라 전체 게시물의 갯수를 반환
      $result = $query->num_rows();

      //$this->db->count_all($table);
      }
      else
      {
       //게시물 리스트 반환
      $result = $query->result();
      }
return $result;
?>

 

kaido / 2015/12/11 13:30:10 / 추천 0

흠. 혀늬님이 아직 foreach 와 view 넘겨주는 부분에 대해서 아직 개념이 안 서서 나오는것 같습니다.

저도 그랬거든요.

 

3차원 이상에서 foreach 방법은 간단합니다.

 

<?
// 가령 데이터가
// $list['test_data'][0]['brn'] = 'string...';  이렇게 들어가 있다면..
foreach($list['test_data'] as $key => $val){
echo $val['brn'];
}
?>

 

 

 

혀늬 / 2015/12/11 14:22:49 / 추천 0

//kaido

 

제가 php를 시작한지 얼마 안되서...

foreach($list['test_data'] as $key => $val) 여기 구문에서 

['test_data'] 이부분이 의미하는 건 무엇 인가요??

kaido / 2015/12/11 17:44:37 / 추천 0

음... 일단  foreach 사용 법부터 설명 드리겠습니다.

 

$list['name']; 

$list['tel'];

foreach($list as $val) echo $val['.....'];

이렇게 하면   $list 1차원 배열에 name 과 tel 들이 출력 될것입니다.

 

$list[0]['name']; 

$list[1]['name']; 

foreach($list as $key => $val) 

echo $key."_".$val; //결과는 0 번째 name 배열 값과 1번째 name 배열 값이 출력 됩니다.

 

$list['data'][0]['name']; 

foreach($list['data'] as $key => $val) 

echo $key."_".$val; //결과는 0 번째 name 배열 값과 1번째 name 배열 값이 출력 됩니다.

 

이렇게 선언하면 $list 의 data 배열안에 foreach 를 돌라는 의미가 됩니다.

 

이제 정리 좀 되셨나요?