Salut
Même si le formulaire d'update simple fonction, il y a une petite erreur, un petit détail qui n'est pas correcte.
Tu fais une boucle while, or, logiquement un country_id est unique, donc il ne peu avoir que 2 alternatives :
- soit la requête renvoie rien car le $_GET['id_country'] est incorecte, donc 0 ligne.
- soit le $_GET['id_country'] est correcte alors on obtiendra qu'une seule et unique ligne.
Dans les 2 cas une boucle est inutile.
$rows=mysql_fetch_array($result);
Ceci suffit.
Je rajouterais qu'utiliser $row comme nom est franchement pas intuitif du tout.
Vu que ce sont des "country", $country aurait largement mieux.
Rend ton code plus compréhensible, tu te remercieras lors des débogages. 
Mise à part ces petites parenthèses, essai dans ce sens là pour le formulaire multiple :
1 2 3 4
|
echo '<input name="country['.$country['id_country'].'][name_country]" type="text" value="'.$country['name_country'].'" />';
echo '<input name="country['.$country['id_country'].'][id_group]" type="text" value="'.$country['id_group'].'" />';
... etc ... |
Du coup, tu n'as pas besoin de champ caché, l'Identifiant fait parti du nom, c'est ça qui va permettre de retrouver ces petits.
Au bout, on devrait obtenir un dans $_POST un tableau "country".
Exploite une boucle foreach() sur $_POST['country'] et tu devrais obtenir les valeur comme name_country, id_group, etc ... pour chaque id_country.
En tout cas, il ne faut pas faire comme ceci : "country[]" car dans la même boucle le navigateur va incrémenter les autres éléments automatiquement, ce qui devient quasi impossible de les retrouver après validation.
Il faut donc soit même indiquer un identifiant, et le même pour tous les éléments, le changer uniquement à la boucle suivante (à tour de boucle).
Il est là le principe. 
Autre point.
Tu prévois dans le déroulement de ton code de faire l'UPDATE à la fin, en dernier.
Tu fais un amalgame entre le déroulement du code HTML et celui de Php.
Il est largement mieux de faire l'UPDATE avant tout éléments HTML, par conséquent avant d'afficher le formulaire.
Par la même occasion, ça t'évitera de faire un "meta/refresh" qui franchement, est loin d'être très ergonomique.
Faut exploiter la fonction Php header(), elle est faite pour ça.
D'ailleurs, le fait d'afficher le contenu du formulaire avant de faire la mise à jour, ça veut dire que ce que l'on voit ne sera pas synchro, les valeurs affchées sont toujours les ancienne.
A l'inverse, faire l'UPDATE en 1er fera qu'après, les valeurs récupérées/affichées auront les même valeurs que celle mise à jour juste avant.
Toujours est il que lors de la validation du formulaire, le contenu de $_POST ser disponible dès la toute 1ère ligne de code de cette page, donc on peu l'exploiter dès cet instant.
Donc coté déroulement / chronologie, il serait mieux de faire :
1/ SI $_POST['button'] (donc SI faut faire un UPDATE) -> alors on le fait de suite.
D'ailleurs, ça laissera tout le loisir de détecter une erreur, et éventuellement stcker le message dans une variable ou tableau Php pour l'exploiter plus tard.
Ou inversement, avertir que la mise à jour a bien été effectuée.
Et dernièrement, on pourra faire une redirection (header) sans aucun problème si nécessaire.
2/ On récupère les données (SELECT). Les données seront alors synchro (qu'il y ait eu ou pas d'UPDATE précédemment).
3/ On génère la page HTML (doctype/formulaire).
Ici, s'il y a eu un message, on peu l'afficher là où on veut, et de la mise en forme qu'on veut.
Partager