Ben PHP kullanarak MySQL users
tabloda rank
sütunu güncellemeye çalışıyorum ama değerlerini değiştirmek ve update
düğmesine basın çalıştığınızda, tablo satırları sadece sonuncusu aslında güncellenmektedir. aynı adı rank
kullanarak her bir satırın tüm sıralamasıNeden sadece bir tablo satırı güncellenir?
<?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();
formu bir satır içinde bir tablo satırında oluşturdunuz. Bu nedenle, gönderdiğinizde, yalnızca bir satır gönderilecektir. –
Yani 'while' döngüsünden 'form' yankılanır ve sonra çalışır? – Onret
Sadece son satırı güncellemek çünkü yapmanız gereken her şey bu. Formları kullanarak dizileri yayınlamaya bakın. – Styphon