В этой статье вы прочитаете как делается поисковая система на PHP, код будет крайне просто и не большой, поэтому даже новичок поймёт.
Также стоит сказать, что мы уже делали подобную программу, но там был поиск чётких данных и больше подойдёт для админ панели, чтобы находить пользователей, чем для обычного поиска, например товаров, можете посмотреть её по это ссылки.
HTML:
Перед тем как начать разработку, нужно сделать в HTML форму, вот такую.
1 2 3 4 | <form action="<?= $_SERVER['SCRIPT_NAME'] ?>" method="get"> Поиск: <input type="text" name="search"><br> <input type="submit" value="Найти"> </form> |
Тут просто HTML, не чего особенного нет, но если вам что то не понятно, то прочитайте учебник по HTML.
Подключение Базы данных:
Первым делом нужно подключить нам базу данных, для этого пишем вот этот код.
1 2 3 4 5 6 7 8 9 10 11 12 13 | $servername = "127.0.0.1"; // Адрес сервера $username = "root"; // Имя пользователя $password = ""; // Пароль $BDname = "users_search"; // Название БД // Подключение к БД $mysqli = new mysqli($servername, $username, $password, $BDname); // Проверка на ошибку if ($mysqli->connect_error) { printf("Соединение не удалось: %s\n", $mysqli->connect_error); exit(); } |
Как тут видите идёт обычное подключение, в начала мы объявляем переменные, в которых храним настройки базы данных для подключения к ней.
Дальше создаём объект классы mysqli
, который используется для работы с БД, проверяем подключение, если есть ошибка, то выведем надпись с ней.
Основной код:
После того как подключили БД, переходим к запросу, вот код.
1 2 3 4 5 6 7 8 | // Получаем запрос $inputSearch = $_REQUEST['search']; // Создаём SQL запрос $sql = "SELECT * FROM `users` WHERE `name` LIKE '%$inputSearch%'"; // Отправляем SQL запрос $result = $mysqli -> query($sql); |
В начале мы получаем запрос из формы и ложем его в переменную $inputSearch
, дальше создаём SQL запрос, и тут самое интересное, то что мы ищем по имени, но не просто, а по ближайшему совпадению, это делается благодаря знаку процента, он обозначает сколько угодно соответствий, а команда LIKE
сравнивает эту строку, а точнее регулярное выражение, со всеми именами.
Потом делаем запрос к БД, и сохраняем результата в переменную $result
. Дальше, перед тем как выводить данные, сделаем две функции, первая не много структурирует данные, а вторая уже выводит.
1 2 3 4 5 6 7 8 9 | function doesItExist(array $arr) { // Создаём новый массив $data = array( 'email' => $arr['email'] != false ? $arr['email'] : 'Нет данных', 'city' => $arr['city'] != false ? $arr['city'] : 'Нет данных', 'year' => $arr['year_of_birth'] != false ? $arr['year_of_birth'] : 'Нет данных' ); return $data; // Возвращаем этот массив } |
В этой функции мы немного настраиваем вывод не обязательных данных, по сути мы проверяем, если та или иная информация, и что бы не выводилось пустая строка, мы наменяем на строку «Нет данных».
Вот функция для вывода.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function countPeople($result) { // Проверка на то, что строк больше нуля if ($result -> num_rows > 0) { // Цикл для вывода данных while ($row = $result -> fetch_assoc()) { // Получаем массив с строками которые нужно выводить $arr = doesItExist($row); // Вывод данных echo "ID: ". $row['id'] ."<br> Имя: ". $row['name'] ."<br> Фамилия: ". $row['surname'] ."<br> Телефон: ". $row['number_phone'] ."<br> Email: ". $arr['email'] ."<br> Город: ". $arr['city'] ."<br> Год рождения: ". $arr['year'] ."<hr>"; } // Если данных нет } else { echo "Не кто не найден"; } } |
Давайте разберём этот код, в качестве параметра она принимает результат запроса к БД, сперва идёт проверка, есть ли вообще строки, если их нет, то выводим надпись «Не кто не найден», если же есть, то строим цикл, в нём проходимся по всем строкам, там же и используем функцию doesItExist()
.
Дальше вызываем эту функцию где-нибудь в HTML коде. там где вам надо, я же вызову её после тега form, и вот что получилось, если мы в поиск ведём просто букву «Д».
Как видите всё вывелось.
Вывод:
В этой статье вы прочитали как делается простая поисковая система на PHP, тут было только самое основное, но я уверен вы сможете её дополнить, также можете скачать скрипт этой программы, что бы самим всё проверить.