Formulaire HTML et PHP Boucle foreach

hx.jonathan
WRInaute discret
WRInaute discret
 
Messages: 162
Inscription: 2 Mar 2005

Formulaire HTML et PHP Boucle foreach

Message le Sam Oct 17, 2009 13:45

Salut à tous, :D

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 :D

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2685
Inscription: 13 Fév 2004

Re: Formulaire HTML et PHP Boucle foreach

Message le Sam Oct 17, 2009 14:14

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.

Sullyvan
WRInaute discret
WRInaute discret
 
Messages: 90
Inscription: 20 Mai 2008

Re: Formulaire HTML et PHP Boucle foreach

Message le Dim Oct 18, 2009 16:22

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:
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/>';
           }     
      }

}


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité