aodot Posté 4 Septembre 2007 Posté 4 Septembre 2007 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.
aodot Posté 4 Septembre 2007 Auteur Posté 4 Septembre 2007 (modifié) 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é 4 Septembre 2007 par aodot
iNCiTE Web Posté 5 Septembre 2007 Posté 5 Septembre 2007 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.
aodot Posté 5 Septembre 2007 Auteur Posté 5 Septembre 2007 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.
iNCiTE Web Posté 5 Septembre 2007 Posté 5 Septembre 2007 Attention : AJAX est du Javascript et nécessite donc qu'il soit activé ! Ce n'est pas un langage en soi...
captain_torche Posté 5 Septembre 2007 Posté 5 Septembre 2007 Le souci, c'est qu'il va bien falloir que tu raffraichisses ou que tu utilises javaScript; AJAX n'est rien d'autre que du JavaScript.
aodot Posté 5 Septembre 2007 Auteur Posté 5 Septembre 2007 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
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant