テーブルのrank
カラムをPHPを使用してMySQLのテーブルに更新しようとしていますが、値を変更してupdate
ボタンを押すと、の最後の1つだけが実際に更新されています。ここではPHPの表は、Webページ上でどのように見えるかのイメージがある:ここではテーブル行が1つしか更新されないのはなぜですか?
は、コードは次のとおりです。
<?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ループでフォームを作成しました。もちろん、送信すると1行だけが送信されます。 –
'while'ループの外側にある' form'を 'echo'してから動作しますか? – Onret
最後の行が更新されるのは、それだけで済むからです。フォームを使った投稿の投稿を見てください。 – Styphon