Сегодня у меня небольшая проблема, с элементарной и, может быть, забавной вещью. Сегодня я хотел сделать таблицу с данными с сервера sql. Для этого я использую Xampp для этого и, возможно, очень часто выбираю для этого. Проблема с таблицей, потому что я пытался отобразить данные с помощью своих идей, а мои знания и результаты, возможно, больше, чем то, что я хочу сделать, просто может быть. Ниже мои скрипты и хочу отметить, что я делаю несколько версий скриптов и здесь это только одна из них.
HTML + PHP-таблица
<div class = "centred-container table">
<table class = "table-results">
<tr class = "tr-table">
<th class = "th-table th-univ">Product name</th>
<th class = "th-table th-univ">Cod PLU</th>
<th class = "th-table th-univ">Cod Intern</th>
<th class = "th-table th-univ">Cod EAN/Bare</th>
<th class = "th-table th-univ">Unitate</th>
<th class = "th-table th-univ">Pret</th>
<th class = "th-table th-univ">Stoc</th>
</tr>
<tr class = "tr-table">
<?php
while ($row = mysqli_fetch_assoc($result)) {
$nameP = $row["ProductName"];
$PLUP = $row["ProductPLU"];
$ICP = $row["ProductIC"];
$EANP = $row["ProductEAN"];
$UnitP = $row["ProductUnit"];
$PriceP = $row["ProductPrice"];
$StockP = $row["ProductStock"];
echo"<td>".$nameP."</td>
<td>".$PLUP."</td>
<td>".$ICP."</td>
<td >".$EANP."</td>
<td >".$UnitP."</td>
<td >".$PriceP."</td>
<td >".$StockP."</td> <br>";
}
?>
</table>
</div>
PHP-часть
if (isset($_POST["submit"])) {
session_start();
include_once 'includes/dbh.inc.php';
$codePLU = $_POST["productPLU"];
$codeEAN = $_POST["productEAN"];
$codeIC = $_POST["productIC"];
$sql = "SELECT * FROM products WHERE ProductPLU ='$codePLU' OR ProductEAN = '$codeEAN' OR ProductIC = '$codeIC';";
$result = mysqli_query($conn, $sql);
}
?>
Здесь я хочу отображать (SELECT) данные из базы данных и отображать их в таблице html. Проблема в том, что я пробовал метод с <td><?php echo $variable ?></td>
, где $varable = $row["column_name"]
, и в этой ситуации все мои данные, возможно, только первая или последняя или только одна строка, где должно было быть больше, потому что я знаю, что мой запрос sql имеет больше результатов (строк), чем одна строка Я понимаю.
С вставленными сценариями все мои строки возвращаются запросом sql, но все строки находятся в одной строке, и я хочу, чтобы все они были в классической таблице.
Мне нужна небольшая помощь для моей маленькой проблемы. Я знаю, что это просто основная проблема на сайте php, но мне нужен от вас какой-то случай или результаты, где я хочу попытаться сделать свою таблицу классической таблицей без ошибок, таких же, как мои ошибки выше.
Извините за мой английский.
@RiggsFolly Я буду работать над вашими наблюдениями
Проблема с вашей таблицей HTML. Нужно открывать и закрывать каждую строку (<tr>
) в цикле while. код ниже
<table class = "table-results">
<tr class = "tr-table">
<th class = "th-table th-univ">Product name</th>
<th class = "th-table th-univ">Cod PLU</th>
<th class = "th-table th-univ">Cod Intern</th>
<th class = "th-table th-univ">Cod EAN/Bare</th>
<th class = "th-table th-univ">Unitate</th>
<th class = "th-table th-univ">Pret</th>
<th class = "th-table th-univ">Stoc</th>
</tr>
<?php
while ($row = mysqli_fetch_assoc($result)) {
$nameP = $row["ProductName"];
$PLUP = $row["ProductPLU"];
$ICP = $row["ProductIC"];
$EANP = $row["ProductEAN"];
$UnitP = $row["ProductUnit"];
$PriceP = $row["ProductPrice"];
$StockP = $row["ProductStock"];
echo"<tr> <td>".$nameP."</td>
<td>".$PLUP."</td>
<td>".$ICP."</td>
<td >".$EANP."</td>
<td >".$UnitP."</td>
<td >".$PriceP."</td>
<td >".$StockP."</td> </tr>";
}
?>
</table>
Ваш скрипт открыт для атаки SQL-инъекцией . Даже если вы убегаете от ввода, это небезопасно! Вы всегда должны использовать подготовленные параметризованные операторы либо в
MYSQLI_
, либо вPDO
API вместо того, чтобы объединять предоставленные пользователем значения в запрос. Никогда не доверяйте ЛЮБОМУ вводу пользователя! Это также устранит проблему с неэкранированными символами, такими как'
, в текстовой строке, например `O'Neal'.