В этой статье будет рассказано, как сделать простой поиск по БД в PHP, но стоит сказать, что этот способ, больше подойдёт для Admin панели, но если вы хотите сделать поиск по сайту для пользователей, то эта статья не для вас.
Как работает поиск по БД:
Суть работы поиска по базе данных очень проста, мы вводим в строку данные, и он сравнивает все параметры по всем совпадением, например, он сравнивает имя и фамилию пользователя в базе данных, и ищет совпадение.
Делаем поиск:
Мы будет делать поиск среди пользователей, но можно сделать для любой таблицы.
HTML документ:
C HTML документом всё очень просто, поэтому я даже не буду рассказывать про него, просто покажу код.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form action="<?= $_SERVER['SCRIPT_NAME'] ?>"> <p>Поиск Человека: <input type="text" name="search" id=""> <input type="submit" value="Поиск"></p> <hr> </form> <?php countPeople($result); // Функция вывода пользователей ?> </body> </html> |
Как видите тут всё просто, вы отправляете данные прямо в этот же файл, это значит, что мы работаем в PHP, также отправляются POST запрос, ну а в низу используется функция которая выводит результат работы/поиска.
Если вы не знаете как работать с формой в PHP, то прочитайте часть нашего учебника: PHP работа с формой.
Подключение БД:
Подключить базу данных очень просто, для этого используем не большой код.
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(); } |
В принципе тут тоже объяснять особо не о чём, так как, вы уже должны это знать, если вы читаете эту статью.
Но если вы всё таки не знаете, то посмотрите часть учебника по PHP: PHP работа с БД MySQL.
Основной код:
Теперь пришло время к основному коду PHP, так сказать к основной логики.
1 2 3 4 5 6 7 8 | // Получаем запрос $inputSearch = $_REQUEST['search']; // Создаём SQL запрос $sql = "SELECT * FROM `users` WHERE `name` = '$inputSearch' || `surname` = '$inputSearch' || `email` = '$inputSearch' || `number_phone` = '$inputSearch' || `city` = '$inputSearch' || `year_of_birth` = '$inputSearch'"; // Отправляем SQL запрос $result = $mysqli -> query($sql); |
В этой части кода, мы просто берём данные, которые получили от формы и загоняет их в переменную $inputSearch
, дальше создаём SQL запрос, в котором через или сравниваем со всеми данными пользователя.
Отправляем этот запрос в базу данных MySQL и сохраняем возвращаемые данные в переменной $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; // Возвращаем этот массив } |
Это маленькая функция, нужна для того, что бы если данных, к примеру, email нету, то выводилось не пустая строка, а фраза «Нет данных», функция возвращает массив с изменениями.
Теперь можно создать функцию для вывода данных.
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 "Не кто не найден"; } } |
Давайте разберём код, тут создаём функцию, для вывода пользователей, в качестве параметра используется результат метода отправление SQL запроса.
В остальном тут нет не чего сложного, если вы прочитали часть учебника «PHP работа с БД MySQL», которая упоминалась выше.
Вот результат программы.
Как видите программа абсолютно рабочая.
Вывод:
В этой статье было показано как сделать поиск по БД в PHP, надеюсь она вам помогла, также, если вы не умеете работать с базой данных, то посмотрите весь наш учебник посвящённый работе с ней, по этой ссылки.