2013-04-15 3 views
1

У меня есть функция поиска для поиска заводов с использованием почтового индекса.Предотвращение переопределения запросов в функции контроллера - codeigniter

это основано на вопрос я спросил ранее сегодня: How to search with the value of a cookie in php - codeigniter У меня есть запрос, как это:

$ сопрягать = $ this-> вход-> пост ('Поиск');

это работает нормально, но когда я добавить:

$match = $this->input->cookie('postcode'); 

это перекрывая первый $ матч. как я могу использовать оба поисковых запроса без переопределения друг друга?

Как установить две переменные, такие как $ match1 и $ match2? когда я делаю то, что он ищет только на фабриках, а не на почтовом индексе. я просто хочу, чтобы иметь результаты почтового индекса и поиска заводов, которые имеют почтовый индекс, как 9101, например

Моя модель функция:

function get_search($match, $match2) 
    { 
     $this->db->like('Bedrijfsnaam', $match); 
     $this->db->or_like('Postcode', $match); 
     $this->db->or_like('Plaats', $match); 
     $this->db->or_like('Telefoonnummer', $match); 
     $this->db->or_like('Email', $match); 
     $this->db->or_like('Website', $match); 
     $this->db->or_like('Profiel', $match); 
     $this->db->or_like('Adres', $match); 
     $this->db->or_like('Categorie', $match); 

     $this->db->join('bedrijven', 'bedrijfcategorieen.idbedrijven = bedrijven.idbedrijven'); 
     $this->db->join('categorieen', 'bedrijfcategorieen.idcategorieen = categorieen.idcategorieen'); 
     $this->db->group_by('bedrijfcategorieen.idbedrijven', 'bedrijfcategorieen.idcategorieen'); 

     $query = $this->db->get('bedrijfcategorieen'); 

     return $query->result(); 
    } 

Моя функция контроллера:

function searchresults() 
    { 
     $this->breadcrumbs->page = array('link'=> base_url().'home/search' ,'title' => 'Bedrijven Zoeken');    
     $this->breadcrumbs->method = array('link'=> base_url().'home/searchresults' ,'title' => 'Zoekresultaten'); 
     $data['breadcrumbs'] = $this->breadcrumbs->get(); 
     $match = $this->input->post('search'); 
     $match2 = $this->input->cookie('postcode'); 
     $data['query'] = $this->bedrijven_model->get_search($match, $match2); 
     $this->load->view('views/header'); 
     $this->load->view('views/searchresults', $data); 
     $this->load->view('views/footer'); 
     $data['query'] = $this->bedrijven_model->bedrijven_tags(); 
    } 

Надежда кто-то знает, что я имею в виду.

ответ

1

Я исправил мою проблему так:

я удалил свою старую модель и вместо того, чтобы я сделал это так:

function get_search($match, $match2) 
{ 
    if (!isset($_COOKIE['cookie'])) { 

     $query = "SELECT * FROM (`bedrijfcategorieen`) 
     JOIN `bedrijven` ON `bedrijfcategorieen`.`idbedrijven` = `bedrijven`.`idbedrijven` 
     JOIN `categorieen` ON `bedrijfcategorieen`.`idcategorieen` = `categorieen`.`idcategorieen` 
     WHERE (`Bedrijfsnaam` LIKE '%".$this->input->post('search')."%' 
     OR `Plaats` LIKE '%".$this->input->post('search')."%' 
     OR `Telefoonnummer` LIKE '%".$this->input->post('search')."%' 
     OR `Email` LIKE '%".$this->input->post('search')."%' 
     OR `Website` LIKE '%".$this->input->post('search')."%' 
     OR `Profiel` LIKE '%".$this->input->post('search')."%' 
     OR `Adres` LIKE '%".$this->input->post('search')."%' 
     OR `Categorie` LIKE '%".$this->input->post('search')."%') 
     AND (Postcode LIKE '%".$this->input->post('cookie')."%') 

     GROUP BY `bedrijfcategorieen`.`idbedrijven`"; 
     $result = $this->db->query($query); 

     return $result->result(); 

    } 

таким образом он ищет двух вещей. почтовый индекс, который находится в таблице фабрик и установленном почтовом cookie.

Мой контроллер:

function search() 
    { 
     $this->breadcrumbs->page = array('link'=> base_url().'home/search' ,'title' => 'Bedrijven Zoeken'); 
     $data['breadcrumbs'] = $this->breadcrumbs->get(); 
     $this->load->view('views/header'); 
     $this->load->view('views/search', $data); 
     $this->load->view('views/footer'); 
    } 

    function searchresults() 
    { 
     $this->breadcrumbs->page = array('link'=> base_url().'home/search' ,'title' => 'Bedrijven Zoeken');    
     $this->breadcrumbs->method = array('link'=> base_url().'home/searchresults' ,'title' => 'Zoekresultaten'); 
     $data['breadcrumbs'] = $this->breadcrumbs->get(); 
     $match = $this->input->post('search'); 
     if(strlen($this->input->post('cookie')) > 0){ $match2 = $this->input->post('cookie'); } else{ $match2 = '9101'; } 
     $data['query'] = $this->bedrijven_model->get_search($match, $match2); 
     $this->load->view('views/header'); 
     $this->load->view('views/searchresults', $data); 
     $this->load->view('views/footer'); 
     $data['query'] = $this->bedrijven_model->bedrijven_tags(); 
    } 

Мои взгляды:

Поиск:

<div style="clear: both; margin-top: 10px;"></div> 
<div class="path"><?php echo $breadcrumbs ?></div> 
<div id="bigcontent"> 
<h1>Bedrijven zoeken</h1> 
<hr> 
<br/> 
<br /> 
<p>Voer een zoekterm en postcode in om bedrijven te zoeken.</p> 
<br/> 
<form name="input" action="searchresults" method="post"> 
<input type="search" onchange="validate()" placeholder="Zoeken..." name="search" size="70"> 
<input type="search" onchange="validate()" required="true" size="14" placeholder="Postcode..." name="cookie" value="<?= $this->input->cookie('postcode', TRUE); ?>" > 

<input type="submit" value="Zoeken"> 



</form> 

<br /><br /> 

<form method="link" action="<?= base_url('bedrijven/all')?>"> 
<input type="submit" value="Alle bedrijven"> 
</form> 

</div> 

SearchResults:

<div style="clear: both; margin-top: 10px;"></div> 
<div class="path"><?php echo $breadcrumbs ?></div> 
<div id="bigcontent"> 
<h1>Bedrijven gevonden: <?= count($query); ?></h1> 
<?= br(1); ?> 
<h2>Bedrijf:</h2> 
<?= br(1); ?> 
<hr/> 
<?php foreach($query as $item):?> 
    <a href="<?php echo base_url()?>bedrijven/<?= $item->idbedrijven?>"><h3><?= $item->Bedrijfsnaam ?></h3></a> 
    <p><b>Categorie:</b> <?= $item->Categorie ?></p> 
    <p><small><?php echo $item->Profiel ?></p> 
    <p><b><?php echo $item->Email ?></b></p> 
    <p><b>Postcode:</b> <?php echo $item->Postcode ?></p> 
    <p><b>Tags:</b></p> 
    </small> 
    <hr/> 
<?php endforeach;?> 
<br /> 
<<<a href="<?php echo base_url() ?>">Terug</a> 
</div> 
0

Почему бы вам не использовать две разные переменные, такие как $ match1 и $ match2.

+0

Я пробовал, но это не сработало. чем это вообще не работает. –

+0

второй запрос по-прежнему переопределяет первый. даже когда я делаю \t \t \t $ match = $ this-> input-> post ('search'); \t \t \t $ match2 = $ this-> input-> cookie ('почтовый индекс'); \t \t \t $ data ['query'] = $ this-> bedrijven_model-> get_search ($ match, $ match2); –

+0

Вы говорите, что если вы используете две разные переменные, чем ни одна из переменных не получает ваши желаемые значения? –

Смежные вопросы