[RESOLU] Liste deroulante dynamique avec base MYSQL

Mirrix
Invité n'ayant pas de compte PHPfrance

20 sept. 2011, 15:31

Bonjour

Alors voila, j'ai une base de donnée avec une table. Cette table possède plusieurs champs et j'aimerai faire plusieurs liste deroulante, l'une dependant de la precedante. Les données de la liste deroulante sans a prendre dans la base de donnée.

J'aimerais savoir comment faire, car j'ai regardé partout sur le net et a chaque fois c'est une base de donnée avec 2 tables, pas une seule.
Peut etre que c'est plus facile dans mon cas mais j'ai pas trouvé.

Merci d'avance.

PS : Voila mon code pour le moment :

Code : Tout sélectionner

<!-- Liste deroulante MYSQL --> <FORM method="post" action="cible2.php"> <SELECT name="liste_materiel"> <?php $host = "127.0.0.1"; $user = "Benoit"; $pass = "mikrou"; $bdd = "config_reseaux"; // 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 DISTINCT type_materiel FROM bdd"; $result2=mysql_query($requete2); while ($ligne=mysql_fetch_array($result2)) { echo '<OPTION VALUE="'.$ligne["type_materiel"].'">'.$ligne["type_materiel"].'</OPTION>'; } ?> </SELECT> <input type="submit" value="Valider" /><br /> </FORM>
Apres en cliquant sur valider j'ouvre une nouvelle page similaire ou il y le meme code sauf que je change la selection dans ma base de donnée

Code : Tout sélectionner

<!-- Liste deroulante MYSQL --> <FORM method="post" action="cible2.php"> <SELECT name="liste_lieu"> <?php $host = "127.0.0.1"; $user = "Benoit"; $pass = "xxxx"; $bdd = "config_reseaux"; $liste_materiel = $_POST["liste_materiel"] ; // 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 DISTINCT lieu FROM bdd WHERE type_materiel = '$liste_materiel'"; $result2=mysql_query($requete2); while ($ligne=mysql_fetch_array($result2)) { echo '<OPTION VALUE="'.$ligne["lieu"].'">'.$ligne["lieu"].'</OPTION>'; } ?> </SELECT> <input type="submit" value="Valider" /><br /> </FORM>

Eléphanteau du PHP | 27 Messages

21 sept. 2011, 09:01

Personne n'a d'idées ?

ViPHP
ViPHP | 2577 Messages

21 sept. 2011, 11:20

Bonjour,

A première vue, ca devrait marché. Quel est le problème ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

21 sept. 2011, 11:22

salut,

tu ne sais pas exploiter les donnée d'un formulaire => http://www.phpdebutant.org/article56.php ou http://www.lephpfacile.com/cours/8-recu ... ormulaires

lorsque tu aura corrigé cela ça ira :)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 27 Messages

21 sept. 2011, 14:11

Nan mais la tel quel ca marche mais ce que je voudrais c'est ne pas avoir a recharger une page avec un nouveau menu déroulant, je voudrais que toute les listes déroulantes soient sur la même page et que le contenu de la deuxième varie en fonction de ce que j'ai tapé dans la première.

Eléphanteau du PHP | 27 Messages

21 sept. 2011, 14:15

salut,

tu ne sais pas exploiter les donnée d'un formulaire => http://www.phpdebutant.org/article56.php ou http://www.lephpfacile.com/cours/8-recu ... ormulaires

lorsque tu aura corrigé cela ça ira :)

@+
Je vois pas ce que tu veux dire ou alors je vois pas ou sont les erreurs :p

Mammouth du PHP | 19672 Messages

21 sept. 2011, 16:25

... ce que je voudrais c'est ne pas avoir a recharger une page avec un nouveau menu déroulant, je voudrais que toute les listes déroulantes soient sur la même page et que le contenu de la deuxième varie en fonction de ce que j'ai tapé dans la première.
Solution ici => faq-tutoriels/formulaires-listes-deroul ... t4562.html
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 27 Messages

22 sept. 2011, 09:03

Mais la ya plusieurs table dans la base, moi j'en ai qu'une, est ce quand même possible ?

Mammouth du PHP | 19672 Messages

22 sept. 2011, 09:51

Pas de soucis : ce qui va changer, ce sera la requête pour établir la seconde liste.

Il est vrai que le tuto se base sur plusieurs tables, mais il pourrait aussi bien y en avoir une douzaine, ça n'a que peu d'importance. Ce qu'il faut comprendre, c'est dans le déroulement du code à quel moment tu dois récupérer le contenu de la seconde liste et comment tu dois donc formuler ta requête.

Essaye de distinguer les différents composants qui forment le tout : la gestion de l'évènement onchange et la collecte des données selon la valeur récupérée, cette dernière dépendant de la première.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 sept. 2011, 13:00

Modération :
Pour avoir plus de réponses, le sujet est déplacé dans une forum plus adapté
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 27 Messages

22 sept. 2011, 14:31

Le mieux a ton avis c'est en php pur ou avec du javascrpit (ou même AJAX), ou plutôt lequel serait a ma porter pour le transposer correctement ?

Mammouth du PHP | 19672 Messages

22 sept. 2011, 14:36

Ça va dépendre un peu de ton aisance avec le JavaScript et/ou avec le PHP.

Là, tu pars d'une seule table avec, à priori, un nombre de lignes de données relativement limité. Donc la version JavaScript sans Ajax serait mon choix personnel : plus rapide puisqu'aucun échange avec le serveur n'est plus nécessaire une fois la page chargée, et en construisant ta page avec la liste au format JSON, ce sera directement exploitable en JavaScript. Mais il faut pour cela que tu sois à l'aise avec la manipulation de listes en objets JavaScript. Ceci étant, rien ne t'empêche d'apprendre le cas échéant ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 27 Messages

22 sept. 2011, 14:39

Il y a toujours le probleme a savoir si le visiteurs aura Java. Car je fais ca pour mon boulot, ca sera un site hebergé en interne, j'espere que les PC qui iront sur le site auront Java d'installé

Mammouth du PHP | 19672 Messages

22 sept. 2011, 14:56

Attention, Java n'est pas JavaScript, voir le post-it que j'avais publié il y a pas mal de temps dans ces forums.

Par ailleurs, à moins de tomber sur un fondu qui naviguerait encore avec Internet Explorer 3 ou encore pire, tous les navigateur actuels supportent le JavaScript. Là où le problème pourrait se poser, ce serait dans le cas de navigateurs alternatifs pour personnes souffrant de déficiences visuelles ou motrices. Dans ce cas, la version 100% PHP sera préconisée.

Donc la solution dans ce cas, c'est de monter la version 100% PHP et ensuite, une fois que c'est bien fonctionnel, implémenter le JavaScript qui ne fonctionnera que si le JavaScript est supporté mais sans empêcher le fonctionnement pour les autres. Ces dernier auront juste un moins moins de rapidité et de souplesse mais ils pourront utiliser l'application.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 27 Messages

22 sept. 2011, 15:10

Ok ok.

Par contre je m'en sors pas du tout avec le code php pour la version Javascript, moi j'ai pas d'indices dans ma table du coup je suis totalement perdu dans le code :p