база данных — панель поиска php, когда я нажимаю на кнопку «отправить», в строке поиска ничего не отображается, отображаются все данные

Фьюжн поиска работает корректно, но если я нажимаю «отправить», ничего не указывая в строке поиска, отображаются все данные. Как мне получить сообщение о том, что ничего не было введено в строку поиска? Я новичок в PHP.

<?php
$mysql_host="host";
$mysql_database="database";
$mysql_user="username";
$mysql_password="password";

$dbconnect=@mysql_connect($mysql_host, $mysql_user, $mysql_password);
// trys to connect to the databaseif (!$dbconnect) {
exit("An error has occurred - could not connect to the database.");
// if couldn't connect, let the user know
}

if(!mysql_select_db($mysql_database)) {
exit("An error has occurred - Could not select the database.");
//if couldn't select db, let the user know
}$output = '';
//collect

if(isset($_POST['search'])) {
$searchq = $_POST['search'];
$searchq = preg_replace("#[^0-9a-z]#i","",$searchq);
$query = mysql_query("SELECT * FROM people WHERE firstname LIKE '%" . $searchq . "%' OR surname LIKE '" . $searchq . "';");
$count = mysql_num_rows($query);
if($count == 0) {
$output = 'There was no search results!';
} else {
while ($row = mysql_fetch_array($query)) {
$fname = $row ['firstname'];
$lname = $row ['surname'];
$id = $row ['id'];

$output .= '<div>'.$fname.' '.$lname.'</div>';}

}

}
?>
<html>
<head>
<title>search</title>
</head>
<body>

<form action="index.php" method="post">
<input type="text" name="search" placeholder="Search here......." />
<input type="submit" value="submit" /></form><?php print("$output");?>
</body>
</html>

0

Решение

Если вы хотите избежать всех результатов, которые появляются при отправке формы, вам необходимо проверить, что именно отправляется в текстовом вводе.

Прямо сейчас, если $searchq == "" тогда ваш SQL запрос будет искать: WHERE firstname LIKE '%%' это просто подстановочный знак на что-нибудь.

Чтобы это исправить, добавьте $_POST['search'] != "" к исходному состоянию.

<?php

// Make sure to only perform the search and show the results if there's something to search for
if(isset($_POST['search']) && $_POST['search'] != "") {
$searchq = $_POST['search'];
$searchq = preg_replace("#[^0-9a-z]#i","",$searchq);
$query = mysql_query("SELECT * FROM people WHERE firstname LIKE '%" . $searchq . "%' OR surname LIKE '" . $searchq . "';");
$count = mysql_num_rows($query);

if($count == 0) {
$output = 'There was no search results!';
} else {
while ($row = mysql_fetch_array($query)) {
$fname = $row ['firstname'];
$lname = $row ['surname'];
$id = $row ['id'];

$output .= '<div>'.$fname.' '.$lname.'</div>';
}
}
}

Теперь он будет искать только тогда, когда форма была отправлена ​​со строкой для поиска!

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector