2011-04-07 52 views
1

我想知道如何將參數(Get)傳遞給我的模型以在我的數據庫中進行搜索並返回結果?PHP CodeIgniter參數查詢

我做一個研究功能適用於所有的products在我的數據庫

這裏是我的代碼:

控制器:

function recherche2($search){ 
    $this->load->model('ordiDepotModele'); 
    $resultat = $this->ordiDepotModele->rechercher($search); 
    $i=0; 
    foreach ($resultat->result() as $row){ 
     $item = array(); 
     $item['num'] = $row->idProduit; 
     $item['nomProduit'] = $row->nomProduit; 
     $item['prix'] = $row->prixVente; 
     $listeitems[$i] = $item; 
     $i++; 
    } 
    $data['item'] = $listeitems; 
} 

型號:

function rechercher($search){ 
    $query = $this->db->query("SELECT * FROM produit WHERE nomProduit LIKE '%".$search."%'"); 

    return $query; 
} 

查看:

if(isset($item)){ 
    for($i = 0; $i<count($item);$i++){?>  
     <div class = "res_item"> 
      <div class = "res_img"> 
       <img src = "<?php echo $image; ?>/computer2.png"/> 
      </div> 
      <div class = "res_info"> 
       <div class "res_num"> 
        <label class = "titre_prod"> 
         Numéro : 
        </label> 
        <span class = "info_prod"> <?php echo $item[$i]['num']?> </span> 
       </div> 
       <div class "res_name"> 
        <label class = "titre_prod"> 
         Nom : 
        </label> 
        <span class = "info_prod"> <?php echo $item[$i]['nomProduit']?> </span> 
       </div> 
       <div class "res_prix"> 
        <label class = "titre_prod"> 
         Prix : 
        </label> 
        <span class = "info_prod"> <?php echo $item[$i]['prix']?> $ </span> 
       </div> 
       <div class "res_cat"> 
        <label class = "titre_prod"> 
         Catégorie : 
        </label> 
        <span class = "info_prod"> Test </span> 
       </div> 
      </div> 
     </div> 
<?php 
    } 
} 
else 
    echo 'Aucun résultat obtenu';  

感謝所有

+0

我輸入文本欄中的名稱是'search' – ThorDozer 2011-04-07 01:04:43

回答

0

您需要啓用查詢字符串在你application/config/config.php

$config['enable_query_strings'] = TRUE; 

,但你不需要它在這一點上。您應該將其作爲網址段傳遞。

function recherche2($keyword) { 
    $this->load->model('ordiDepotModele'); 
    $resultat = $this->ordiDepotModele->rechercher($keyword); 
    $data['nom'] = $keyword; 
... 

此外,我覺得你的問題是,你的價值傳遞給你的模型是這樣的:

$resultat = $this->ordiDepotModele->rechercher($data['nom']); 

它得到了「NOM」值從數組中的一個值。(假設你只有一個搜索框)

然後在警告你這樣做:

function rechercher($data){ 
    echo "<script>alert('".$data['nom']."');</script>"; 

這是閱讀值從關聯數組中取出,但此時$data不是數組,它是一個包含字符串的局部變量。 如果在評論確實

echo $data; 

//編輯 抱歉,我真的不能張貼格式化代碼,您可以查看它。 試試這個:

public function test() { 
    echo '['.$this->input->get('search').']'; 
    echo '<form method="GET">'; 
    echo '<input type="input" name="search" /><input type="submit" />'; 
    echo '</form>'; 
} 
+0

感謝您的建議 - >它現在可以工作(對於警報)另外,就像我說的,我想通過我的輸入類型文本在視圖和不是直接通過網址 – ThorDozer 2011-04-07 01:27:09

+0

我很困惑。如果你的表單方法設置爲'GET',那麼它會發布到'http:// yoursite/controller/method?search = {value}'。但是你必須啓用querystrings才能在控制器中讀取它。如果你不想使用URL ..那麼你必須做一個POST。 – icchanobot 2011-04-07 02:14:32

+0

我把querystrings作爲真 – ThorDozer 2011-04-07 02:23:18

0

CI中的參數往往通過在URL段,使得網址看起來要好很多。

該網址看起來像這樣example.org/recherche2/KEYWORD。這種技術有一些缺點,因爲url中不允許所有的字符。

您可以在配置文件中設置允許的字符。

在將要使用的URL部分基於這樣的情況下,控制器將是這樣的:

function recherche2($search) { 
    $data['nom'] = $search; 
    $this->load->model('ordiDepotModele'); 
    $resultat = $this->ordiDepotModele->rechercher($data['nom']); 
    $i=0; 
    foreach ($resultat->result() as $row){ 
     $item = array(); 
     $item['num'] = $row->idProduit; 
     $item['nomProduit'] = $row->nomProduit; 
     $item['prix'] = $row->prixVente; 
     $listeitems[$i] = $item; 
     $i++; 
    } 
    $data['item'] = $listeitems; 
} 

順便說一句,是什麼原因,你使用後?

+0

,因爲它是一個研究功能,使自然的輸入應該是在url,不是嗎? – ThorDozer 2011-04-07 01:12:33

+0

好的,這可能只是偏好:-)嘗試建議的解決方案。 – Ragnar123 2011-04-07 01:15:25

+0

我該如何設置我的$ search變量? – ThorDozer 2011-04-07 01:15:58