Strona Główna > Kurs Code Igniter > Prosty Blog - Wyszukiwarka Newsów


W tym warsztacie zajmiemy się stworzeniem prostej wyszukiwarki dla newsów. Do zrobienia będzie:
- mini formularz na wpisanie frazy
- metoda kontrolera pobierająca frazę i wyświetlająca wyniki

W widoku index.php nad główną treścią dodałem prosty formularz:
<center><?php echo form_open('blog/search'); ?>
<?php echo form_input(array('name' => 'fraza', 'size' => 20)); ?>
<?php echo form_submit('submit', 'Szukaj'); ?>
<?php echo form_close(); ?></center>

<?PHP echo $content; ?>
A w kontrolerze Blog dodałem metodę:
function search()
     {
     $fraza = $this->input->post('fraza');
     IF(isset($fraza) and strlen($fraza) > 3)
          {
          $this->load->model('Comments');
          $query = $this->db->query("SELECT * FROM ".$this->db->dbprefix."news WHERE news_text LIKE '%".$fraza."%' OR news_title LIKE '%".$fraza."%'");
          $content = '';
          if ($query->num_rows() > 0)
               {
               foreach($query->result() as $item)
                    {
                    $q = $this->Comments->are_comments_for_news($item->news_id)->result_array();
                    $item->comments = $q[0]['comnumber'];
                    $content .= $this->load->view('news_loop', $item, True);
                    }
               }
          else
               {
               $content = '<h1>Brak trafień</h1>';
               }
          $this->response['content'] = $content;
          $this->load->view('index', $this->response);
          }
     }
Metoda bardzo podobna jest do metody index, różni się zapytaniem pobierającym newsy do wyświetlenia
SELECT * FROM ".$this->db->dbprefix."news WHERE news_text LIKE '%".$fraza."%' OR news_title LIKE '%".$fraza."%'
Zapytanie pobierze te newsy, w których treści lub tytule znajduje się podana fraza. Dla postgresql należy zastąpić LIKE przez ILIKE by wyszukiwanie nie zwracało na wielkość liter.
Komponent gotowy.
Poleć artykuł innym : Wykop.pl | OSnews.pl | del.icio.us