2012-04-28 39 views
0

嗨我試圖創建一個功能,搜索我的上傳模型,並顯示該表中的信息。CakePHP 2.0搜索數據庫錯誤

Notice (8): Undefined variable: uploads [APP/View/Uploads/search.ctp, line 28] 
Warning (2): Invalid argument supplied for foreach() [APP/View/Uploads/search.ctp, line 28] 

之前,我甚至允許搜索我得到這個錯誤,

這是我search.ctp

 <?php $uploads = $this->requestAction('uploads/search'); 
     ?> 

    <div id="search"> 
    <?php echo $this->Form->create('Upload',array('action'=>'search'));?> 
    <fieldset> 
    <legend><?php __('Upload Search');?></legend> 
    <?php 
    echo $this->Form->input('searchupload', array('label' => false, 'class'=>'searchinput')); 

    $options = array(
        'label' => '', 
        'value' => 'Search', 
        'class' => 'searchbutton' 
          ); 
    echo $this->Form->end($options); 


?> 
</fieldset> 



    </div> 
    <div id="contentbox"> 
<table> 
    <?php foreach($uploads as $upload) : ?> 
     <tr> 
      <td><?php echo $upload['Upload']['name'] ?></td> 
      <td><?php echo $upload['Upload']['eventname'] ?></td> 
     </tr> 
    <?php endforeach; ?> 
</table> 
    </div> 

,這是在上傳控制器的功能:

function search() { 

     if (!empty($this->data)) { 
    $searchstr = $this->data['Upload']['search']; 
    $this->set('searchstring', $this->data['Upload']['search']); 
    $conditions = array(
     'conditions' => array(
     'or' => array(
      "Upload.name LIKE" => "%$searchstr%", 
      "Upload.eventname LIKE" => "%$searchstr%" 
     ) 
     ) 
    ); 
    $this->set('uploads', $this->Upload->find('all', $conditions)); 
    } 
     } 

任何幫助將不勝感激!

在此先感謝

+0

我發現的錯誤之一, '回聲$這個 - >形式 - >輸入(」沒有搜索匹配searchupload',array('label'=> false,'class'=>'searchinput'));'應該搜索而不是searchupload,但是我的foreach會一直顯示錯誤信息直到搜索完成?有沒有辦法擺脫消息? – 001221 2012-04-28 18:32:34

回答

0
<?php if(!empty($uploads)) : ?> 
    <?php foreach($uploads as $upload) : ?> 
     <tr> 
      <td><?php echo $upload['Upload']['name'] ?></td> 
      <td><?php echo $upload['Upload']['eventname'] ?></td> 
     </tr> 
    <?php endforeach; ?> 
    <?php else : ?> 

<div> 
    No search matches found 
    </div> 

    <?php endif; ?> 

這樣可以保證在一個空集被發現,則發現被扔進網頁

0

爲什麼要從同一視圖運行兩次上載/搜索?

嘗試從您的視圖中刪除此:

<?php $uploads = $this->requestAction('uploads/search'); ?> 

它要求你與search.ctp呈現同樣的動作。

UPDATE:

如果你所得到的未定義的變量通知(即當在生產和調試通過的方式設置爲0,你不會看到),所有你需要做的是設置上傳變量在控制器(而不是視圖)中爲null。在運行搜索之前,請在控制器中執行:$this->set('uploads', array());,以便在視圖中定義變量。你不想用邏輯混亂視圖。

+0

我已經從代碼中刪除了這個,我遇到的問題是我在搜索欄下有一條foreach語句,一旦它執行了,它會在執行之前找到數據庫條目,但是它會引發此錯誤(2):提供給foreach()的無效參數[APP/View/Uploads/search.ctp](注意(8):未定義的變量:上傳[APP/View/Uploads/search.ctp,第24行] ,第24行]' 任何想法如何執行一個有條件的foreach也許? – 001221 2012-04-28 23:30:04