Aller au contenu

Liste déroulante selon choix première liste


aodot

Sujets conseillés

Bonjour,

Un petit problème et apparement personne n'a ce problème car j'ai bien cherché sur google mais pas de réponses.

Dans ma bdd j'ai une talbe TYPE et une table REF.

J'aimerais afficher sur mon site une liste rempli par TYPE et selon le choix j'aimerais que la deuxième liste affiche les références du type de matériel sélectionné dans la première liste.

Je ne sais pas si j'ai étais assez clair.

Un vrai casse tête !

Merci par avance en tout cas si vous avez une piste.

Lien vers le commentaire
Partager sur d’autres sites

J'apporte une autre explication, pour permettre de m'aider plus facilement.

Voici le code que j'ai créé :

<?
//premiere liste
echo '<select size=1 name="type" id="type" class="lista">'."\n";
$sql = "SELECT * FROM type ORDER BY type ASC";
$ReqLog = mysql_query($sql);
while ($resultat = mysql_fetch_assoc($ReqLog)) {
echo '<option value="'.$resultat[id].'">'.$resultat[type];
echo '</option>'."\n";
}
echo '</select>'."\n";

//la deuxieme liste qui recupere le parametre $type de la premiere liste. c'est la que pose le problème.
echo '<select size=1 name="ref" id="ref" class="lista">'."\n";
$sql = "SELECT * FROM ref WHERE type='$type' ORDER BY ref ASC";
$ReqLog = mysql_query($sql);

while ($resultat = mysql_fetch_assoc($ReqLog)) {
echo '<option value="'.$resultat[id].'">'.$resultat[ref];
echo '</option>'."\n";
}
echo '</select>'."\n";

?>

Modifié par aodot
Lien vers le commentaire
Partager sur d’autres sites

Le code est bon, le "problème" (qui n'en est pas un) est que la 2ème liste ne peut pas avoir connaissance de la valeur choisie dans la première en temps réel... PHP est interprété par le serveur et ensuite il n'a pas connaissance des ations effectués dans la page.

Il faut utiliser donc Javascript :

- soit rafraîchir la page quand un choix est fait dans la 1ère liste, en ajoutant dans le <select ...>

onchange="location='monscript.php?type=this.value'"

- soit utiliser Ajax pour que la 2ème combo soit construite dynamiquement.

Et si tu ne veux pas utiliser Javascript (problème d'accessibilité par exemple), alors à côté de la 1ère liste il doit y avoir un bouton pour valider le formulaire et qui rappelle la même page, $type sera donc valorisé.

Tu peux ajouter un test sur $_POST["type"] et n'afficher la 2ème liste que si la variable n'est pas vide.

Et pour finir, je déconseille l'emploi de "type" comme nom de variable, étant un mot réservé dans bcp de langages, ça peut être source de conflit.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Merci pour votre réponse.

J'avais penser à recharger la page mais cela ne me convient pas trop et je veux limiter l'utilisation du javascript pour de problème d'accessiblité comme vous l'indiquez.

Je vais donc me pencher sur AJAX malgré le fait que je n'y connais strictement rien ;-).

Encore merci.

A bientôt.

Lien vers le commentaire
Partager sur d’autres sites

Merci pour vos répones et le temps consacré à mon problème.

Je viens de trouver un tutorial mais impossible de faire apparaitre quoi que ce soit dans la secponde liste donc direction le forum AJAX/JAVASCRIPT...

Lol

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...