Formulaire HTML et PHP Boucle foreach
3 messages
• Page 1 sur 1
- hx.jonathan
- WRInaute discret

- Messages: 162
- Inscription: 2 Mar 2005
Formulaire HTML et PHP Boucle foreach
Salut à tous, 
Mon problème est assez classique mais je ne trouve pas d'exemple clair et bien expliqué pour me sortir de là. Voici donc le but :
je créer une galerie photos avec des albums.
Le formulaire qui me pose problème est celui permettant à l'utilisateur de modifier le nom des albums.
J'affiche donc un formulaire avec un input pour le nouveau nom (name='data[nouveaunom]') ET un input HIDDEN pour le nom actuel.
Sur la même page j'aimerais donc récupérer le couple ancien nom - nouveau nom en faisant une boucle.
Voici à quoi ressemble mon formulaire
Et voici comment j'essaie de récupérer mes valeurs :
2 questions :
1) est-ce que la manière dont je note data[] dans mon formulaire est correcte pour la récupération des données
2) comment dois-je procéder au niveau des boucles foreach ?
D'avance merci à tous.
John
Mon problème est assez classique mais je ne trouve pas d'exemple clair et bien expliqué pour me sortir de là. Voici donc le but :
je créer une galerie photos avec des albums.
Le formulaire qui me pose problème est celui permettant à l'utilisateur de modifier le nom des albums.
J'affiche donc un formulaire avec un input pour le nouveau nom (name='data[nouveaunom]') ET un input HIDDEN pour le nom actuel.
Sur la même page j'aimerais donc récupérer le couple ancien nom - nouveau nom en faisant une boucle.
Voici à quoi ressemble mon formulaire
- Code: Tout sélectionner
echo '<FORM method="POST" action="Admin.php?page=galerie_001_02">';
$affnom = mysql_query("SELECT * FROM Album ORDER BY id_album")or die(mysql_error());
while($row4 = mysql_fetch_array($affnom)){
$album_name=$row4['album_name'];//Ancien nom avec accent
$ancien_nom_modifie=$row4['album_dossier'];//Ancien nom MODIFIE caractères spéciaux
echo'<p>Nom actuel : " <strong> '.$album_name.'</strong> " Nouveau nom : <INPUT type="text" name="data[nouveaunom][]" size=30></input><INPUT type="hidden" name="data[nomactuel][]" size=30 value='.$album_name.'></input></p>';
}
echo '<p><INPUT type="submit" value="Confirmer"></p>';
echo '</FORM>';
Et voici comment j'essaie de récupérer mes valeurs :
- Code: Tout sélectionner
if(isset($_POST))
{
foreach($_POST['data']['nouveaunom'] as $index=>$nouveaunom)
{
if(!empty($nouveaunom))
{
echo $nouveaunom.' - ';
foreach($_POST['data']['nomactuel'] as $index2=>$valeur_actuel)
{
echo $valeur_actuel;
echo '<br/>';
}
}
}
}
2 questions :
1) est-ce que la manière dont je note data[] dans mon formulaire est correcte pour la récupération des données
2) comment dois-je procéder au niveau des boucles foreach ?
D'avance merci à tous.
John
- jcaron
- WRInaute accro

- Messages: 2685
- Inscription: 13 Fév 2004
Re: Formulaire HTML et PHP Boucle foreach
Pas un pro du php, donc je ne sais vraiment pas si les notations xxx[toto][] ou xxx[][toto] dans les noms des champs sont supportées, et j'ai la flemme d'aller vérifier, mais tu sais, toute la doc de php est en ligne sur www.php.net 
La solution qui me semble la plus simple (et la plus sûre), c'est de numéroter tes champs. Genre nouveau_nom_1, nouveau_nom_2, etc. et pareil pour ancien_nom. Encore mieux, utilise l'id (id_album), comme ça tu n'as même pas besoin de mettre le champ hidden, et tu vas t'éviter toutes sortes de problèmes par la suite. Donc '<input type="text" name="nouveau_nom_'.$id_album.'">' etc. Et tu fais la même boucle lors du traitement du formulaire que lors de son affichage...
Jacques.
La solution qui me semble la plus simple (et la plus sûre), c'est de numéroter tes champs. Genre nouveau_nom_1, nouveau_nom_2, etc. et pareil pour ancien_nom. Encore mieux, utilise l'id (id_album), comme ça tu n'as même pas besoin de mettre le champ hidden, et tu vas t'éviter toutes sortes de problèmes par la suite. Donc '<input type="text" name="nouveau_nom_'.$id_album.'">' etc. Et tu fais la même boucle lors du traitement du formulaire que lors de son affichage...
Jacques.
- Sullyvan
- WRInaute discret

- Messages: 90
- Inscription: 20 Mai 2008
Re: Formulaire HTML et PHP Boucle foreach
bonjour, la syntaxe du formulaire est correcte, par contre au niveau du php si tu fais comme tu as mis tu vas afficher tous les nouveaux nom pour tous les anciens.. (genre ancien1 - nouveau1 nouveau2 nouveau xx, ancien2 nouveau 1 nouveau 2 nouveau xx).
Ce qu'il faut faire c'est une seule boucle foreach et utiliser l'index de ancien pour trouver le nouveau correspondant, ça donnerais un code comme ça:
Ce qu'il faut faire c'est une seule boucle foreach et utiliser l'index de ancien pour trouver le nouveau correspondant, ça donnerais un code comme ça:
- Code: Tout sélectionner
if(isset($_POST))
{
foreach($_POST['data']['nouveaunom'] as $index=>$nouveaunom)
{
if(!empty($nouveaunom))
{
echo $nouveaunom.' - '.$_POST['data']['nomactuel'][$index'];
echo '<br/>';
}
}
}
3 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- controle d'une boucle foreach
- Boucle Infini Index.html --> Index.php - URGENT !
- Formulaire HTML/PHP - champs obligatoires
- php Foreach imbriqués
- PHP: Récupérer valeur array 2 dim d'un formulaire HTML
- PHP: récupérer valeur de deux $_POST avec foreach
- boucle d'ajout en plusieurs endroit dans un fichier HTML
- Boucle PHP et variables
- Boucle(pas=5)en php??
- Boucle avec php
- Google API : guide de développement de l'API Google - 20-09-2002
- Recherche dans l'actualité WebRankInfo - 22-10-2005
- MSN HRS : des éditeurs de MSN évaluent la qualité des sites web - 02-12-2005
- La syndication de contenu : afficher un flux RSS sur son site - 28-06-2004
- Google se lance dans la recherche de blogs - 14-09-2005
- L'annuaire WebRankInfo référence les profils des réseaux sociaux - 11-01-2010
- Référencement : le problème des sessions des pages PHP - 04-08-2008
- Suivre le Tour de France 2008 avec Google Street View - 03-07-2008
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
