Page 1 sur 2

Reception et envoi données liste déroulante

Posté : 01 août 2015, 16:08
par owenn
Bonjour à tous,

J'ai un menu déroulant dont je souhaite dans un premier temps, afficher des variables et dans un second temps envoyer la valeur sélectionnée vers ma base de donnée...malgrés avoir consulté plusieurs tuto et forum je suis un peut perdu...

Voici mon menu déroulant :

Code : Tout sélectionner

<select name="choix"> <option value="choix1">Choix 1</option> <option value="choix2">Choix 2</option> <option value="choix3">Choix 3</option> <option value="choix4">Choix 4</option> </select>
Le petit soucis est que je souhaite intégrer cette boucle dans une boucle existante :

Code : Tout sélectionner

..... </div><!-- /.box-header --> <div class="box-body"> <table id="example1" class="table table-bordered table-striped"> <thead> <tr> <th>Genre</th> <th>Nom</th> <th>Prénom</th> <th>Age</th> <th>Ville</th> </tr> </thead> <tbody> <?php $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"; $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></tr> "; } } else { echo "0 results"; } $conn->close(); ?> </tbody> <tfoot> <tr> <th>Genre</th> <th>Nom</th> <th>Prénom</th> <th>Age</th> <th>Ville</th> </tr> </tfoot> </table> </div><!-- /.box-body --> </div><!-- /.box -->
Je suis un peu perdu, merci

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

Posté : 01 août 2015, 16:24
par tof73
ce que tu veux faire n'est pas clair.
tu veux pouvoir choisir une entrée dans la liste déroulante, et que cela affiche seulement les données de ny6dh_man_eleve correspondant à cette entrée au lieu de toutes les entrées ?

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

Posté : 01 août 2015, 18:26
par owenn
Je me suis sans doute mal expliqué....le premier code est une liste déroulante dont je veux rendre dynamique et que l'élément sélectionné dans cette liste puisse alimenter ma base de donnée.

Dans un second temps, intégrer cette liste dynamique dans mon second code qui lui est un tableau dynamique....je ne sais pas si c'est clair.

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

Posté : 01 août 2015, 19:15
par owenn
En résumé mon tableau affiche des lignes en dynamique et je souhaite ajouter pour chacune de ces lignes un menu déroulant (lui aussi dynamique) et permettant de valider chaque ligne en changeant l'id.....ainsi les lignes validées n'apparaissent plus puisque l'id est différent de 0.

Donc j'essaie de faire par étape, c'est à dire :
_ Créer un menu déroulant dynamique
_ Insérer ce nouvel élèment dans chaque ligne de mon tableau existant, qui lui aussi est dynamique
_ Faire en sorte que lorsque je sélectionne un élément du menu déroulant, l'id de la ligne est changée....
Pour l'instant je suis coincé à la première étape....je sais pas si cela changera quelque chose mais en réalité je souhaite mettre 2 menu déroulant dynamique et indépendant l'un de l'autre pour chaque ligne du tableau

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

Posté : 02 août 2015, 17:41
par Ascla
Salut,
Tu as l'air de savoir ce que tu veux mais où est-ce que tu bloques ?
Commence par intégrer tes inputs dans les lignes du tableau. En gros, il faut que tu mettes ton <select>....</select> dans l'echo de chaque colonne.
Si je suis complètement HS, dit le moi ;)
En bref voici un exemple en code :
echo " <tr><td><select name='genre'>
    <option value='". $row["genre"]."'>". $row["genre"]."</option>
    <option value='choix2'>Choix 2</option>
    <option value='choix3'>Choix 3</option>
    <option value='choix4'>Choix 4</option>
</select></td>
          <td><select name='nom'>
    <option value='". $row["nom"]."'>". $row["nom"]."</option>
    <option value='choix2'>Choix 2</option>
    <option value='choix3'>Choix 3</option>
    <option value='choix4'>Choix 4</option>
</select></td>
          <td><select name='prenom'>
    <option value='". $row["prenom"]."'>". $row["prenom"]."</option>
    <option value='choix2'>Choix 2</option>
    <option value='choix3'>Choix 3</option>
    <option value='choix4'>Choix 4</option>
</select></td>
          <td><select name='age'>
    <option value='". $row["age"]."'>". $row["age"]."</option>
    <option value='choix2'>Choix 2</option>
    <option value='choix3'>Choix 3</option>
    <option value='choix4'>Choix 4</option>
</select></td>
          <td><select name='ville'>
    <option value='". $row["ville"]."'>". $row["ville"]."</option>
    <option value='choix2'>Choix 2</option>
    <option value='choix3'>Choix 3</option>
    <option value='choix4'>Choix 4</option>
</select></td></tr> ";

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

Posté : 03 août 2015, 00:23
par owenn
Merciiii...même si ce n'est pas tout à fait cela mais juste 2 nouvelles colonnes avec deux menus déroulant et dynamique, là les choix sont en "dur" et cela me gêne car ce modéle va être dupliqué de multiples fois et modifié...donc si vous avez d'autre propositions

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

Posté : 03 août 2015, 11:20
par owenn
Pour expliquer encore plus en détail, toutes mes colonnes dans mon tableau initial sont nikel donc rien à changer puisqu'elles parcoure chacunes ma table pour m'afficher les identitées de chaques personnes dites "non enregistrées" et en id_etat=0 et qui n'ont pas encore de groupe.
Donc ce que j'essaie de faire et d'ajouter à chaque ligne 2 menu déroulant qui parcourent ma table etat et ma table group, donc en dynamique et non en dur.

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

Posté : 03 août 2015, 16:12
par owenn
J'ai réussi à bidouiller un petit truc mais mes résultats sont obtenus séparemment, c'est à dire :

Les 2 menus déroulants :

Code : Tout sélectionner

<FORM method="post" action="cible2.php"> <SELECT name="liste_materiel"> <?php $host = "****.mysql.db"; $user = "****"; $pass = "****"; $bdd = "****"; // connexion $cnx = mysql_connect($host,$user,$pass) or die("Impossible de se connecter"); $db = mysql_select_db("$bdd") or die("Impossible de se connecter"); if (mysql_connect ($host,$user,$pass)) { echo 'Connexion réussie'; echo '<br>'; } else { echo 'Connexion impossible...'.mysql_error(); echo '<br>'; } $requete2="SELECT id_grp,groupe FROM `ny6dh_man_groupe`"; $result2=mysql_query($requete2); while ($ligne=mysql_fetch_array($result2)) { echo '<OPTION VALUE="'.$ligne["id_grp"].'">'.$ligne["id_grp"].'</OPTION>'; } ?> </SELECT> <input type="submit" value="Valider" /><br /> </FORM>


Et

Code : Tout sélectionner

<FORM method="post" action="cible2.php"> <SELECT name="liste_materiel"> <?php $host = "****.mysql.db"; $user = "****"; $pass = "****"; $bdd = "****"; // connexion $cnx = mysql_connect($host,$user,$pass) or die("Impossible de se connecter"); $db = mysql_select_db("$bdd") or die("Impossible de se connecter"); if (mysql_connect ($host,$user,$pass)) { echo 'Connexion réussie'; echo '<br>'; } else { echo 'Connexion impossible...'.mysql_error(); echo '<br>'; } $requete2="SELECT id_eta,etat FROM `ny6dh_man_etat`"; $result2=mysql_query($requete2); while ($ligne=mysql_fetch_array($result2)) { echo '<OPTION VALUE="'.$ligne["id_eta"].'">'.$ligne["etat"].'</OPTION>'; } ?> </SELECT> <input type="submit" value="Valider" /><br /> </FORM>
Mais en terme de codage c'est un peu trop amateur et je lance 2 connexion à la suite à la base!

Donc comment faire pour simplifier ces 2 nouveaux menus déroulant sachant que mon fichier connexion.php est de ce format :

Code : Tout sélectionner

<?php $servername = "****.mysql.db"; $username = "****"; $password = "****"; $dbname = "****"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } ?>
Et comment les intégrer à mon premier tableau?

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

Posté : 03 août 2015, 16:20
par tof73
il n'y a pas de variable à tes requetes sql, donc si tu veux quand même que cela soit dynamique, au lieu d'afficher la ligne <option> avec un echo, tu ajoutes l'option à una variable : $chaine .= '<OPTION VALUE="'.$ligne["id_eta"].'">'.$ligne["etat"].'</OPTION>';
ensuite, dans ton code, tu n'a plus qu'à afficher le <select> puis ta variable $chaine puis </select>

cela évite de refaire une requete qui est en fait toujours la même dans une boucle de parcours de résultats.

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

Posté : 03 août 2015, 17:15
par owenn
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

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

Posté : 03 août 2015, 18:22
par tof73
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

Posté : 03 août 2015, 18:32
par owenn
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

Posté : 03 août 2015, 23:47
par owenn
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

Posté : 04 août 2015, 15:36
par Ascla
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

Posté : 04 août 2015, 16:23
par owenn
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