Aggiorna più righe contemporaneamente in PHP

Voglio visualizzare la tabella degli studenti in "Classe 1". L'utente può modificare le informazioni e aggiornarle nel database. Voglio aggiornare più righe alla volta, ma alla fine aggiorno solo una row (l'ultima row). Per favore aiutami .. come dovrei cambiare il codice per aggiornare più righe contemporaneamente, quando clicco su aggiornamento. Grazie.

Questo è il codice:

<?php define('DB_SERVER', 'localhost'); define('DB_USERNAME', 'root'); define('DB_PASSWORD', ''); define('DB_DATABASE', 'test'); $connection = mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die(mysql_error()); $database = mysql_select_db(DB_DATABASE) or die(mysql_error()); mysql_set_charset("utf8", $connection); ?> <form action='update.php' method='post'> <table border='1'> <?php $result = mysql_query("SELECT * FROM student WHERE class = 1 "); echo "<tr>"; echo "<td colspan='3'>CLASS 1</td>"; echo "</tr>"; while($row = mysql_fetch_arrays($result)){ echo "<tr>"; echo "<td><input type='hidden' name='id' value='".$row['id']."' /></td>"; echo "<td>name :<input type='text' name='name' value='".$row['name']."' /></td>"; echo "<td>Sex :<input type='text' name='sex' value='".$row['sex']."' /></td>"; echo "<td>Age :<input type='text' name='age' value='".$row['age']."' /></td>"; echo "</tr>"; } echo "<input type='submit' name='update' value='UPDATE' />"; ?> <table> </form> <?php if(isset($_POST['update'])){ $id = $_POST['id']; $name= $_POST['name']; $sex = $_POST['sex']; $age = $_POST['age']; mysql_query(" UPDATE student SET name= '$name', sex='$sex', age='$age' WHERE id = '$id' "); header("location: update.php"); exit; } ?> 

modulo

È necessario utilizzare gli arrays di input. Quindi i tuoi input dovrebbero apparire come questo (notare l'attributo name):

 echo "<td>Sex :<input type='text' name='name[]' value='".$row['name']."' /></td>"; 

Quindi in PHP $ _POST ['name'] sarà un arrays:

 foreach($_POST['name'] as $name){ 

Spero che questo ti aiuti…

Dovresti creare il tuo sql in modo dinamico ed eseguire l'ultima frase di SQL. È ansible utilizzare un ciclo foreach per verificare tutti gli ID e aggiungere semplicemente each istruzione di aggiornamento a una variabile string. Puoi trovare un esempio qui: http://www.youtube.com/watch?v=ImirOX73atc

Devi cambiare il codice che gestisce i dati inviati in un ciclo, come

 <?php if(isset($_POST['update'])){ $i = 0; while(isset($_POST['row_'.$i.'_id')) { $row_id = $_POST['row_'.$i.'_id']; echo $row_id; // do update sql $i++; } } ?> 

e cambia anche la seguente row:

 <?php //Instead of //echo "<td><input type='hidden' name='id' value='".$row['id']."' /></td>"; echo "<td><input type='hidden' name='row_'.$i.'_id' value='".$row['id']."' /></td>"; ?> 

mentre anche iterando $ i nel ciclo while ottenete i risultati MySQL.

Oppure puoi utilizzare gli arrays di post come implicito in un'altra risposta.