Intéraction entre deux / trois listes déroulantes

cs_scartail Messages postés 10 Date d'inscription lundi 22 avril 2002 Statut Membre Dernière intervention 6 juin 2006 - 2 janv. 2005 à 03:20
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 6 janv. 2005 à 00:03
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

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
2 janv. 2005 à 11:43
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 +

0
bebstylus Messages postés 26 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 7 octobre 2008
4 janv. 2005 à 14:43
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
0
cs_scartail Messages postés 10 Date d'inscription lundi 22 avril 2002 Statut Membre Dernière intervention 6 juin 2006
4 janv. 2005 à 15:05
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.
0
bebstylus Messages postés 26 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 7 octobre 2008
4 janv. 2005 à 15:27
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?
0

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

Posez votre question
cs_scartail Messages postés 10 Date d'inscription lundi 22 avril 2002 Statut Membre Dernière intervention 6 juin 2006
5 janv. 2005 à 01:01
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 ...
0
bebstylus Messages postés 26 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 7 octobre 2008
5 janv. 2005 à 09:00
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
0
cs_scartail Messages postés 10 Date d'inscription lundi 22 avril 2002 Statut Membre Dernière intervention 6 juin 2006
5 janv. 2005 à 23:59
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
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
6 janv. 2005 à 00:03
Comme tu mets <?php au lieu de <? (ce qui est mieux), autant le mettre partout...



a +

0
Rejoignez-nous