МЕДИЙНЫЕ ТЕХНОЛОГИИ

Пишем поиск по сайту на PHP и MySQL

Опубликовано: 23.10.2017


Сегодня мы напишем собственный поиск по сайту с использованием PHP и MySQL. Первым делом рассмотрим краткий алгоритм.

Пользователь выполняет POST запрос из формы поиска, этот запрос передается специальному скрипту-обработчику, который должен обработать поисковый запрос пользователя и возвратить результат.

Сначала скрипт должен обработать должным образом запрос пользователя для обеспечения безопасности, затем выполняется запрос к базе данных, который возвращает в ассоциативном массиве результаты, которые должны будут выводиться на экран. Итак, приступим.

Для начала создадим форму поиска на нужной нам странице:

<form name="search" method="post" action="search.php"> <input type="search" name="query" placeholder="Поиск"> <button type="submit">Найти</button> </form>

Эта форма и будет отправлять сам поисковый запрос скрипту search.php . Теперь создадим сам скрипт-обработчик.

<?php define('DB_HOST', 'localhost'); define('DB_USER', 'имя пользователя бд'); define('DB_PASS', 'пароль'); define('DB_NAME', 'имя базы данных'); if (!mysql_connect(DB_HOST, DB_USER, DB_PASS)) { exit('Cannot connect to server'); } if (!mysql_select_db(DB_NAME)) { exit('Cannot select database'); } mysql_query('SET NAMES utf8'); function search ($query) { $query = trim($query); $query = mysql_real_escape_string($query); $query = htmlspecialchars($query); if (!empty($query)) { if (strlen($query) < 3) { $text = '<p>Слишком короткий поисковый запрос.</p>'; } else if (strlen($query) > 128) { $text = '<p>Слишком длинный поисковый запрос.</p>'; } else { $q = "SELECT `page_id`, `title`, `desc`, `title_link`, `category`, `uniq_id` FROM `table_name` WHERE `text` LIKE '%$query%' OR `title` LIKE '%$query%' OR `meta_k` LIKE '%$query%' OR `meta_d` LIKE '%$query%'"; $result = mysql_query($q); if (mysql_affected_rows() > 0) { $row = mysql_fetch_assoc($result); $num = mysql_num_rows($result); $text = '<p>По запросу <b>'.$query.'</b> найдено совпадений: '.$num.'</p>'; do { // Делаем запрос, получающий ссылки на статьи $q1 = "SELECT `link` FROM `table_name` WHERE `uniq_id` = '$row[page_id]'"; $result1 = mysql_query($q1); if (mysql_affected_rows() > 0) { $row1 = mysql_fetch_assoc($result1); } $text .= '<p><a> href="'.$row1['link'].'/'.$row['category'].'/'.$row['uniq_id'].'" title="'.$row['title_link'].'">'.$row['title'].'</a></p> <p>'.$row['desc'].'</p>'; } while ($row = mysql_fetch_assoc($result)); } else { $text = '<p>По вашему запросу ничего не найдено.</p>'; } } } else { $text = '<p>Задан пустой поисковый запрос.</p>'; } return $text; } ?>

Естественно, данные таблиц БД нужно задать собственные. Рассмотрим, что делает эта функция. Первые 4 строчки обрабатывают запрос, чтобы он стал безопасным для базы. Такую обработку нужно делать обязательно, т.  к.  любая форма на Вашем сайте — это потенциальная уязвимость для злоумышленников.


Новости

Игры для локальной сети
Приветствую всех читателей. Большинство компьютерных игр (даже те, которые выходили лет 10 назад) поддерживают многопользовательскую игру: либо по интернету, либо по локальной сети. Это, конечно, хорошо,

Чат для локальной сети
Рано или поздно в любой корпоративной или крупной домашней сети встает вопрос о том, какие средства коммуникации использовать, как организовать эффективное оповещение всех сотрудников и доставку файлов.

Беспроводные технологии локальных сетей
В последние годы беспроводные локальные сети заняли существенную нишу на рынке локальных сетей. Все больше и больше организаций считают, что беспроводные сети являются необходимым дополнением традиционных

Подключения по локальной сети windows
Абонентский отдел: 8-495 518-90-37 или 8-926 605-28-69 будни 10:00-20:00, сб 10:00-17:00 ДЛЯ АБОНЕНТОВ Личный кабинет Сменить тариф Прислать квитанцию Написать директору Наш ИНН 5016013170 Оплатить

Игры на двоих по локальной сети
Какую игру выбрать? На самом деле, каждый по своему вкусу выбирает игрушку, в которую будет играть с большим удовольствием. Сегодня, к примеру, нет ни одного человека, который бы не был знаком с компьютерными

Создание локальной сети
Перед тем как вы научитесь самостоятельно конструировать и настраивать домашние локальные сети, давайте сразу ответим на самый главный вопрос: «А зачем они нужны?». Само по себе понятие локальной

Гонки по локальной сети
Не только мальчики нравятся машинки, девочки тоже не прочь прокатится на мощном автомобиле. Гонки стали первооткрывателями консольных игр. В данном жанре важен каждый момент, иначе нелепый поворот может

Сканер локальной сети
Когда сижу в кафехе или где-либо еще, где есть открытый либо закрытый, но с известным мне паролем wi-fi, часто от безделья пытаюсь попасть в админку роутера со стандартной учеткой admin/admin В среднем

Локальная сеть через интернет
Тут Вам надо поменять значение «my_server» на IP адрес вашего сервера. Скопируем файлы ca.crt, client1.crt, client1.key в папку C:Program FilesOpenVPNconfigkeys для пользователя «client1» и файлы ca.crt,

Что такое локальная сеть
Локальная сеть – это группа компьютеров, связанных вместе, расположенная в определенной ограниченной области, например, в здании. Размеры такой сети могут быть различными. Она может включать в свой

Популярные статьи