[RESOLU] récupérer et transmettre une variable dans un tableau

Petit nouveau ! | 7 Messages

03 juin 2013, 17:13

Bonjour à vous amis codeurs,

Je souhaite réaliser une liste de naissance dans laquelle la famille peut choisir un cadeau en sélectionnant une checkbox et en indiquant son nom (2 seuls champs obligatoires).
Malheureusement, je n'arrive pas à mettre à jour la colonne :"nom" dans ma base SQL. Celui-ci correspond au champ "donateur" du formulaire ci-dessous.
Ce champ est un tableau (à tord ou à raison) parce que le champ est reproduit plusieurs fois (autant de fois que de cadeau).
C'est a l'interieur de ce tableau (via un foreach que j'ai placé à différents endroits puis retiré car je ne l'ai utilisé que pour vérifier que la variable existait et passé du formulaire initial à celui de traitement) que je récupére le nom du donateur mais je ne parviens pas à l'isoler pour le transmettre a la base sql.

Vos idées, remarques, conseils sont les bienvenues.

D'avance merci, car ce souci est pire que les nouveaux nés pour le sommeil :-(

Voici le code du formulaire :

Code : Tout sélectionner

<form name="liste" method="post" action="reservation_liste.php"> <table class="bordure" > <tr> <td width="30%"> </td> <td width="10%"> </td> <td colspan="2" width="40%"> <br/><br/><br/> Inscrivez votre nom, ci-dessous, pour éviter les cadeaux doublons : </td> </tr> <!-- verification des cadeaux présents et sélectionés dans la BDD --> <?php $bd=connect_bd(); if($bd<>0) $query = "SELECT photo, quantite, cadeau, nom FROM alicia"; $trouve = mysql_query($query); //On classe les réponses dans un tableau. while ($donnees = mysql_fetch_array($trouve)) { $lien = $donnees["photo"]; ?> <!-- fin de verification des cadeaux présents et sélectionnés dans la BDD --> <tr> <td> <?php print ("<img src=\"$lien\" width=\"200\" height=\"200\" align=\"right\"/>"); ?> </td> <td width="10%" align="center"> <?php if (($donnees["quantite"])==0) echo "<input name=\"quantite\" type=\"checkbox\" value=\"".$donnees["cadeau"]."\"/>"; else echo ""; ?> </td> <td width="30%"> <?php echo $donnees["cadeau"];?> </td> <td width="30%"> <?php if (empty($donnees['nom'])) echo "<input name=\"donateur[]\" type=\"text\" />"; else echo $donnees['nom']; ?> </td> </tr> <?php } mysql_close(); ?> <!-- fin de liste de choix de cadeaux-->
et celui du fichier de traitement

Code : Tout sélectionner

$date_enregistrement = gmDate("Y-m-d\nH:i:s\n"); $quantite=$_POST['quantite']; $donateur=$_POST['donateur']; if ($_POST['valider']=="ok") { if (empty($quantite) || empty($donateur)) { if($quantite=="") print ("<div class=\"blanc\"><br/><br/><strong>Vous n'avez rien s&eacute;lectionn&eacute; ? <br/><br/>Cliquez sur pr&eacute;c&eacute;dent dans votre navigateur, ou sur le bouton, ci-dessous, pour revenir sur la page de liste de naissance</strong><br/><br/><a href=\"liste.php\"><img align=\"center\" src=\"http://www.alicia/images/bouton_orange.gif\"></a></strong></div>"); if ($donateur=="") print ("<div class=\"blanc\"><br/><br/><strong>Vous n'avez pas indiqu&eacute; votre nom ?<br/><br/>Cliquez sur pr&eacute;c&eacute;dent dans votre navigateur, ou sur le bouton, ci-dessous, pour revenir sur la page de liste de naissance.</strong><br/><br/><a href=\"liste.php\"><img text-align=\"center\" src=\"http://www.alicia/images/bouton_orange.gif\"></a></strong></div>"); } else { //connection à la base de données $bd=connect_bd(); if($bd<>0) { //insertion des données $selectcadeau = "UPDATE alicia SET quantite=1, nom='$donateur', mail='$mail', date_enregistrement='$date_enregistrement' WHERE cadeau='$quantite'"; $trans_cadeau = mysql_query($selectcadeau,$bd); // Requête SQL if((!$trans_cadeau)) { die('impossible d\'exécuter la requete :'.mysql_error()); } else { echo "<div class=\"blanc\"><br /><br /><strong>Merci ".$donateur.".<br/>Si vous avez renseign&eacute; une adresse email, vous allez recevoir un message de confirmation &agrave; l&#146;adresse communiqu&eacute;e ".$mail.".<br /><br />"; echo "<br /><br />Pour revenir sur la page d&acute;accueil du site d'Alicia, <a href=\"http://www.alicia\">cliquez ici</a><br /><br /><br />A bient&ocirc;t<br /><br /><br /></strong></div>"; mail($mail, $sujet1, $html1, $header); mail('alicia@alicia', $sujet, $html, $header); } } deconnect_bd($bd); } } else { echo '<div>Echec de l&#146;enregistrement, d&eacute;sol&eacute;</div>'; require("liste.php"); } ?>
Merci d'avance, à vous lire

Mammouth du PHP | 619 Messages

03 juin 2013, 17:25

Bonjour,

en effet il a un tableau dans le input mais pas de récupération du tableau a la récupération $donateur=$_POST['donateur'];

que veux tu faire ?

Petit nouveau ! | 7 Messages

03 juin 2013, 18:39

Je veux récupérer l'information postée par l'internaute, en l'occurence son nom, dans le champ donateur (dans le formulaire) pour l'insérer dans ma base sql dans la colonne 'nom'.
Je ne sais pas comment faire.

J'ai choisi de faire un tableau pour le champ donateur car il est utilisé plusieurs fois mais je ne sais si c'est la bonne option car je n'arrive pas à récupérer la valeur à l'intérieur du tableau pour la transmettre à la base.

j'attends tes conseils.

Merci d'avance

Mammouth du PHP | 619 Messages

03 juin 2013, 19:41

Re,

le nom sera toujours le même ou il peux changer d'un cadeau a l'autre ?

Petit nouveau ! | 7 Messages

03 juin 2013, 20:56

il peut changer selon le donateur et/ou selon le cadeau.
Il s'agit d'une liste de naissance alors une personne peut choisir plusieurs cadeaux ou qu'un seul.
reMerci de ton aide.

Mammouth du PHP | 619 Messages

03 juin 2013, 21:07

Re,

ok mais la personne entre une fois sont nom puis coche les cadeaux qui souhaite donc il a juste un nom pour plusieurs cadeaux

si oui retire juste ton tableau dans le input

exemple :

le visiteur 1

il arrive sur la page formulaire il entre son nom il coche les cadeaux qui souhaite et valide

le visiteur 2

fait la même chose

du coup le nom ne change jamais par formulaire

Petit nouveau ! | 7 Messages

04 juin 2013, 07:40

Bonne idée je t'en remercie.
Je vais essayer ca mais je vais continuer de chercher en parrallèle car cela semble fou de ne pouvoir transmettre à la base sql une variable dans un tableau.
je reviens vers toi (fin de matinée) pour te confirmer si ca marche ou pas.
D'ici là bonne journée.

Mammouth du PHP | 619 Messages

04 juin 2013, 07:59

Bonjour,

tu peux transmettre un tableau a php mais faut le traiter avant l'insert tu peux utilise implode par exemple cela dépend de comment tu veux stocker les variables dans ta base de données

je cherche juste a comprendre ce que tu souhaite faire pour pouvoir mieux d'aider

Petit nouveau ! | 7 Messages

04 juin 2013, 13:46

Bon, j'ai modifié mon formulaire pour n'avoir qu'un seul champ : "donateur".

Maintenant, c'est mon update qui déconne... :cry:
La base sql ne se met pas à jour alors que la variable "donateur" est reconnue...
A force de travailler dessus, quelque chose a du m'échapper...
peut être du coté du where...
Modifié en dernier par souricette04 le 04 juin 2013, 22:04, modifié 1 fois.

Mammouth du PHP | 619 Messages

04 juin 2013, 15:53

Bonjour,

pour les updates vos mieux utilise l'id mets un champ hidden avec 'id

Petit nouveau ! | 7 Messages

04 juin 2013, 21:28

pourquoi un champ "hidden" et à quoi correspond l'id ?
Je n'utilise les champs hidden que pour les boutons de validation, peux tu m'en dire plus sur ton idée ?
Merci

Petit nouveau ! | 7 Messages

04 juin 2013, 22:03

Eureka, j'ai trouvé...
En fait l'update ne se faisait pas à cause des accents !
En effet, ma condition est que la valeur de la checkbox corresponde au libellé du cadeau et cela ne correspondait pas à cause des caractères spéciaux pour les accents !!!
Merci à toi Ghost d'avoir cherché avec moi.