Farei cosi.

Codice PHP:

<form method="post" action="pagina_destino.php">
 <?php
 $i 
0;
 
$query$c -> prepare ("SELECT * FROM elenco");
 
$query -> execute();
 while(
$r $query -> fetch()){
 
$i++;
 echo 
'
 <div>
 <input type="hidden" name="id_$i" value="'
.$r['id'].'">
 <input type="text"   name="val1_$i" value="'
.$r['val1'].'">
 <input type="text"   name="val2_$i" value="'
.$r['val2'].'">
 <input type="text"   name="val3_$i" value="'
.$r['val3'].'">
 </div>'
;
 }
 
?>
 <input type="hidden" name="righe" value="$i">
 <input type="submit" name="submit" value="Salva">
 </form>

pagina_destino.php. Non ho scritto tutto il/in codice php.
Codice PHP:

<?php 
$righe 
$_POST['righe'];
for (
$i=1;$i<=$righe;$i++) {
 
$val1 $_POST["val1_$i"];
 ...
 
$id   $_POST["id_$i"];
 ...
 
update tabella set val1 $val1 .... where id $id


 
?>