2016-03-31 21 views
-2

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(); 
+0

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. –

+0

Yani 'while' döngüsünden 'form' yankılanır ve sonra çalışır? – Onret

+1

Sadece son satırı güncellemek çünkü yapmanız gereken her şey bu. Formları kullanarak dizileri yayınlamaya bakın. – Styphon

cevap

0

sorun olduğunu: Burada

Here

kod edilir: Burada PHP tablo web sayfasında nasıl göründüğünü bir resimdir ve ayrıca hidden, tarayıcı en son öğe ile tüm sıra ve gizli değeri geçersiz kılacaktır.

değişim <input type="number" name="rank" />

<input type="number" name="rank[$record['user_id']]" /> için dizi formatı ve döngü her bir seviye olarak $_POST['rank'] ile php alır.

for($_POST['rank'] as $user_id=>$rank){ 
    $UpdateQuery = "UPDATE users SET rank='$rank' WHERE user_id='$user_id'"; 
    $con->query($UpdateQuery); 
} 
+0

şimdi bu hatayı döndürüyor: 'sözdizimi hatası, beklenmedik '(T_AS), bekliyor' (T_AS), ';'' Yukarıdaki kodu da güncelledim – Onret

+0

Öncelikle, bu noktayı almazsınız. [$ record ['user_id']] 'kesinlikle bir sözdizimi hatası olacak, yankılanmak istediğiniz son html '' gibi. ikinci olarak, sorgu bölümünü güncellemediniz. Üçüncü olarak, sunucuya dizi verilerinin nasıl gönderileceğini ve php'nin "POST" isteğinden dizi verilerini nasıl yakalayacağını bilmeniz gerektiğini düşünüyorum. – panda