[RESOLU] formulaire : enregistrer plusieurs personnes

mohi
Invité n'ayant pas de compte PHPfrance

22 janv. 2016, 21:13

Bonjour,

J'ai un formulaire avec les champs noms, prenom, email qui permet d'enregistrer des personnes dans une BDD MySql. Un Select permet de choisir le nombre de personne que l'on veut ajouter d'un seul coup. Par exemple, si l'on choisit 2, il va y avoir 2 champs nom, 2 champs prénom et 2 champs email qui vont apparaître.

Je n'arrive pas à récupérer les informations de ces différents champs.
Le formulaire appelé en JS qui fait apparaître X champs :

Code : Tout sélectionner

for (i = 1; i <= nbrePersonne; i++) { formPersonne.innerHTML += "<div id='boxPersonne"+i+"'>"+ "<input type='text' id='nom' placeholder='Nom*' onblur='verifNom(this)' name='tableau[" + i + "][1]' required> "+ "<input type='text' id='prenom' placeholder='Prénom*' name='tableau[" + i + "][2]' onblur='verifNom(this)' required> "+ "<input type='text' id='email' placeholder='Email*' name='tableau[" + i + "][3]' onblur='verifMail(this)' required>"+ "</div> <div align='right'> *Champs obligatoires </div>"; }

J'ai essayé plusieurs choses coté PHP pour récupérer les valeurs mais j'ai un peu de mal à parcourir le tableau correctement. Voici mon code qui n'est pas correct (j'ai testé et je récupère bien le tableau coté PHP) :

Code : Tout sélectionner

$i = 0; foreach($_POST['tableau'] as $key=>$value){ foreach($value as $cle=>$valeur){ $wpdb->insert( 't_inscription', array( 'nom' => $valeur[$i][1], 'prenom' => $valeur[$i][2], 'email' => $valeur[$i][3], ), array( '%s', '%s', '%s', ) ); } $i++; }
Merci pour votre aide !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

23 janv. 2016, 00:09

Bonjour,

Pour debuguer un formulaire, il y a 2 façons qui sont complémentaires :
1) Vérifier que les données du formulaires sont bien envoyées par ton navigateur :
Dans Chrome ou Firefox, fais un Ctrl+Maj+i => onglet réseau
et regarde ce qui est envoyé en paramètre pour voir si tes variables sont correctement envoyées.

2) Vérifier que les données du formulaire sont bien reçues par PHP
Fais un var_dump($_POST); au début de ta page PHP qui fait le traitement et éventuellement une deuxième fois au moment où tu effectues le traitement dans ta page.
Quand tout le reste a échoué, lisez le mode d'emploi...

mohi
Invité n'ayant pas de compte PHPfrance

23 janv. 2016, 09:56

Merci, ça m'a bien aidé et ça fonctionne :)


Si quelqu'un a besoin voici mon code :
Code JS :

Code : Tout sélectionner

nombre_personne:2 for (i = 1; i <= nbrePersone; i++) { formPersonne.innerHTML += "<div id='boxPersonne"+i+"'>"+ "<input type='text' id='nom' placeholder='Nom*' onblur='verifNom(this)' name='tableau[" + i + "][1]' required> "+ "<input type='text' id='prenom' placeholder='Prénom*' name='tableau[" + i + "][2]' onblur='verifNom(this)' required> "+ "<input type='text' id='email' placeholder='Email*' name='tableau[" + i + "][3]' onblur='verifMail(this)' required>"+ "</div> <div align='right'> *Champs obligatoires </div>"; }
Mon nouveau code PHP :

Code : Tout sélectionner

foreach($_POST['tableau'] as $key=>$value){ foreach($value as $cle=>$valeur){ if($cle==1){ $nom = $valeur; } if($cle==2){ $prenom = $valeur; } if($cle==3){ $email = $valeur; } } $wpdb->insert( 't_inscription', array( 'nom ' => $nom , 'prenom ' => $prenom , 'email ' => $email ), array( '%s', '%s', '%s' ) ); }