Liste Déroulante

cs_piep14 Messages postés 345 Date d'inscription lundi 15 mars 2004 Statut Membre Dernière intervention 13 mai 2011 - 1 sept. 2005 à 12:12
cs_piep14 Messages postés 345 Date d'inscription lundi 15 mars 2004 Statut Membre Dernière intervention 13 mai 2011 - 1 sept. 2005 à 21:50
Bonjour, je souhaite faire afficher des select des lors que l'on a fait sont choix.





Je m'explique : J'ai un premier champs select (liste déroulante ) où l'on fait son choix de son pays.





Une fois le pays sélectionné, je souhaite qu'une autre liste déroulante apparaissent avec les villes se rapportant au pays !!!





Bien sur, toutes les infos qui doivent d'afficher dans les listes déroulantes sont contenues dans la bdd !!!!

J'ai fait ceci pour afficher tous les pays pour le moment.




$res = mysql_query("SELECT DISTINCT `pays`
FROM `situation` ");




echo "<SELECT name='pays' class='form'><OPTION>Faites votre
choix</OPTION>";

while($val = mysql_fetch_array($res))

{


echo "<OPTION
value='$val[pays]'>$val[pays]</OPTION>";

}


echo "</SELECT>";





Voila, c'est tout. Merci d'avance pour m'aider a démarrer

9 réponses

tucsoufle Messages postés 1250 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 30 septembre 2007 1
1 sept. 2005 à 12:32
salut,

je pense qu'il vaut mieux le faire en javascript : javascriptfr.com

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 sept. 2005 à 12:41
Hello,



sinon, il faut de toutes façons soumettre ton formulaire, tester le
choix, et en fonction du choix, afficher un nouveau formulaire avec les
villes. Ce qui peut se faire sur la meme page évidemment.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
1 sept. 2005 à 12:56
Salut,



quelle est la structure de ta table ? ensuite on avisera :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
cs_piep14 Messages postés 345 Date d'inscription lundi 15 mars 2004 Statut Membre Dernière intervention 13 mai 2011
1 sept. 2005 à 13:22
J'ai trouvé ca sur le Net et je pense que c'est ce que je recherche :



http://robloche.free.fr/javascript/tuto_xhr/tuto_xhr.html



Dans la 5ème partie !!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 sept. 2005 à 13:29
Les xmlhttp requests te feront te passer d'une soumission du formulaire en effet. Mais le principe reste le meme.

- choix sur la liste

- controle sur le choix

- requete en fonction de ce choix

- affichage de la 2de liste



C'est pas très compliqué. le problème n'est pas d'utiliser ou non les
xmlhhttp requests...c'est de comprendre ce que tu dois faire.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
1 sept. 2005 à 13:35
Piep14 > peux-tu donner la structure de ta table stp...

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
cs_piep14 Messages postés 345 Date d'inscription lundi 15 mars 2004 Statut Membre Dernière intervention 13 mai 2011
1 sept. 2005 à 13:43
J'ai fait tout ce qui été écrit et je n'arrive meme pas a faire afficher la liste déroulante !!!!

J'ai donc mis dans mon fichier index.php la ou je souhaite faire afficher la liste déroulante



CODE :



<script language="javascript">

var l1 = f.elements["list1"];

var l2 = f.elements["list2"];

var index = l1.selectedIndex;

if(index < 1)

l2.options.length = 0;

else {

var xhr_object = null;



if(window.XMLHttpRequest) // Firefox

xhr_object = new XMLHttpRequest();

else if(window.ActiveXObject) // Internet Explorer

xhr_object = new ActiveXObject("Microsoft.XMLHTTP");

else { // XMLHttpRequest non supporté par le navigateur

alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");

return;

}



xhr_object.open("POST", "recherche.php", true);



xhr_object.onreadystatechange = function() {

if(xhr_object.readyState == 4)

eval(xhr_object.responseText);

}



xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

var data = "pays="+escape(l1.options[index].value)+"&form="+f.name+"&select=list2";

xhr_object.send(data);

}



</script>



Puis j'ai donc dans mon fichier recherche.php :



CODE :



header('Content-type: text/html; charset=iso-8859-1');

<?

include("configuration.php");



$query = mysql_query("SELECT `ville` FROM `situation` WHERE `pays`='$_POST[pays] ORDER BY `ville`");



echo 'var o = null;';

echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];';

echo 's.options.length = 0;';

while($r = mysql_fetch_array($result))

echo 's.options[s.options.length] = new Option("'.$r["ville"].'");';

?>



Voila j'ai les meme table que dans leur exemple sauf que : Family
> Ville et Species ==> Pays





Je ne vois pas l'erreur !!!! Merci
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
1 sept. 2005 à 13:45
merci une fois de plus d'avoir répondu à ma question... je lâche l'affaire

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
cs_piep14 Messages postés 345 Date d'inscription lundi 15 mars 2004 Statut Membre Dernière intervention 13 mai 2011
1 sept. 2005 à 21:50
Désolé [auteurdetail.aspx?ID=1319 Anthomicro], je
vais laisser tomber cette méthode car elle marche en ce connectant a
une autre bdd mais pas sur la mienne donc y a un réelle probleme. Si tu
veux m'aider, je suis repartis de ceci :



<html>
<head>
<script language="javascript">
var pays = new Array; //nouveau tableau
pays[0] = new Array("p0", "pays0"); //nouveau tableau, on va donc avoir pays[0][0]="p0"
pays[1] = new Array("p1", "pays1");
pays[2] = new Array("p2", "pays2");

var ville=new Array;
// pays0
ville["p0"] = new Array;
ville["p0"][0] = new Array("p0v0", "pays0-ville0");
ville["p0"][1] = new Array("p0v1", "pays0-ville1");

//pays1
ville["p1"]=new Array;
ville["p1"][0] = new Array("p1v0", "pays1-ville0");
ville["p1"][1] = new Array("p1v1", "pays1-ville1");

//pays2
ville["p2"] = new Array;
ville["p2"][0] = new Array("p2v0", "pays2-ville0");
ville["p2"][1] = new Array("p2v1", "pays2-ville1");

var rue = new Array;
//pays0-ville0
rue["p0v0"] = new Array;
rue["p0v0"][0] = new Array("p0v0r0", "pays0-ville0-rue0");
rue["p0v0"][1] = new Array("p0v0r1", "pays0-ville0-rue1");

//pays0-ville1
rue["p0v1"] = new Array;
rue["p0v1"][0] = new Array("p0v1r0", "pays0-ville1-rue0");
rue["p0v1"][1] = new Array("p0v1r1", "pays0-ville1-rue1");
rue["p0v1"][2] = new Array("p0v1r2", "pays0-ville1-rue2");

//pays1-ville0
rue["p1v0"] = new Array;
rue["p1v0"][0] = new Array("p1v0r0", "pays1-ville0-rue0");
rue["p1v0"][1] = new Array("p1v0r1", "pays1-ville0-rue1");

//pays1-ville1
rue["p1v1"] = new Array;
rue["p1v1"][0] = new Array("p1v1r0", "pays1-ville1-rue0");
rue["p1v1"][1] = new Array("p1v1r1", "pays1-ville1-rue1");

//pays2-ville0
rue["p2v0"] = new Array;
rue["p2v0"][0] = new Array("p2v0r0", "pays2-ville0-rue0");
rue["p2v0"][1] = new Array("p2v0r1", "pays2-ville0-rue1");

//pays1-ville1
rue["p2v1"] = new Array;
rue["p2v1"][0] = new Array("p2v1r0", "pays2-ville1-rue0");
rue["p2v1"][1] = new Array("p2v1r1", "pays2-ville1-rue1");
rue["p2v1"][2] = new Array("p2v1r2", "pays2-ville1-rue2");
function filltheselect(liste, choix)
{switch (liste)
{
case "listepays":
raz("listeville");
raz("listerue");
for (i=0; i<ville[choix].length; i++)
{
new_option = new Option(ville[choix][i][1],ville[choix][i][0]);
document.formu.elements["listeville"].options[document.formu.elements["listeville"].length]=new_option;
}
for (i=0; i<rue[choix+"v0"].length; i++)
{
new_option = new Option(rue[choix+"v0"][i][1],rue[choix+"v0"][i][0]);
document.formu.elements["listerue"].options[document.formu.elements["listerue"].length]=new_option;
}
break;
case "listeville":
raz("listerue");
for (i=0; i<rue[choix].length; i++)
{
new_option = new Option(rue[choix][i][1],rue[choix][i][0]);
document.formu.elements["listerue"].options[document.formu.elements["listerue"].length]=new_option;
}
break;
}
}

function raz(liste)
{l=document.formu.elements[liste].length;
for (i=l; i>=0; i--)
document.formu.elements[liste].options[i]=null;
}
</script>
</head>

<form name="formu">

Choisir un pays

<select name="listepays" onChange='javascript:filltheselect(this.name, this.value)'>
<script language="javascript">
for (i=0; idocument.write("<option value="" +pays[i][0]+ "">" +pays[i][1]);
</script>
</select>



Choisir une ville
<select name="listeville" onChange='javascript:filltheselect(this.name, this.value)'>
<script language="javascript">
for (i=0; i<ville["p0"].length; i++)
document.write("<option value="" +ville["p0"][i][0]+ "">" +ville["p0"][i][1]);
</script>
</select>



Choisir une rue
<select name="listerue">
<script language="javascript">
for (i=0; i<rue["p0v0"].length; i++)
document.write("<option value="" +rue["p0v0"][i][0]+ "">" +rue["p0v0"][i][1]);
</script>
</select>

</form>


Mais le problème, c'est que j'arrive pas a ajouter mes données extraites de la bdd !!!!!

</html>
0
Rejoignez-nous