개발 Q&A

제목 게시판 질문합니다!!!
카테고리 PHP
글쓴이 lsh955 작성시각 2017/03/19 16:28:56
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 12219   RSS

form 에서 제목, 작성자, 날짜, 내용을 작성한 후 view로 넘어가야 하는데, 

 

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: row

Filename: todo/view_v.php

Line Number: 33

Backtrace:

File: C:\xampp\htdocs\todo\application\views\todo\view_v.phpLine: 33Function: _error_handler

File: C:\xampp\htdocs\todo\application\controllers\main.phpLine: 37Function: view

File: C:\xampp\htdocs\todo\index.phpLine: 315Function: require_once

 

가 뜹니다.. 해결을 위한 자세한 설명 부탁드립니다....

 

 

 

---------------------------------- Controller ---------------------------------------------------------------------------------------

 

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

    class Main extends CI_Controller     {

      public function __construct()       {   

        parent::__construct();

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

       }

  /* 리스트 */     

   function lists() {

            $data['query'] = $this->todo_m->get_data();

            $this->load->view('todo/list_v', $data);      

         }

 /* 폼 */      

 function form() {

      $this->load->view('todo/write_v');

  }

    /* 뷰 */        

function view() {

   $this->db->insert('items', $_POST);

   $this->load->view('todo/view_v');

        }  

     }

 

 

 

 

---------------------------------- Model ---------------------------------------------------------------------------------------

 

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

    class Todo_m extends CI_Model {        

        function __construct()    {         

          parent::__construct();

            $this->load->database();

        }             

 

/* 리스트 */    

    function get_data() {        

       $sql = "SELECT * FROM items";      

       $result = $this->db->query($sql);            

       $data  =$result->result_array();

       return $data;

    }

/* 입력 */        

   function get_insert() {  

      $data = array('id' => $id, 'content' => $content, 'created_on' => $created_on, 'due_date' => $due_date, 'used' => $used);

      $result = $this->db->insert('items', $data);

      return $result;

   }

 

/* 뷰 */        

   function get_view($id) {                    

      $sql = "SELECT * FROM items WHERE id = '" . $id . "'";                 

      $query = $this->db->get('items');                 

      return $query;

        }        

    }

 

 

 

---------------------------------- view_v ---------------------------------------------------------------------------------------

view_v.html에서 데이터 출력부분을 아래와 같이 처리하였습니다...

 

 <? foreach ($query->result() as $row) ?>      

 <td colspan="1">                                

 <?php echo $row['id'];?>                          

 </td>                          

 <td colspan="1">            

 <?php echo $row['content'];?>      

 </td>  

 <td colspan="1">  

 <?php echo $row['created_on'];?>  

 </td>              

 <td colspan="1">

 <?php echo $row['due_date'];?>  

 </td> 

 <td colspan="1">    

 <?php echo $row['id'];?>  

 </td>            

 <? } ?>

 다음글 [DB 오라클] CLOB 타입 데이터 크기에 대해서 질... (3)
 이전글 간단한 게시판을 만들고 있는데, 도와주세요!! (2)

댓글

kaido / 2017/03/20 08:59:00 / 추천 0

우선 심호흡이 필요하실것 같습니다.

지금 부터 제가 비평을 늘어 놓을 것이거든요.

 

우선 CI 사용 방법을 전혀 이해 못하고 계신것으로 추정 됩니다.

기본 메뉴얼 부터 다시 시작 하셔야 합니다.

 

현재 모델에서 컨트롤러에게 값도 전달 안되었고 컨트롤러에서 뷰에게 값도 전달 안되었습니다.

 

 

아래를 순서대로 습득 하셔야 합니다.

 

1. 컨트롤러에서 뷰를 불러오는 방법.

2. 컨트롤러에서 뷰에게 데이터를 전달 하는 방법

3. 뷰에서 컨트롤러에 값을 [post, get] 전달 방법

4. 컨트롤러에서 모델 호출하고 값을 전달 하는 방법

5. 모델에서 컨트롤러에 값을 리턴 하는 방법.

 

상기에 5가지를 이해 하셔야만 합니다.

참고로

Message: Undefined variable: row

해당 메세지는 $row  이라는 변수가 없는데 호출 하고 있다는 에러 메세지 입니다.

$query->result() as $row 즉 이 값 자체가 없습니다.

lsh955 / 2017/03/20 22:33:14 / 추천 0

kaido // 답변 감사합니다.

Bill / 2017/04/21 19:01:36 / 추천 0

Message: Undefined variable: row

Filename: todo/view_v.php

Line Number: 33

우선은 view_v파일의 33번째 줄에 있는 $row변수에대해 확인해보세요.

정의되지 않은 변수를 사용했다고 에러를 보여주네요.

그리고 view_v의 foreach에서 $query->result()를 쓰셨는데,

반복문 안에서는 $row['id']식으로 쓰셨네요.

result()함수는 쿼리결과의 각 row를 object형으로 반환하기 때문에 $row->id 이런식으로 써줘야하지않을까요??

배열식으로 쓰려면 ->result_array()를 활용하시면 되겠네요..