2012-08-27 101 views
0

我得到的結果變量在我的Ajaxcont控制器中未定義。我不確定如何將$結果從模型傳遞迴控制器。我只想讓我的$ results數組保存查詢檢索到的所有值。我究竟做錯了什麼?如何將模型中的變量傳遞給控制器​​


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

class Ajaxcont extends CI_Controller 
{ 
    function __construct() 
    { 
     parent::__construct(); 
     $this->load->model("ajax_model"); 
    } 

    function index() 
    { 
     $search = $this->input->post('search', TRUE); 
     $like_search= '%' .$this->db->escape_like_str($search) . '%'; 
     $query= $this->ajax_model->search_course($like_search); 

     if ($query) 
     { 
      foreach($query->result() as $row) 
      { 

       //$course_name_highlighted = str_ireplace($search, '<b>' .$search . '</b>' , $row->full_name); 

       $start = stripos($row-> Course_Name, $search); 
       $length= strlen($search); 
       $new_search = substr($row->Course_Name, $start, $length); 
       $course_name_highlighted = str_ireplace($new_search, '<b>' .$new_search . '</b>' , $row->Course_Name); 
       $results[]= array(
        'Course_Name' => $row->Course_Name, 
        'FirstName' => $row->FirstName, 
        'LastName' => $row->LastName, 
        'COURSE_ID' => $row->COURSE_ID, 
        'course_name_highlighted' => $course_name_highlighted 
        ); 
      } 
     } 

     if ($this->input-> is_ajax_request()) 
     { 
      $this->output->set_header("Cache-Control: no-cache, must-revalidate"); 
      $this->output->set_header("Expires:Mon, 4 Apr 1994 04:44:44 GMT"); 
      $this->output->set_header("Content-type:application/json"); 

      echo json_encode($results); 
     } 
     else 
     { 
      $data['results'] = $results; 
      $this->load->view('ajax_search', $data); 
     } 
    } 
} 

而且Axaj_model代碼:

<?php 

Class Ajax_model extends CI_Model 
{ 

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

    function search_course($like_search) 
    { 
     $this->db->select('FirstName, LastName, COURSE_ID, Course_Name, Semester,Time,Book, SECTION_ID'); 
     $this->db->from('Section'); 
     $this->db->join('faculty', 'faculty.FACULTY_ID = section.FACULTY_ID'); 
     $this->db->like('Course_Name', $like_search); 
     $this->db->order_by('Course_Name'); 
     $query = $this -> db->get(); 

     //If it is all correct 
     $results=array(); 

     if($query -> num_rows() > 0) 
     { 
      return $query->result(); 
     } 
     else 
     { 
      return false; 
     } 
    } 
} 
+0

您的結果數組應該的「如果」塊,現在則是在點不確定,你附和它 – Asciiom

+0

在外面聲明沒有查詢結果時你會得到這個結果嗎? –

+0

你能告訴我們在你的代碼中你得到了「變量是未定義的」通知嗎? –

回答

1

模型返回一個多維數組。所以你應該使用實例來檢索數據。

模型

$results=array(); // you don't even have to declare it 

if($query -> num_rows() > 0) 
{ 

$result= $query->result(); 
return $result; 

} 

else 
{ 
    return false; 
} 

控制器

function index() 

{ 

    $search = $this->input->post('search', TRUE); 
    $like_search= '%' .$this->db->escape_like_str($search) . '%'; 
    $query['result']= $this->ajax_model->search_course($like_search); 

if ($query) 
{ 
    foreach($query['result'] as $row) 
    { 
    //stuff here 
    } 
} 
+0

編輯一個小錯誤。現在檢查代碼並報告輸出 –

+0

現在我得到消息:爲foreach提供的無效參數() – Undermine2k

+0

嘗試'foreach($ result as $ row)' –

1

您的結果應該陣列之外被宣佈爲「如果」塊,現在則是在您迴應的地步不確定。加上這個:

$results = array(); 

在你的函數'index'的開頭。

您應該variable scope

+0

是的,你是正確的我忽略了這一行,但它仍然不會返回任何數據。我認爲我沒有正確迴應我的模型的數據,我如何調試並查看我返回的內容? – Undermine2k

+0

@ Undermine2k無需聲明。您不會檢索結果right.As是一個多維數組,您必須使用實例 –

0

閱讀上,你應該宣佈結果的指數函數的頂部。

function index(){ 
    $result = array(); 
} 
相關問題