У меня есть форма, где пользователь вводит данные, например, 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>";
?>
Не было бы лучше назначить $ 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, вместо того, чтобы выполнять его, предполагая, что есть значение
Других решений пока нет …