Запрос параметров PHP CodeIgniter - PullRequest
1 голос
/ 07 апреля 2011

Я хочу знать, как я могу передать параметр (Get) в мою модель для поиска в моей базе данных и возврата результатов?

Я выполняю функцию исследования для всех 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';      

Спасибо всем

Ответы [ 2 ]

0 голосов
/ 07 апреля 2011

Вам необходимо включить строки запросов в вашем 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>';
}
0 голосов
/ 07 апреля 2011

В параметрах codeigniter часто передаются в сегментах url, поэтому URL выглядят намного лучше.

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

Кстати, по какой причине вы не используете почту?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...