Введение в программирование на PHP5


Программирование поиска по ключевым словам


Поиск по ключевым словам действует почти таким же образом, как и поиск по категории. Основное различие состоит в способе извлечения записей о продуктах из таблицы Products. Первая часть сценария будет идентичной, за исключением вывода значения Criterion, переданного в строке запроса, а не значения Category.

<% If Criterion <> "" Then %> <span class="head3">Search</span>results for criterion <span class="head3">echo $Criterion</span>: <br> <br> <table border="0" cellpadding="3"> <tr> <th>Item Number</th> <th>Item Title</th> <th>Item Price</th> </tr>

Следующий листинг кода показывает процедуру поиска всех продуктов, содержащих значение в одном из своих полей, которое совпадает со значением Criterion, переданным на страницу из меню поиска.

Пример I.8.

(html, txt)

Как можно видеть, единственное реальное различие в двух сценариях состоит в том, что поиск по ключевым словам использует более сложную команду SQL SELECT для поиска подходящих продуктов:

$sql = "SELECT ItemNumber,ItemTitle,ItemPrice FROM Products WHERE"; $sql = $sql . " ItemNumber LIKE '%" . $Criterion . "%'"; $sql = $sql . " OR ItemType LIKE '%" . $Criterion . "%'"; $sql = $sql . " OR ItemProducer LIKE '%" . $Criterion . "%'"; $sql = $sql . " OR ItemTitle LIKE '%" . $Criterion . "%'"; $sql = $sql . " OR ItemDescription LIKE '%" . $Criterion . "%'"; $sql = $sql . " ORDER BY ItemNumber";

Так как получается очень длинный оператор SELECT, то он составлен из отдельных частей. Каждая последующая часть строки поиска присоединяется в конце предшествующей строки для создания всего оператора SELECT в переменной $sql.

Как и раньше, извлекаются только поля ItemNumber, ItemTitle, и ItemPrice. Сам поиск совпадения со значением Criterion происходит по пяти полям записей. Строка критерия может присутствовать в любом месте поля, так как для поиска используется оператор LIKE.

Поэтому если происходит совпадение с частью содержимого полей ItemNumber, ItemType, ItemProducer, ItemTitle, или ItemDescription, то эта запись выбирается.

После извлечения множества записей отдельные поля выводятся как строки таблицы, точно так же, как для поиска по категории. Из этих строк также сделаны ссылки, чтобы передать URL на страницу detail.php, добавляя строку запроса — она содержит ItemNumber вместе со значением Criterion, использование которого будет рассмотрено при обсуждении страницы detail.php.

Давайте теперь посмотрим на законченную страницу search.php.

Пример I.9.

(html, txt)




Начало  Назад  Вперед



Книжный магазин