PHP CodeIgniter参数查询

时间:2011-04-07 01:04:01

标签: php codeigniter model

我想知道如何将参数(Get)传递给我的模型以在我的数据库中搜索并返回结果?

我为数据库中的所有products创建了一个Research函数

这是我的代码:

控制器:

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';      

感谢所有

2 个答案:

答案 0 :(得分:0)

在codeigniter中,参数通常在url段中传递,使得url看起来更好。

网址看起来像example.org/recherche2/KEYWORD。这种技术有一些缺点,因为并不是所有字符都在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;
}

顺便说一下,你用什么理由使用帖子?

答案 1 :(得分:0)

您需要在application/config/config.php

中启用查询字符串
$config['enable_query_strings'] = TRUE;

但是你现在不需要它。你应该把它作为一个URL段传递。

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>';
}