Intéraction entre deux / trois listes déroulantes

Signaler
Messages postés
10
Date d'inscription
lundi 22 avril 2002
Statut
Membre
Dernière intervention
6 juin 2006
-
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
-
Bonjour et bonne année,

J'ai trois listes déroulantes : pays, départements, villes.
Je veux que chaque liste s'incrémente suivant le choix fait dans la liste précédente en PHP.

J'ai trouvé une partie de la solution sans recharger la page :

<?php require_once('Connections/connect.php');

$SQL="SELECT * FROM ms_rech_pays";
$result = mysql_query($SQL);

?>
<script language="JavaScript"><!--
liste=new Array()
liste[0]=new Array("vide !","")
<?
while ($val = mysql_fetch_array($result)) { $SQL2 "select dpt_nom, num_dpt from ms_rech_departement where num_pays_dpt";
$SQL2 .= $val["num_pays"];
$result2 = mysql_query($SQL2);
?>
liste[<?echo $val["num_pays"];?>]=new Array(<?
while ($val2 = mysql_fetch_array($result2))
echo """.$val2["dpt_nom"]."",";
?>"")
<? }
?>
function changeliste() {
choix=document.monform.listeA.value
t="<select name='listeB'>"
for(i=0;i<liste[choix].length-1;i++)
t+="<option>"+liste[choix][i]+"</option>"
document.monform.listeB.outerHTML=t+"</select>"
}
--></script>
<form name="monform">
<select name="listeA" onChange=changeliste()>
<option value=0>Choisit une liste</option>

<?
mysql_data_seek($result,0); // movefirst
while ($val = mysql_fetch_array($result)) {
?>
<option value=<?echo $val["num_pays"];?>>Liste
<?
echo $val["pays"];?>
</option>
<? }
mysql_close(); ?>
</select>
<select name="listeB">
<option>vide !</option>
</select>


</form>

le seul hic comment mettre mon num_dpt dans "option value" car pour l'instant je récupère que le nom du département et je ne peux rien en faire et comment implémenter ma troisième liste déroulante ?

Si vous avez une idée je vous en remercie par avance.

Charlie :-)

8 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut ;-)

Bon, <? à remplacer par <?php

ensuite les multiples ouvertures/fermetures de balises c'est crade, autant mettre des echo '';

sinon vois sur le forum javascript fr.com forum javascript pour une réponse à ta question en javascript.

a +

Messages postés
26
Date d'inscription
samedi 24 janvier 2004
Statut
Membre
Dernière intervention
7 octobre 2008

slut,

tableau a double entré pr stocker des données
ds l'option en value du met la donnée numéro dep et entre la balise de début et de fin celle du nom

j'espere que ca repond a ta question
Messages postés
10
Date d'inscription
lundi 22 avril 2002
Statut
Membre
Dernière intervention
6 juin 2006

Bonjour et merci,

Je ne vois pas concrêtement comment mettre en oeuvre ce que vous me dites.

Pourriez-vous me donner le code ?

Merci infiniment.
Messages postés
26
Date d'inscription
samedi 24 janvier 2004
Statut
Membre
Dernière intervention
7 octobre 2008

quand tu contruits ton tableau :

liste[i][j][k]

pr k=0 : tu met le nom du dep
pr k=1 le numéro
et apres ds le option du rajoute la propriété value=tablo[i][j][1]

c plus clair?
Messages postés
10
Date d'inscription
lundi 22 avril 2002
Statut
Membre
Dernière intervention
6 juin 2006

Ma foi ! comme de l'eau de roche ! je ne comprend rien j'ai du mal avec la synthaxe de javascript, alors tant qu'à pousser votre gentillesse jusqu'au bout, pouvez vous modifier mon bout de code ?

<script language="JavaScript">
liste=new Array()
liste[0]=new Array("vide !","")
<?
while ($val = mysql_fetch_array($result)) { $SQL2 "select dpt_nom, num_dpt from ms_rech_departement where num_pays_dpt";
$SQL2 .= $val["num_pays"];
$result2 = mysql_query($SQL2);
?>


liste[<?echo $val["num_pays"];?>]=new Array(<?
while ($val2 = mysql_fetch_array($result2))

echo """.$val2["dpt_nom"]."",";
?>"")
<? }
?>
function changeliste() {
choix=document.monform.listeA.value
t="<select name='listeB'>"
for(i=0;i<liste[choix].length-1;i++)

t+="<option>"+liste[choix][i]+"</option>"
document.monform.listeB.outerHTML=t+"</select>"
}
-->
</script>

C'est la dernière fois que j'abuse ou ... presque
Heu ! comme imbriquez vous une troisième liste dans tout ça ?

Pitié pour quelqu'un qui a du mal à dormir depuis quelque jours à force de cogiter ...
Messages postés
26
Date d'inscription
samedi 24 janvier 2004
Statut
Membre
Dernière intervention
7 octobre 2008

honnetement je ne suis pas trop tourné vers le javascript pour le moment ormis pour une gestion de frame ...

moi j'ai deja résolu ton probleme mais je code en php la totalité et je recharge la frame ou se trouve les combo est ce que cela resoudrai ton probleme ou tu veut le faire comme tu es parti? dans ce cas je regarderai ton code mais faudra envoyer la totalité du fichier pour que je puisse tester dans ta configuration entiere de code.

bonne nuit
Messages postés
10
Date d'inscription
lundi 22 avril 2002
Statut
Membre
Dernière intervention
6 juin 2006

Ok je veux bien que vous regardiez "à votre façon", cela peut me dépanner.

Voici le code de la page :

<?php require_once('../Connections/mika_sarolea.php'); ?>
<?php
mysql_select_db($database_mika_sarolea, $mika_sarolea);
$query_list_pays = "SELECT num_pays, pays FROM ms_rech_pays ORDER BY pays ASC";
$list_pays = mysql_query($query_list_pays, $mika_sarolea) or die(mysql_error());
$row_list_pays = mysql_fetch_assoc($list_pays);
$totalRows_list_pays = mysql_num_rows($list_pays);
?>
<?php
$colname_list_dpt = "1";
if (isset($_SESSION['pays'])) {
$colname_list_dpt = (get_magic_quotes_gpc()) ? $_SESSION['pays'] : addslashes($_SESSION['pays']);
}
mysql_select_db($database_mika_sarolea, $mika_sarolea);$query_list_dpt sprintf("SELECT num_dpt, num_pays_dpt, dpt_nom FROM ms_rech_departement WHERE num_pays_dpt %s ORDER BY dpt_nom ASC", $colname_list_dpt);
$list_dpt = mysql_query($query_list_dpt, $mika_sarolea) or die(mysql_error());
$row_list_dpt = mysql_fetch_assoc($list_dpt);
$totalRows_list_dpt = mysql_num_rows($list_dpt);
?>
<?php


$SQL="SELECT * FROM ms_rech_pays";
$result = mysql_query($SQL);


?>
<script language="JavaScript">
liste=new Array()
liste[0]=new Array("vide !","")


<?
while ($val = mysql_fetch_array($result)) { $SQL2 "select dpt_nom, num_dpt from ms_rech_departement where num_pays_dpt";
$SQL2 .= $val["num_pays"];
$result2 = mysql_query($SQL2);
?>


liste[<?echo $val["num_pays"];?>]=new Array(<?
while ($val2 = mysql_fetch_array($result2))


/////////////
///>>>>>>> comment mettre ma value ?


echo """.$val2["dpt_nom"]."",";
?>"")
<? }
?>
function changeliste() {
choix=document.monform.listeA.value
t="<select name='listeB'>"
for(i=0;i<liste[choix].length-1;i++)



///>>>>>>> comment récupérer ma value ?
t+="<option>"+liste[choix][i]+"</option>"
document.monform.listeB.outerHTML=t+"</select>"
}
-->


</script>


<form name="monform">
<select name="listeA" onChange=changeliste()>
<option value=0>Choisit une liste</option>
<?
mysql_data_seek($result,0); // movefirst
while ($val = mysql_fetch_array($result)) {
?>
<? } mysql_close(); ?>
<?php
do {
?>
<option value="<?php echo $row_list_pays['num_pays']?>"><?php echo $row_list_pays['pays']?></option>
<?php
} while ($row_list_pays = mysql_fetch_assoc($list_pays));
$rows = mysql_num_rows($list_pays);
if($rows > 0) {
mysql_data_seek($list_pays, 0);
$row_list_pays = mysql_fetch_assoc($list_pays);
}
?>
</select>

<select name="listeB">
<option>vide !</option>
</select>


</form>
Puis regardez dans la barre d'adresses !


<?php
mysql_free_result($list_pays);
mysql_free_result($list_dpt);
?>

Merci
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Comme tu mets <?php au lieu de <? (ce qui est mieux), autant le mettre partout...



a +