Сейчас на сайте
Сейчас 5 гостей онлайнПоиск
Tag Cloud
Twitter oAuth и Cod... Баллада о г... сихи лирик... стихи лири... Динамическ... Домашняя с... Использова... Использова... Отправка с... Создание ф... Шепот посл... TinyMCE в Rails стихи лири... Быстрая ра... Пишем собс... Создание с... Установка ... Ностальгия... Москва-Бел... стихи лири... Стихи про п... Крылья сти... Создание п... Простой по... Создание п... Одинокий в... Гражданин ... Несчастный... Сонет стих... Отрезок ст... Врагу не сд... Предчувств... Поиск в ст... Использова... Смерть дву... Использова... Как сделат... Как сделат... Облако тег... Южная сере... Программна... Codeigniter в де... CodeIgniter: фор... проверка в... стихи лири... WEB fetcher(scrappe... Простой Twitt... стихи твор... стихи лири... Проверка п... Создание и ... Побег с Сол... Отправка SMS... MS VSTO 2007/Infusio... Установка R... Fckeditor в при... Степные тр... моя любовь. К твоим оз... Сомкнуть л... чтоб отдат... вот – вот ... еще не расс... Снег тишина и лу... и мира пово... что мой пос... Лишь ты. И т... ты любима ты чиста. Экспорт да... Я пью до дн... что нам теп... -Наш первый... Социальные... Социальные... Спит в можж... Воздух про... Стены рожденные ... эхо умрет. Неотправле... стихи лири... Он порезал... Боясь шагн... не осталос... Услышать з... Программир...
| Простой поисковый движок с помощью CodeIgniterа |
|
|
|
| 22.10.2011 18:11 |
|
Реализация поиска в фреймворке CodeIgniter выполняется быстро и достаточно просто. Достаточно воспользоваться встроенными в сам фреймворк средствами. Итак, приступим. Предположим, что у нас нам нужно организовать поиск в таблице базы данных, содержащую статьи блога. Таблица будет иметь такую структуру: CREATE TABLE `artciles ` ( `id` int(11) NOT NULL DEFAULT '0', `title` varchar(255) DEFAULT NULL, `body` text, `created_at` datetime DEFAULT NULL, `updated_at` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Далее все описываем пошагово. 1. Создаем новый проект (скачиваем последнюю версию фреймворка CodeIgniterа и помещаем ее на наш локальный сервер) 2. Редактируем файлы настроек. В файле «application/config/config.php» прежде всего устанавливаем базовый URL проекта: $config['base_url'] = 'http://localhost/ci_search'; Затем редактируем файл настроек базы данных «application/config/database.php»,где устанавливаем текущие настройки соединения с базой данных и имя используемой базы: $db['default']['hostname'] = 'localhost'; $db['default']['username'] = 'mydbuser'; $db['default']['password'] = 'mydbpwd'; $db['default']['database'] = 'blog'; На конец, нужно прописать в файле «application/config/autoload.php» автоматическую загрузку библиотеки «database» и утилиты «url»: $autoload['libraries'] = array('database'); $autoload['helper'] = array('url','form'); 3. Создаем новый контроллер S_Engine (файл «application/controllers/c_engine.php»).В нем новый метод index, который будет загружать форму поиска:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class S_Engine extends CI_Controller {
function __construct() { parent::__construct(); }
public function index() { $this->load->view('s_from'); }
}
4. В этот же контроллер добавим новый метод search,который будет производить поиск: <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class S_Engine extends CI_Controller {
function __construct() { parent::__construct();
}
public function index() { $this->load->view('s_from'); }
public function search() { $data['page_title']="Search Engine"; $article_title = $this->input->post(‘title’); $this->load->view('search_results', $data); } }
5. Теперь создаем новую модель Db_Search (файл «/application/models/db_search.php» и в ней метод getResults, который будет возвращать результаты поиска: <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class DB_Search extends CI_Model {
function __construct() { parent::__construct(); } public function getResults($title,$body = TRUE) { $this->db->like('title',$title); $this->db->order_by('title'); $q = $this->db->get('articles'); if ($q->num_rows() >0 ){ $result = '<ul>'; foreach ($q->result() as $info) { if ($body) { $result .= '<li><i> Blog Article Title: </i> '.$info->title.'</br>'; $result .= '<i>Blog Article Body :</i> '.$info->body.'</li>'; } else { $result .= '<li><i> Blog Article Title: </i> '.$info->title.'</li>'; } }
$result .= '</ul>'; return $result; } else { return 'Nothing found, sorry'; } } }
6. Затем подключаем новую модель в контроллер и редактируем метод search() <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class S_Engine extends CI_Controller {
function __construct() { parent::__construct(); $this->load->model('db_search'); }
public function index() { $data['title']="Blog Article Search:"; $this->load->view('s_form', $data); } public function search() { $data['page_title']="Search Results:"; $title = $this->input->post('title'); $data['search_results'] =$this->db_search->getResults($title); $this->load->view('results', $data); } }
7. Теперь создадим новый файл типа view для формы поиска (файл «/application/views/s_form.php»): <?='<h3> Search:</h3>';?> <?=form_open('s_engine/search');?> <?php $search = array('name'=>'title','id'=>'title','value'=>'');?> <?=form_input($search);?> <input type=submit value='Search'/> </p> <?=form_close();?> И файл для отображения результатов поиска (файл «/application/views/results.php»): <h2><?= $page_title;?></h2> <div id="results"> <?= $search_results;?> </div>
8. После устанавливаем контроллер по умолчанию в файле роутера «/application/config/routes.php»: $route['default_controller'] = "s_engine"; 9. Вводим в форму данные и видим что, все работает. Теперь усовершенствуем механизм поиска. Установим проверку ввода данных в форму. Для этого подключим в метод <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class S_Engine extends CI_Controller {
function __construct() { parent::__construct(); $this->load->model('db_search'); }
public function index() {
$this->load->view('s_form');
}
public function search() { $this->load->library('form_validation'); $this->form_validation->set_rules('title', 'title','trim|required|min_length[6]|max_length[80]|xss_clean'); $data['page_title']="Search Results:"; $title = $this->input->post('title'); if($this->form_validation->run() == FALSE) { $this->load->view('s_form'); } else { $data['search_results'] =$this->db_search->getResults($title); $this->load->view('results', $data); } } }
Производиться проверка ввода данных, в том числе защита этих данных, а также устанавливается минимальная и максимальная длина введенной строки. Если условие не удовлетворительные, то отображается вновь форма поиска, с сообщением об ошибке. Если же все в порядке, то показываются результаты поиска. В форму нужно добавить строку для отображения сообщений об ошибках:
<?php echo validation_errors(); ?> <?=form_open('s_engine/search');?> <?php echo "Search:" ?> <?php $search = array('name'=>'title','id'=>'title','value'=>'');?> <?=form_input($search);?> <input type=submit value='Search'/> </p> <?=form_close();?>
Это все, поисковый движок вполне работоспособен и функционален. |


