mysql — скрыть полную таблицу перед поиском PHP

У меня есть форма поиска PHP для поиска в таблице SQL.
Все вместе это прекрасно работает, но есть одна вещь, которую я люблю менять.

Вся таблица видна на экране ДО поиска.
Я хотел бы упомянуть только записи после поиска.

Кто-нибудь знает, чтобы скрыть таблицу в PHP?
Спасибо заранее!

HTML

<form action="" method="post">
<input type="text" name="search" placeholder="Search">
<input type="submit" value="Submit" />
</form>

PHP

<?php
$host = "******";
$user = "******";
$password = "******";
$database_name = "vangsten";
$pdo = new PDO("mysql:host=$host;dbname=$database_name", $user, $password, array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));
$search=$_POST['search'];
$query = $pdo->prepare("select * FROM meldingen WHERE soort LIKE '%$search%' OR zone LIKE '%$search%'  LIMIT 0 , 10");
$query->bindValue(1, "%$search%", PDO::PARAM_STR);
$query->execute();
if (!$query->rowCount() == 0) {

echo "<table style=\"margin:50px auto;\">";
echo "<tr><td>VISSOORT</td><td>LENGTE</td><td>AANTAL</td><td>ZONE</td></tr>";
while ($results = $query->fetch()) {
echo "<tr><td>";
echo $results['soort'];
echo "</td><td>";
echo $results['lengte'];
echo "</td><td>";
echo $results['aantal'];
echo "</td><td>";
echo $results['zone'];
echo "</td></tr>";
}
echo "</table>";
} else {
echo 'Nothing found';
}
?>

1

Решение

Это потому, что даже если поиск не пройден, вы в конечном итоге выполните запрос: WHERE sort LIKE '%%'

Вы должны проверить, был ли поиск пройден первым

if(array_key_exists('search',$_POST) && !empty($_POST['search'])){
$search=$_POST['search'];
$query = $pdo->prepare("select * FROM meldingen WHERE soort LIKE '%$search%' OR zone LIKE '%$search%'  LIMIT 0 , 10");
$query->bindValue(1, "%$search%", PDO::PARAM_STR);
$query->execute();
if (!$query->rowCount() == 0) {
echo "<table style=\"margin:50px auto;\">";
echo "<tr><td>VISSOORT</td><td>LENGTE</td><td>AANTAL</td><td>ZONE</td></tr>";
while ($results = $query->fetch()) {
echo "<tr><td>";
echo $results['soort'];
echo "</td><td>";
echo $results['lengte'];
echo "</td><td>";
echo $results['aantal'];
echo "</td><td>";
echo $results['zone'];
echo "</td></tr>";
}
echo "</table>";
} else {
echo 'Nothing found';
}
}
  • array_key_exists('search',$_POST) проверяет, что есть значение с
    клавиша «поиск»;
  • !empty($_POST['search']) проверяет это не просто
    пустая строка. (Вы можете разрешить это)

Вы могли бы использовать isset($_POST['search']) вместо array_key_exists('search',$_POST) но array_key_exists лучше практиковать как isset по-прежнему возвращает ложь, если значение NULL

0

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

Вы можете проверить, нажал ли пользователь на кнопку поиска:

if (isset($_POST['search'])) {
// do your table generation here
}
0

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