Данные, которые не требуются, отображаются

У меня есть форма, где пользователь вводит данные, например, AXZAA QS1QS. Эти данные размещены в моем PHP-скрипте. Скрипт PHP подключается к базе данных MYSQL, которая в данный момент содержит 2 записи.

Идея состоит в том, что PHP-скрипт будет принимать входные данные и сравнивать их с записями в базе данных. Если записи существуют, они отображаются в таблице на веб-странице, в противном случае отображается сообщение об ошибке.

У меня много проблем с моим PHP-скриптом, и я несколько раз модифицировал его. Однако самая большая проблема, с которой я столкнулся, заключается в следующем:

Когда форма появляется в первый раз, запись сообщения не существует, появляется дважды, это происходит до того, как пользователь ввел какие-либо данные и впервые просматривает форму. Смотри картинку ниже.

введите описание изображения здесь

После ввода данных (когда PHP-скрипт частично работал правильно), если есть совпадение, т.е. существуют записи, вместе с записями в таблице я получаю сообщение об ошибке, сообщающее, что записи не были найдены. Чтобы увидеть, смогу ли я решить проблему, я добавил код, чтобы сказать, какие записи не могут быть найдены, записи, которые не могут быть найдены, были те, которые были найдены, и другие записи из базы данных, которые я не искал. Я знаю, что SQL-запрос в моем PHP-скрипте говорит скрипту, чтобы он получал все из базы данных, однако, я бы подумал, что оператор if решил бы проблему.

Извините за написание такой длинной проблемы, и я надеюсь, что это не смущает.

enter code here
<?php
//Connect to the database connection file
require 'databaseconnection.php';

$searchBar=(isset($_POST['searchBar']) ? $_POST['searchBar'] :null);
$userdata = trim($searchBar);
$cleaned_data = preg_split('/[\s]+/', $userdata);$sql = "SELECT DISTINCT * FROM atable_2";

$result = mysqli_query($database_connection, $sql);

echo "<table border>
<tr>
<th>Allocation</th>
<th>Codes</th>
<th>Names</th>
</tr>";while($putdatabaseanswer_intoarray = mysqli_fetch_array($result)) {

$allocation_id = $putdatabaseanswer_intoarray["allocation"];
$codes_id = $putdatabaseanswer_intoarray["codes"];
$names_id = $putdatabaseanswer_intoarray["names"];

foreach($cleaned_data as $value) {

if($value==$codes_id) {

echo "<tr>";
echo "<td>" . $allocation_id. "</td>";
echo "<td>" . $codes_id . "</td>";
echo "<td>" . $names_id . "</td>";
echo "</tr>";

}
else
{
echo "<br />";
echo "One or more of the records have not been found: $codes_id";
echo"<br />";
}

}

}

echo "</table>";
?>

0

Решение

Не было бы лучше назначить $ searchbar после оператора if, как

`<?php
//Connect to the database connection file
require 'databaseconnection.php';

if(isset($_POST['searchBar']))
{
$searchbar = $_POST['searchBar'];
$userdata = trim($searchBar);
$cleaned_data = preg_split('/[\s]+/', $userdata);$sql = "SELECT DISTINCT * FROM atable_2";

$result = mysqli_query($database_connection, $sql);

echo "<table border>
<tr>
<th>Allocation</th>
<th>Codes</th>
<th>Names</th>
</tr>";while($putdatabaseanswer_intoarray = mysqli_fetch_array($result)) {

$allocation_id = $putdatabaseanswer_intoarray["allocation"];
$codes_id = $putdatabaseanswer_intoarray["codes"];
$names_id = $putdatabaseanswer_intoarray["names"];

foreach($cleaned_data as $value) {

if($value==$codes_id) {

echo "<tr>";
echo "<td>" . $allocation_id. "</td>";
echo "<td>" . $codes_id . "</td>";
echo "<td>" . $names_id . "</td>";
echo "</tr>";

}
else
{
echo "<br />";
echo "One or more of the records have not been found: $codes_id";
echo"<br />";
}

}

}

echo "</table>";
}
else{
echo "<p>Please enter a search term</p>";
}
?>

Затем вы можете выполнить запрос MySQL в этом операторе if, вместо того, чтобы выполнять его, предполагая, что есть значение

0

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

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

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