Bonjour,
1- inutile d'utiliser une variable $i, alors qu'on a déjà un identifiant unique pour chaque ligne : $donnees['id'] !
2- séparer le code PHP du code HTML rend le script plus clair
3- et aussi : bien structurer la table HTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| <?php
$sql = "SELECT * FROM utilisateur ORDER BY nom ASC, prenom ASC;";
$req = mysqli_query($co, $sql);
?>
<form action="updateuser.php" method="post" id="users">
<table border="0">
<thead>
<tr>
<th>Nom</th>
</tr>
<tr>
<th>Prénom</th>
</tr>
<tr>
<th>Civilité</th>
</tr>
</thead>
<tbody>
<?php
while($donnees = mysqli_fetch_array($req))
{
?>
<tr>
<td><input type="text" name="nom[<?php echo $donnees['id']; ?>]" value="'.$donnees['nom'].'" required="required" /></td>
</tr>
<tr>
<td><input type="text" name="prenom[<?php echo $donnees['id']; ?>]" value="'.$donnees['prenom'].'" required="required" /></td>
</tr>
<tr>
<td>
<input type="radio" name="civilite[<?php echo $donnees['id']; ?>]" value="Monsieur"<?php ($donnees['civilite']=='Monsieur')? 'checked="checked"':''; ?>" required="required" />
<input type="radio" name="civilite[<?php echo $donnees['id']; ?>]" value="Madame"<?php ($donnees['civilite']=='Madame')? 'checked="checked"':''; ?>" required="required" />
</td>
</tr>
<?php
}
?>
</tbody>
</table>
<input type="submit" name="valider" value="OK" />
</form> |
N.B. Il est préférable d'écrire name="nom[xxx]" (avec des crochets) plutôt que name="nom_xxx".
1- Avec name="nom_xxx", il faudrait boucler :
1 2 3 4 5
|
for( $i=1; $i< ?????; $i++ ) // on NE connais PAS le nombre total !
{
$recup_name[$i] = $_POST['nom_'.$i];
} |
Pas bon.
D'autant qu'on ne récupère pas l'id (index auto-incrémenté) de l'enregistrement !!
2- Alors qu'avec name="nom[xxx]", la récupération se fait en une seule fois :
$recup_nom = $_POST['nom']; // ceci est un array contenant toutes les valeurs
On récupère aussi facilement chaque ligne, avec son id.
1 2 3 4 5 6 7 8 9
| foreach( $recup_nom as $index => $val) // pour chaque ligne
{
$id = $index; // $id est l'id (auto-incrément) de la ligne concernée
$nom = $val; // équivalent à $_POST['nom'][$id];
$prenom = $_POST['prenom'][$id];
$civilite = $_POST['civilite'][$id];
// Traitement de la ligne
// .........
} |
Partager