Мы будет делать поиск среди пользователей, но можно сделать для любой таблицы.
<!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 запрос, ну а в низу используется функция которая выводит результат работы/поиска.
Подключить базу данных очень просто, для этого используем небольшой код.
$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();
}
В этой части кода, мы просто берём данные, которые получили от формы и загоняет их в переменную $inputSearch
, дальше создаём SQL запрос, в котором через или сравниваем со всеми данными пользователя.
// Получаем запрос
$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);
Отправляем этот запрос в базу данных MySQL и сохраняем возвращаемые данные в переменной $result
.
Перед тем как перейдём к созданию функции, которая будет выводить всё совпадения, нужно кое-что, грубо говоря настроить.
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 нету, то выводилось не пустая строка, а фраза «Нет данных», функция возвращает массив с изменениями.
Теперь можно создать функцию для вывода данных.
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 запроса.