2011-04-07 67 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