Сейчас на сайте

Сейчас 5 гостей онлайн

Поиск

Tag Cloud

Twitter oAuth и Cod... Баллада о г... сихи лирик... стихи лири... Динамическ... Домашняя с... Использова... Использова... Отправка с... Создание ф... Шепот посл... TinyMCE в Rails стихи лири... Быстрая ра... Пишем собс... Создание с... Установка ... Ностальгия... Москва-Бел... стихи лири... Стихи про п... Крылья сти... Создание п... Простой по... Создание п... Одинокий в... Гражданин ... Несчастный... Сонет стих... Отрезок ст... Врагу не сд... Предчувств... Поиск в ст... Использова... Смерть дву... Использова... Как сделат... Как сделат... Облако тег... Южная сере... Программна... Codeigniter в де... CodeIgniter: фор... проверка в... стихи лири... WEB fetcher(scrappe... Простой Twitt... стихи твор... стихи лири... Проверка п... Создание и ... Побег с Сол... Отправка SMS... MS VSTO 2007/Infusio... Установка R... Fckeditor в при... Степные тр... моя любовь. К твоим оз... Сомкнуть л... чтоб отдат... вот – вот ... еще не расс... Снег тишина и лу... и мира пово... что мой пос... Лишь ты. И т... ты любима ты чиста. Экспорт да... Я пью до дн... что нам теп... -Наш первый... Социальные... Социальные... Спит в можж... Воздух про... Стены рожденные ... эхо умрет. Неотправле... стихи лири... Он порезал... Боясь шагн... не осталос... Услышать з... Программир...

Простой поисковый движок с помощью CodeIgniterа PDF Печать E-mail
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();?>

 

Это все, поисковый движок вполне работоспособен и функционален.


0
 

Добавить комментарий


Защитный код
Обновить