Я пытаюсь обновить rank
столбец в таблице users
в MySQL с помощью PHP, но когда я пытаюсь изменить значение и нажмите кнопку update
, только последний из строк таблицы на самом деле обновляются. Вот изображение того, что таблица PHP выглядит на веб-странице:Почему обновляется только одна таблица?
Вот код:
<?php
include '../db/connect.php';
$con = $MySQLi_CON;
if (!$con){
die("Can not connect: " . mysql_error());
}
if(isset($_POST['update'])){
$UpdateQuery = "UPDATE users SET rank='$_POST[rank]' WHERE user_id='$_POST[hidden]'";
$con->query($UpdateQuery);
}
$result = $MySQLi_CON->query("SELECT * FROM users")
or die(mysql_error());
echo "<table border=1>
<tr>
<th>ID</th>
<th>Username</th>
<th>Email</th>
<th>Rank</th>
</tr>";
echo "<form action='test3.php' method='post'";
while($record = $result->fetch_array()){
echo '<tr>';
echo '<td>' . $record['user_id'] . '</td>';
echo '<td>' . $record['username'] . '</td>';
echo '<td>' . $record['email'] . '</td>';
echo '<td>' . '<input type="number" name="rank' . [$record['user_id']] . '" />';
echo '<td>' . '<input type="hidden" name="hidden" value="' . $record['user_id'] . '"</td>';
echo '<td>' . '<input type="submit" name="update" value="update"' . '</td></tr>';
}
echo "</table>";
for($_POST['rank'] as $user_id=>$rank){
$UpdateQuery = "UPDATE users SET rank='$rank' WHERE user_id='$user_id'";
$con->query($UpdateQuery);
}
$con->close();
вы создали форму в цикле while в строке таблицы .. так что, конечно, когда вы отправляете, будет отправлена только одна строка. –
Так 'echo'' form' вне цикла 'while', и тогда это будет работать? – Onret
Это обновление только последней строки, потому что это все, что вы сказали ему сделать. Посмотрите на размещение массивов с использованием форм. – Styphon