Reception et envoi données liste déroulante

Eléphanteau du PHP | 27 Messages

01 août 2015, 16:08

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

Mammouth du PHP | 688 Messages

01 août 2015, 16:24

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 ?

Eléphanteau du PHP | 27 Messages

01 août 2015, 18:26

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.

Eléphanteau du PHP | 27 Messages

01 août 2015, 19:15

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

Eléphant du PHP | 243 Messages

02 août 2015, 17:41

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> ";
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

Eléphanteau du PHP | 27 Messages

03 août 2015, 00:23

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

Eléphanteau du PHP | 27 Messages

03 août 2015, 11:20

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.

Eléphanteau du PHP | 27 Messages

03 août 2015, 16:12

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?

Mammouth du PHP | 688 Messages

03 août 2015, 16:20

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.

Eléphanteau du PHP | 27 Messages

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

Mammouth du PHP | 688 Messages

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.

Eléphanteau du PHP | 27 Messages

03 août 2015, 18:32

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

Eléphanteau du PHP | 27 Messages

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 ...

Eléphant du PHP | 243 Messages

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.
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

Eléphanteau du PHP | 27 Messages

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