2012-06-22 34 views
0

我遇到了一些難以解決的問題。基本上我會搜索一個房間,我會顯示一個符合標準的房間列表(包括分頁)。現在,當我嘗試呼叫房間的圖像時,問題就出現了。第一個圖像將顯示,但不會休息,我得到的錯誤:從視圖中調用函數解決不可預見的視圖

A PHP Error was encountered Severity: Notice

Message: Undefined offset: 0

Filename: views/search_view.php

Line Number: 27

A PHP Error was encountered Severity: Notice

Message: Trying to get property of non-object

Filename: views/search_view.php

Line Number: 27

這是我迄今所做

我的模型:

function get_room_image($rid) 
{ 
    $q = $this->db 
     ->where('room_id',$rid) 
     ->limit(1) 
     ->get('room_image'); 

    return $q->result(); 

} 

function search_rooms() 
{ 
    $q = $this->db 
     ->where('features', $this->input->post('features')) 
     ->get('rooms'); 

    $room['results'] = $q->result(); 

    return $room['results']; 
} 

我的控制器:

function search() 
{ 
    $data['main_content'] = 'search_view'; 
    $data['page_title'] = 'Search'; 

    $data['results'] = $this->site_model->search_rooms(); 

    $this->load->view('includes/template',$data); 
} 

我的看法:

...  
<?php foreach ($results['results'] as $room) { 

    $room_images = $this->site_model->get_room_image($room->id); ?> 
     <div class="col2 bot"> 

      <div class="col_head"></div> 
       <div class="col_info"> 
       <table border="0" cellpadding="5" cellspacing="5"> 
       <tr><td> 
       <img src="<?php echo base_url() . 'room/' . $room_images[0]->image_name; ?>" border="0" class="imgbox" /> 
       </td> 
... 

線27實際上是與它的img標籤行

當我的要求,我得到以下一的var_dump:

array(1) { 
    [0]=> 
    object(stdClass)#27 (3) { 
    ["id"]=> 
    string(1) "1" 
    ["room_id"]=> 
    string(1) "1" 
    ["image_name"]=> 
    string(36) "1614d828817ac5b396660621048b167a.jpg" 
    } 
} 

array(0) {} 
array(0) {} 
array(0) {} 
... 

這樣看來,它不執行get_room_image每次迭代的功能都正確

任何建議是最受歡迎的。

Regards,

+1

嘗試在該行上執行var_dump($ room_images) - 查看實際存在的內容。我猜[0]的索引是錯誤的一些變量 – Laurence

回答

0

問題就解決了 「;」到我的數據庫查詢字符串內的一行

3

首先,我不認爲你應該從視圖內調用模型。您應該從控制器中調用模型並將其傳遞給您的視圖。另一個SO帖子談到:https://stackoverflow.com/a/1733309/1260593

你應該嘗試在模型中的表上執行一個連接。

型號:

function search_rooms() 
{ 
$q = $this->db 
->select('*') 
->from('rooms') 
->where('features', $this->input->post('features')) 
->join('room_image', 'rooms.id = room_image.room_id'); 

return $q; 
} 

控制器:

$data['main_content'] = 'search_view'; 
$data['page_title'] = 'Search'; 

$data['results'] = $this->site_model->search_rooms(); 

$this->load->view('includes/template',$data); 

觀點:由於我忘了補充

<?php foreach ($results->result() as $room) { 

    $image = $room->image_name; 
    <div class="col2 bot"> 

     <div class="col_head"></div> 
      <div class="col_info"> 
      <table border="0" cellpadding="5" cellspacing="5"> 
      <tr><td> 
      <img src="<?php echo base_url() . 'room/' . $image; ?>" border="0" class="imgbox" /> 
      </td> 
} 
+0

時,打開$ room_images [0] - > image_name到$ room_images-> image_name我得到的錯誤:消息:試圖獲得非對象的屬性 –

+1

您是否嘗試加入查詢,或者您是否可以通過添加「;」來修復您的代碼? – ekims