Привет, Гость!
home login register
[+] Купить Рекламу
Хостинг для тебя! Заходи не пожалеешь
Что мы делаем полезного на официальном сайте WAP-поддержки? Подробно ...
Вступайте в нашу группу ВКОНТАКТЕ
Поздравляем, новичка с ID:1000
Как самомусделать QR-код
IT новости: в Windows новая опасная уязвимость
Проблемы восприятия IT
Как подтвердить авторство в Google

Учебник PHP #11
<< 1 ... 3 4 5 6 7 ... 9 >>
поисковая система

Всем нам неоднократно приходилось пользоваться поисковыми системами в Web, но как устроены такие системы? Простейшая поисковая система принимает по крайней мере одно ключевое слово. Это слово включается в запрос SQL, который затем используется для выборки информации из базы данных. Результат поиска форматируется поисковой системой по тому или иному критерию (скажем, по категории или степени соответствия).

Поисковая система, приведенная в листинге 11.5, предназначена для поиска информации о клиентах. В форме пользователь вводит ключевое слово и выбирает категорию (имя, идентификатор или адрес электронной почты клиента), в которой будет производиться поиск. Если введенное пользователем имя, идентификатор или адрес существует, поисковая система извлекает из базы данных остальные атрибуты. Затем по идентификатору покупателя из таблицы orders выбирается

история заказов. Все заказы, оформленные этим клиентом, отображаются по убыванию объема. Если заданное ключевое слово не встречается в категории, указанной пользователем, поиск прекращается, программа выводит соответствующее сообщение и снова отображает форму.

Листинг 11.5. Простейшая поисковая система (searchengine.php)

<?

$form =

"<form action=\"Listing11-5.php\" method=\"post\">

<input type=\"hidden\" name=\"seenform\" value=\"y\">

Keyword:<br>

<input type=\"text\" name=\"keyword\" size=\"20\" maxlength=\"20\" value=\"\"><br>

Search Focus:<br>

<select name=\"category\">

<option value=\"\">Choose a category:

<option value-\"cust_id\">Customer ID

<option value=\"cust_name\">Customer Name

<option value=\"cust_eman\">Customer Email

</select><br>

<input type-\"submit\" value=\"search\"> ,

</form>

// Если форма еще не отображалась - отобразить ее

if (Sseenform != "у") :

print $form; else :

// Подключиться к серверу MySQL и выбрать базу данных

@mysql_connect("localhost", "web", "ffttss")

or die("Could not connect to MySQL server!");

@mysql_select_db("company")

or die("Could not select company database!");

// Построить и выполнить запрос

$query = "SELECT cust_id. cust_name, cust_email

FROM customers WHERE $category = '$keyword'";

$result = mysql_query($query);

// Если совпадения не найдены, вывести сообщение

// и заново отобразить форму

if (mysql_num_rows($result) == 0) :

print "Sorry, but no matches were found. Please try your search again:";

print $form;

// Найдены совпадения. Отформатировать и вывести результаты, else :

// Отформатировать и вывести значения полей.

list($id, $name, $email) = mysql_fetch_row($result);

print "<h3>Customer Information:</h3>";

print "<b>Name:</b> $name <br>";

print "<b>Identification #:</b> $id <br>";

print "<b>Email:</b> <a href-\"mailto:$email\">$email</a> <br>";

print "<h3>Order History:</h3>";

// Построить и выполнить запрос к таблице 'orders'

$query = "SELECT order_id, prod_id, quantity

FROM orders WHERE cust_id = '$id'

ORDER BY quantity DESC";

$result = mysql_query($query):

print "<table border = 1>";

print "<tr><th>0rder ID</th><th>Product ID</th><th>Quantity</th></tr>";

// Отформатировать и вывести найденные записи.

while (list($order_id, $prod_id, $quantity) = mysql_fetch_row($result));

print "<tr>";

print "<td>$order_id</td><td>$prod_id</td><td>$quantity</td>";

print "</tr>";

endwhile;

print "</table>";

endif;

endif;

?>

Если ввести ключевое слово Mi 1 апо и выбрать в раскрывающемся списке категорию Customer Name (Имя клиента), программа выводит следующую информацию:

Customer information:

Name:Milano

Identification#:2000cu

Email:felix@milano.com

Order History:

Order Id Product Id Quantity
100003 1000pr 12
100005 1002pr 11

Конечно, мы рассмотрели простейшую реализацию поисковой системы. Существует немало дополнительных возможностей — поиск по нескольким ключевым словам, поиск по неполным ключевым словам или автоматическая выборка записей с похожими ключевыми словами. Попробуйте применить свою творческую фантазию и реализовать их самостоятельно.

Сортировка таблиц

При выводе данных из базы необходимо предусмотреть возможность их сортировки по различным критериям. В качестве примера рассмотрим результаты, выведенные нашей поисковой системой, — обратим особое внимание на следующие после заголовка Order History: (История заказов). Допустим, список получился очень длинным, и вы хотите отсортировать данные по идентификатору товара (или идентификатору заказа). Чтобы вы лучше поняли, о чем идет речь, рекомендую посетить один из моих любимых сайтов, http://download.cnet.com. Если в процессе просмотра программ конкретной категории щелкнуть на заголовке столбца (название, дата размещения, количество загрузок или размер файла), то список автоматически упорядочивается по содержимому указанного столбца. Далее показано, как реализовать подобную возможность.

В листинге 11.6 мы производим выборку данных из таблицы orders. По умолчанию данные сортируются по убыванию объема заказа (поле quantity). Однако щелчок на любом заголовке таблицы приводит к тому, что страница загружается заново с упорядочением таблицы по указанному столбцу.

Листинг 11.6. Сортировка таблиц (tablesorter.php)

<?

// Подключиться к серверу MySQL и выбрать базу данных

@mysql_connect("localhost". "web", "ffttss")

or die("Could not connect to MySQL server!");

@mysql_select_db( "company")

or die("Could not select company database!");

// Если значение переменной $key не задано, по умолчанию

// используется значение 'quantity' if (! isset($key)) :

$key = "quantity"; endif;

// Создать и выполнить запрос.

// Выбранные данные сортируются по убыванию столбца $key

$query = "SELECT order_id, cust_id, prod_id, quantity FROM orders ORDER BY $key DESC" $result = mysql_query($query);

// Создать заголовок таблицы

print "<table border = 1>";

print "<tr>

<th><a href=\"Listing11-6.php?key=order_id\">Order ID</a></th>

<th><a href=\"Listing11-6.php?key=cust_id\">Customer ID</a></th>

<th><a href=\"Listing11-6.php?key=prod_id\">Product ID</a></th>

<th><a href=\"Listing11-6.php?key=quantity\">Quantity</a>

</th></tr>";

// Отформатировать и вывести каждую строку таблицы

while (list($order_id,$cust_id,$prod_id, $quantity)

= mysql_fetch_row($result)) :

print "<tr>";

print "<td>$order_id</td><td>$cust_id</td><td>$prod_id</td><td>

$quantity</td>";

print "</tr>";

endwhile;

// Завершить таблицу

print "</table>";

Для базы данных company, изображенной на рис. 11.1, стандартные выходные данные листинга 11.6 выглядят следующим образом:

Order ID Customer ID Product ID Quantity

100003
2000cu 1000pr 12

100005
2000cu 1002pr 11

100004
2000cu 1000pr 9

100002
2000cu 1001pr 5

100001
2000cu 1002pr 3

Обратите внимание: заголовки таблицы представляют собой гиперссылки. Поскольку по умолчанию сортировка осуществляется
Комментарии (0)
<< 1 ... 3 4 5 6 7 ... 9 >>
Скачать Java книгу

»php/mysql/pdo/js
В библиотеку

На главную

Сообщество wap разработчиков I HwapCMS официальный сайт поддержки


RSS-лента
Генерация: 0.0816 сек.