Reception et envoi données liste déroulante

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Reception et envoi données liste déroulante

Re: Reception et envoi données liste déroulante

par owenn » 12 août 2015, 20:03

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

Re: Reception et envoi données liste déroulante

par owenn » 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

Re: Reception et envoi données liste déroulante

par xTG » 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. ;)

Re: Reception et envoi données liste déroulante

par owenn » 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........

Re: Reception et envoi données liste déroulante

par owenn » 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! :!: :!:

Re: Reception et envoi données liste déroulante

par xTG » 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. ;)

Re: Reception et envoi données liste déroulante

par owenn » 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

Re: Reception et envoi données liste déroulante

par owenn » 07 août 2015, 13:46

Des pistes ?? svpp

Re: Reception et envoi données liste déroulante

par owenn » 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

Re: Reception et envoi données liste déroulante

par owenn » 04 août 2015, 16:23

Oui ma premiére étape est d'envoyer les différentes sélections du menu déroulant pour chaque ligne à ma base de donnée....si vous avez un petit tuto là dessus car je parcours le net en vain

Re: Reception et envoi données liste déroulante

par Ascla » 04 août 2015, 15:36

donc maintenant je me retrouve avec le résultat escompté, c'est à dire deux menus déroulant dans chaque ligne mais maintenant je dois pouvoir envoyer les valeurs à ces deux nouveaux champs...j'ai trouvé sur un forum une methode permettant d'envoyer lorsque l'on selectionne (donc sans boutton submit) et un autre forum qui explique la méthode POST....mais j'avoue que là aussi je galére pas mal puisque la value est donc la variable d'une précédente requête et que je dois aussi récupérer l'id de chaque ligne ...
Que cherches-tu a faire ?
Si tu souhaites envoyer des informations avec Javascript, c'est super simple. Il faudra utiliser les requêtes AJAX. En gros le Javascript va appeler une page php externe en envoyant des données si il le faut, et enfin, la page renverra une réponse au Javascript. Si tu veux plus de détails dessus, n'hésite pas.

Re: Reception et envoi données liste déroulante

par owenn » 03 août 2015, 23:47

C'est bon! merciiii J'ai réussi (cette partie lol)....
Ce qui donne :

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><select class='form-control'>". $chaine."</select></td> <td><select class='form-control'>". $chaine2."</select></td> </tr> ";
donc maintenant je me retrouve avec le résultat escompté, c'est à dire deux menus déroulant dans chaque ligne mais maintenant je dois pouvoir envoyer les valeurs à ces deux nouveaux champs...j'ai trouvé sur un forum une methode permettant d'envoyer lorsque l'on selectionne (donc sans boutton submit) et un autre forum qui explique la méthode POST....mais j'avoue que là aussi je galére pas mal puisque la value est donc la variable d'une précédente requête et que je dois aussi récupérer l'id de chaque ligne ...

Re: Reception et envoi données liste déroulante

par owenn » 03 août 2015, 18:32

Peux tu m'aider pour la rédaction du code car j'ai un peu de mal....

Re: Reception et envoi données liste déroulante

par tof73 » 03 août 2015, 18:22

non, tu commences par
$requete2="SELECT id_eta,etat FROM `ny6dh_man_etat`";
tu boucles sur tous les résultats pour les mettre dans la chaine.
idem pour l'autre table d'etat

ensuite, tu fais l'autre requete
$sql = "SELECT id,id_etat,genre,nom,prenom,age,tel1,ville,mod_souhaite1,id_grp,groupe,id_groupe
FROM `ny6dh_man_eleve` A, `ny6dh_man_groupe` B
WHERE A.id_etat = 0
AND A.mod_souhaite1 = 1
AND B.id_grp = A.id_groupe";
et tu affiches les 2 variables au bon endroit.

Re: Reception et envoi données liste déroulante

par owenn » 03 août 2015, 17:15

Comme ceci?

Code : Tout sélectionner

if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { $chaine .= '<OPTION VALUE="'.$ligne["id_eta"].'">'.$ligne["prenom"].'</OPTION>'; echo " <tr><td>". $row["genre"]."</td> <td>". $row["nom"]."</td> <td>". $row["prenom"]."</td> <td>". $row["age"]."</td> <td>". $row["ville"]."</td> <td><select>".$chaine."</select></td></tr> ";
Mais je dois afficher tous les états de la table or la requete sql récupére qu'un seul etat