Автор: Rahim S. (a.k.a SpiderMan) 
http://blacksun.box.sk
Это первое руководство из серии Практическое Программирование на PHP. Итак, позвольте мне начать, сегодня я собираюсь рассказать вам, как создать поисковый механизм, который вы смогли бы использовать на своем сайте или на каком-либо другом проекте. Для написания этого руководства я использовал базу данных MySQL,
код, совместимый с PHP 3 и 4.
Задний план
Прежде, чем мы начнем, я покажу вам таблицу, которая будет использована в примерах:
| 
 First_Name  | 
Middle_Name | Last_Name | 
| Dana | Jhonson | Smith | 
| Jill | Angel | Pete | 
| Jack | Coner | Mitchel | 
Погружаемся в Работу
Прежде, чем мы действительно займемся созданием поискового механизма, нам надо
будет создать основную веб-страницу, на которой будет находиться поле для ввода запроса на поиск. Я сделал самую простую форму, если вам станет легче - сделайте более сложную с массой излишеств. Код моей страницы ниже:
	  <html>
	  <head>
	    <title>Simple Search Engine version 1.0</title>
	  </head>
	  <body>
	  <center>
	    Enter the first, last, or middle name of the person you are looking for:
	    <form action="search.php" method="post">
	      <input type="text" name="search_query" maxlength="25" size="15"><br>
	      <input type="reset" name="reset" value="Reset"> 
	      <input type="text" name="submit" value="Submit">
	    </form>
	  </center> 
	  </body>
	  </html> 
Это хорошая основная страница, так что я не собираюсь особо на этом останавливаться. В основном пользователи введут имя, фамилию или отчество личности, которую они ищут, и нажмут enter. Содержимое полей ввода будет передано на php
скрипт, называющийся search.php и который сделает все остальное.
Теперь, когда страница готова, позвольте приступить к написанию собственно скрипта.
Прежде чем мы действительно подключимся к базе данных, используя
mysql_pconnect(), и выберем таблицу, используя mysql_select_db(), мы выполним грамматический разбор
значения, переданного скрипту чтобы посмотреть, не содержит ли оно какого-нибудь неправильного ввода, такого как чисел и стремных символов подобно #&*^. Вы всегда
должны проверять ввод и не доверять вещам подобно JavaScript, чтобы сделать это, так
как однажды пользователь отключит JavaScript и все, что
подтвердится спустится в
унитаз. Теперь, для проверки ввода мы будем использовать регулярное выражение, они
могут немного запутать вас, но будут объясняться в последующих руководствах. Все,
что нам нужно знать сейчас, это то, что нужно проверить, что переданное значение
это строка символов. Ну все, достаточно болтовни, вот первая часть скрипта:
    <?php 
      mysql_pconnect("host", "username", "password") or die("Can't connect!");
      mysql_select_db("Names") or die("Can't select database!"); 
	    if (!eregi("[[:alpha:]]", $search_query))
      {
        echo "Error: you have entered an invalid query, you can only use characters!<br>";
				exit;
      }
Теперь когда мы сделали это, мы сформируем поисковый запрос.
$query= mysql_query("SELECT * FROM some_table WHERE First_Name= '$search_query' OR Middle_Name= '$search_query' OR Last_Name= '$search_query' ORDER BY Last_Name");
Запутались? Я объясню, что здесь происходит, мы запрашиваем MySQL поиск во всех
колонках в First_Name, Middle_Name и Last_Name для сопоставления запроса, введенного пользователем, после того, как он обнаружил некоторые результаты мы просим MySQL расположить результаты в алфавитном порядке, начиная с Last_Name.
Остальная часть кода очень проста. Мы получаем результаты запроса, используя
mysql_fetch_array( ) и ищем соответствия, используя mysql_num_rows(). Если соответствие или соответствия есть, то мы выводим все обнаруженные соответствия;
если их нет, то мы говорим пользователю, что не смогли ничего найти.
$result= mysql_num_rows($query);
			if ($result == 0)
      {
        echo "Sorry, I couldn't find any user that matches your query ($search_query)";
        exit; 
      }
      else if ($result == 1)
      {
        echo "I've found <b>1</b> match!<br>";
      }
      else {
        echo "I've found <b>$result</b> matches! <br>";
		  }
      while ($row= mysql_fetch_array($query))
      {
        $first_name= $row["First_Name"];
        $middle_name = $row["Middle_Name"];
        $last_name = $row["Last_Name"];
        echo "The first name of the user is: $first_name.<br>";
        echo "The middle name of the user is: $middle_name.<br>";
        echo "The last name of the user is: $last_name. <br>";
      }
    ?>
Я добавил одну интересную вещь, когда мы выводим сообщение, сколько пользователей мы обнаружили, то вывод будет предоставлен на соответствующем правильном Английском. Если бы мы не добавили в скрипт эту вещь, то он выводил бы,
например, "I've found 1 matches", что очевидно является грамматической ошибкой 😛 Остальная часть скрипта в основном соединяет результаты и печатает их
на веб-странице. Это и все, работа над скриптом завершена! Полный код скрипта
расположен ниже:
    <html>
    <head>
      <title>Simple Search Engine version 1.0 - Results </title>
    </head>
    <body> 
    <?php 
      mysql_pconnect("host", "username", "password") or die("Can't connect!");
      mysql_select_db("Names") or die("Can't select database!"); 
			if (!eregi("[[:alpha:]]", $search_query))
      {
        echo "Error: you have entered an invalid query, you can only use characters!<br>";
				exit;		//Нет необходимости выполнять остальную часть скрипта.
      }
$query= mysql_query("SELECT * FROM some_table WHERE First_Name='$search_query' OR Middle_Name= '$search_query' OR Last_Name='$search_query' ORDER BY Last_Name");
$result= mysql_numrows($query);
			if ($result == 0)
      {
        echo "Sorry, I couldn't find any user that matches your query ($search_query)";
        exit;		//Ничего не найдено, зачем выполнять остальную часть скрипта?
      }
      else if ($result == 1)
      {
        echo "I've found <b>1</b> match!<br>";
      }
      else {
        echo "I've found <b>$result</b> matches! <br>";
			}
      while ($row= mysql_fetch_array($query))
      {
        $first_name= $row["First_Name"];
        $middle_name = $row["Middle_Name"];
        $last_name = $row["Last_Name"];
        echo "The first name of the user is: $first_name.<br>";
        echo "The middle name of the user is: $middle_name.<br>";
        echo "The last name of the user is: $last_name. <br>";
      }
    ?> 
    </body>
    </html> 
Заключение:
Что ж, этим завершается первая часть серии руководств Практического Программирования. Страницы, созданные мной, были чрезвычайно простыми, так как моя главная
цель - объяснить вам суть скрипта, вы должны оживить свои страницы изображениями
и другими клевыми эффектами. Если вы обнаружили какие-либо ошибки или у вас есть
какие-либо комментарии, пожалуйста, напишите мне (также приветствуются вопросы 
на доске объявлений).