Reception et envoi données liste déroulante

Eléphanteau du PHP | 27 Messages

04 août 2015, 17:46

Donc je me suis lancé et j'ai commencé par rajouter un "name" à mes <option> pour obtenir ceci :

Code : Tout sélectionner

$chaine .= '<OPTION NAME= "id_etat" VALUE="'.$ligne["id_eta"].'">'.$ligne["etat"].'</OPTION>';
et ceci :

Code : Tout sélectionner

$chaine2 .= '<OPTION NAME= "id_groupe" VALUE="'.$ligne["id_grp"].'">'.$ligne["groupe"].'</OPTION>';
Ensuite j'ai rajouté des balises form dans les colonnes de mon tableau dynamique comme ceci :

Code : Tout sélectionner

echo " <tr><td>". $row["genre"]."</td> <td>". $row["nom"]."</td> <td>". $row["prenom"]."</td> <td>". $row["age"]."</td> <td>". $row["ville"]."</td> <td><form method='post' action='update.php'><select id='".$ligne["id"]."' class='form-control'>". $chaine."</select></form></td> <td><form method='post' action='update.php'><select id='".$ligne["id"]."' class='form-control'>". $chaine2."</select></form></td> </tr> ";
et j'ai créé un fichier update pour envoyer mes données, qui metteront à jour ma table en changeant l'id et en attribuant un groupe comme cela (j'ai un petit doute sur l'écriture...)

Code : Tout sélectionner

<?php include ('connexion.php'); if (isset($_POST['id_etat']) AND isset($_POST['id_groupe'])) { $id_etat = htmlentities($_POST['id_etat']); $id_groupe = htmlentities($_POST['id_groupe']); } mysql_query ("UPDATE `testdevffrtest`.`ny6dh_man_eleve` SET `id_etat` = ' " .$id_etat. " ' AND `id_groupe` = ' " .$id_groupe. " ' WHERE `ny6dh_man_eleve`.`id` = ' " .$id. " ' "); } mysql_close(); ?>
Mon probléme (on change pas les habitudes) est que je n'arrive pas à placer un bouton submit dans la balise form et si je le met au bas du tableau, comment le lier aux 2 menus déroulant dupliqués x fois dans ma boucle...
De même pour l'envoi des données, bloqué à ce stade je ne peux pas tester et juste en ayant pris des infos par ci par là sur le net, l'écriture du fichier update.php me semble douteuse

Eléphanteau du PHP | 27 Messages

07 août 2015, 13:46

Des pistes ?? svpp

Eléphanteau du PHP | 27 Messages

07 août 2015, 14:08

Bon....j'ai trouvé comment envoyer sans boutton submit MAIS çà bloque lorsque je met en condition une varaiable, voici mon code :

Code : Tout sélectionner

<?php $sql = "SELECT id,id_etat,genre,nom,prenom,id_eta,etat,age,tel1,ville,mod_souhaite1,id_grp,groupe,id_groupe FROM `ny6dh_man_eleve` A, `ny6dh_man_groupe` B , `ny6dh_man_etat` C WHERE A.id_etat = 0 AND A.mod_souhaite1 = 1 AND B.id_grp = A.id_groupe AND A.id_etat = C.id_eta"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo " <tr><td>". $row["genre"]."</td> <td>". $row["nom"]."</td> <td>". $row["prenom"]."</td> <td>". $row["age"]."</td> <td>". $row["ville"]."</td> <td><form method='post' action='traitement.php'><select name='".$row["id"]."' onChange='this.form.submit()' class='form-control'>". $chaine."</select></form></td> <td><form method='post' action='traitement.php'><select name='".$row["id"]."' onChange='this.form.submit()' class='form-control'>". $chaine2."</select></form></td> </tr> "; } } else { echo "0 results"; } $conn->close(); ?>
et pour le fichier traitement.php :

Code : Tout sélectionner

<?php // on se connecte à notre base $base = xxxxxx; ?> <html> <head> <title>Modification de la position ID</title> </head> <body> <?php // on teste si les variables du formulaire sont déclarées if (isset($_POST["id_etat"]) && isset($_POST["id"])) { // lancement de la requête $sql = 'UPDATE ny6dh_man_eleve SET id_etat="'.$_POST["id_etat"].'" WHERE id="'.$_POST["id"].'"'; // on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die) mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error()); // on ferme la connexion à la base mysql_close(); // un petit message permettant de se rendre compte de la modification effectuée echo 'La position de ID '.$_POST["id"].' est : '.$_POST["id_etat"]; } else { echo 'Les variables du formulaire ne sont pas déclarées'; } ?> </body> </html>
(Test pour le changement de l'id, pour le groupe plus tard)......D'avance MERCI pour votre aide

ViPHP
xTG
ViPHP | 7331 Messages

07 août 2015, 14:38

Tu as un formulaire pour chaque champs.
Il ne t'en faut qu'un pour tous les champs de l'itération.
Déplaces tes balises form car ton fichier de traitement attends deux variables dans $_POST, je suppose que ce sont tes deux champs. ;)

Eléphanteau du PHP | 27 Messages

07 août 2015, 15:37

Merci pour cette réponse, j'ai donc englobé le tout dans 1 seul formulaire comme ceci :

Code : Tout sélectionner

echo " <tr><td>". $row["genre"]."</td> <td>". $row["nom"]."</td> <td>". $row["prenom"]."</td> <td>". $row["age"]."</td> <td>". $row["ville"]."</td> <td><form method='post' action='traitement.php'><select name='".$row["id"]."' onChange='this.form.submit()' class='form-control'>". $chaine."</select></td> <td><select name='".$row["id"]."' onChange='this.form.submit()' class='form-control'>". $chaine2."</select></form></td> </tr> ";
Mais.....rien! :!: :!:

Eléphanteau du PHP | 27 Messages

08 août 2015, 11:20

Tu as un formulaire pour chaque champs.
Il ne t'en faut qu'un pour tous les champs de l'itération.
Déplaces tes balises form car ton fichier de traitement attends deux variables dans $_POST, je suppose que ce sont tes deux champs. ;)
J'ai déplacé les balises form et mon fichier de traitement attentds 2 variables par champ :
_ Pour l'enregistrement, un id et un id_etat
_ Pour le groupe, un id et un id_grp

Pour l'instant je n'ai codé que l'enregistrement dans le fichier de traitement mais je ne comprends vraiment pas pourquoi rien ne se passe........

ViPHP
xTG
ViPHP | 7331 Messages

10 août 2015, 10:06

Tu as deux champs, donc deux name, mais avec la même valeur.
Cela ne peut donc pas fonctionner.
Pour rappel le name est l'index du $_POST.

Du coup si tu testes $_POST['toto'] et $_POST['tata'] tu dois avoir deux champs avec comme name toto et tata. ;)

Eléphanteau du PHP | 27 Messages

10 août 2015, 14:47

Merci pour cette réponse mais j'ai du mal à appliquer sur mon code car j'ai besoin de récupérer pour ces 2 champs :
_ l'ID de la personne concernée
_ le changement d'ID effectué par ces deux menus déroulant soit :
Pour l'enregistrement
Pour l'attribution d'un groupe
Donc où modifier mon code pour obtenir ce résultat sur mon fichier de base et sur le fichier traitement.php

Eléphanteau du PHP | 27 Messages

12 août 2015, 20:03

Merci mais j'ai beau y jeter un oeil je ne vois pas où cela cloche....