RkBlog

Hardware, programming and astronomy tutorials and reviews.

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ę:
<?php
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.
RkBlog

Kurs Code Igniter, 14 July 2008, Piotr Maliński

Comment article