Поиск информации в базе данных
После заполнения таблиц базы данных “Travel”, можно осуществить поиск требуемых данных по определенному критерию. К таким критериям могут относиться фамилия, имя, отчество туриста, название туроператора, с помощью которого он заказывал путевки, название отеля, либо дата отправки и прибытия.
Ниже представлен пример поиска информации о туристах по дате отправки и вывод на экран результатов поиска.
HTML-код поиска информации в базе данных представлен ниже.
<HTML>
<HEAD>
<TITLE> Турагенство "Travel" - Поиск туриста</TITLE>
</HEAD>
<BODY>
<H1> Турагенство "Travel".</H1>
<H2> Поиск данных о туристе.</H2>
<FORM method="POST" action="example.php">
<<INPUT type="hidden" name="posted" value="true">
Выберите критерий поиска:<br>
<SELECT name="Otpravka">
<OPTION value="DateOtpravki">Дата отправки
<OPTION value="Number">Номер путевки
</SELECT><br>
Введите строку:<br>
<INPUT name="First" type=TEXT><br>
<INPUT type=submit value="Поиск"></form>
</BODY>
</HTML>
Реализация данного кода представлена на рисунке
в данном примере при загрузке Web-страницы на экране появляется форма, в которую пользователь должен ввести информацию для поиска. Критерий поиска необходимо выбрать из выпадающего списка. Значение критерия поиска требуется ввести в однострочное текстовое поле. Затем необходимо нажать кнопку “Поиск”. После этого подключится обработчик, указанный в атрибуте “action” тега “form”. В данном примере это файл example.php.
Код файла-обработчика представлен ниже.
<HTML>
<HEAD>
<STYLE type="text/css">
.center { text-align: center; }
</STYLE>
<TITLE> Турагенство "Travel" - Поиск туриста</title></head>
<BODY>
<H1> Турагенство "Travel".</H1>
<H2> Поиск данных о туристе.</H2>
<?php
if (isset($_POST['posted']))
{
$Otpravka = $_POST['Otpravka'];
$First = $_POST['First'];
trim($search_term); // удаление пробелов из начала и конца строки
if ($Otpravka == "" or $First == "")
{ echo "Вы не ввели параметры поиска. Пожалуйста, попробуйте снова."; exit; } // остановка выполнения сценария
$Otpravka =addslashes($Otpravka );
$First = addslashes($First);
$db = mysql_pconnect("localhost" , "root", ""); //установка соединения
if (!$db)
{ echo " Ошибка: Невозможно подключиться к MySQL серверу. Пожалуйста, попробуйте позже.";
exit; }
mysql_SELECT_db("Travel"); // выбор базы данных
$query = "SELECT Putevka.DateOtpravki, Putevka.Number, Putevka.DateVozvr, Turist.SecondName, Turist.FirstName, Turist.Patronym, Turist.SeriaPassport, Turist.NumberPassport, Turoperator.Name,
Hotel.Names, Hotel.Class
FROM Putevka, Turist, Turoperator, Hotel
WHERE Turist.Id = Putevka.Cod_Turist AND Turoperator.Id = Putevka.Cod_Operator AND Hotel.Id = Putevka.Cod_Hotel AND ".$Otpravka." LIKE '%".$First."%'";
$result = mysql_query($query); // выполнение запроса
$num_rows = mysql_num_rows($result);
// подсчет количества результатов
echo "<p> <h3>Туристов найдено: ".$num_rows.".</h3></p>";
echo "<table cellpadding=5 border=2>\n";
echo "<tr><th width=100>Номер путевки</th>
<TH width=100>Фамилия</TH><th width=100>Имя</th>
<TH width=100>Отчество</TH>
<TH width=100>Дата отправки </th><th width=100>Дата прибытия</TH>
<TH width=100>Название отеля</th>
<TH width=100>Туроператор</th></tr>\n";
for ($i=0; $i<$num_rows; $i++)
{ $row = mysql_fetch_array($result);
// обработка ряда результата запроса
echo "<TR><TD class \"center\">$row[Number]</TD>
<TD>$row[SecondName]</TD>
<TD>$row[FirstName]</TD>
<TD>$row[Patronym]</TD>
<TD>$row[DateOtpravki]</TD>
<td>$row[DateVozvr]</TD>
<TD class=\"center\">$row[Names]</TD>
<TD class=\"center\">$row[Name]</TD></TR>\n"; } }
?>
</BODY>
</HTML>
Реализация данного кода представлена на рисунке
Таким образом, в данном примере осуществлялся поиск информации в базе данных “Travel” по запросу пользователя. Перед выполнением запроса происходит проверка заполненности обязательных полей формы. Если заполнены не все поля, на экран выводится сообщение об ошибке, с просьбой заполнения полей. Затем происходит подключение к базе данных. Если все поля формы заполнены и подключение к базе данных прошло успешно, выполняется запрос на выборку данных из таблиц, после чего на экран выводится результат этого запроса.
В данном примере в качестве критерия поиска использовалась дата оптравки туриста. Из базы считывалась полная информация о туристах, которые купили путевки на заданную дату. При этом, использовались данные из таблиц “Putevka” (поля “Number”, “DateOtpravki”, ”DateVozvr”), “Turist” (поля “SecondName”, “FirstName”, “Patronym”), “Hotel” (поле “Name”) и Turoperator” (поле “Name”).
Затем считанная информация выводилась на экран. К такой информации относится номер путевки, дата отправки, дата прибытия, фамилия, имя, отчество туриста, название отеля, название туроператора.
Как видно на рисунке 8.37, в данном примере осуществлялся поиск информации о туристах, чья дата отправки “2010-05-18”. В базе данных “Travel” было найдено три записи, удовлетворяющие данному условию: “Семенов Николай Петрович”, “Иванов Иван Максимович” и “Петров Станислав Евгеньевич”.
Необходимо отметить, что помимо описанных выше функций, при работе с СУБД MySQL используется ряд других функций, которые описаны далее.