Liste deroulante qui en genere une autre

Résolu
cs_Sandy084 Messages postés 53 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 14 juin 2006 - 30 mars 2006 à 00:08
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 30 mars 2006 à 09:47
Bonsoir à tous!



Je souhaiterais savoir comment remplir une liste déroulante à partir d'une autre.

Par exemple quand je choisi un niveau de difficulté dans ma premiére
liste, je veux que la seconde (qui est sur la meme page) affiche les
niveaux de difficultés.



Voici comment s'affiche ma premiere liste deroulante :



<?

include("connexion.php");



//On
sélectionne la liste des niveaux disponibles dans la base de données

$req="SELECT NIVDIFF FROM NIVEAUDIFF";

$result = mysql_query($req) or die ("Erreur de lecture de la table");



echo'<select name="select">';



while($data = mysql_fetch_assoc($result))

{


echo ('<option
value="'.$data['NIVDIFF'].'">'.$data['NIVDIFF'].'</option>');

}



echo'</select>';



?>



Merci de votre aide.

4 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
30 mars 2006 à 09:38
Hello,

un exemple avec xmlhttp.
Adaptable SANS.

<script type="text/javascript">
if (window.XMLHttpRequest) {
oXmlhttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
oXmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}


function search (clef) {
oXmlhttp.open('POST','<?php echo $_SERVER['PHP_SELF']; ?>');
oXmlhttp.onreadystatechange=function() {
if (oXmlhttp.readyState==4 && oXmlhttp.status == 200) {
document.body.innerHTML = oXmlhttp.responseText;
}
}
oXmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var data = 'liste1='+clef
oXmlhttp.send (data);
}


</script>
<?php$aTab array (1> array ('test', 'pour', 'une', 'blonde'),
2 => array ('difficile', 'ca?', 'non...'),
3 => array ('très', 'facile', 'en', 'fait!'));
?>


<form method="post">
<select name="liste1" onchange="search (this.value);">
<?php
foreach ($aTab as $clef => $dump) {
$selected=(isset($_POST['liste1']) && $_POST['liste1'] == $clef)?'selected="selected"':'';
echo '<option value="',$clef,'" ',$selected,'>',$clef,'</option>';
}
?>
</select>
<?php
if (isset ($_POST['liste1']) && !empty ($_POST['liste1'])) {
echo '<select name="liste2">';
foreach ($aTab[$_POST['liste1']] as $val) {
echo '<option value="',$val,'">',$val,'</option>';
}
echo '</select>';
}
?>
</form>
3
gibozsec Messages postés 318 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 11 mars 2010
30 mars 2006 à 00:45
Tu devrais te tourner vers le javascript, en php tu devra actualiser la page.

En javascript tu peux charger toutes tes données (dans des tableaux par exemple) et mettre à jour en fonction des clicks du visiteur.

Grrrrrrrrrrr
0
cs_Sandy084 Messages postés 53 Date d'inscription mardi 11 janvier 2005 Statut Membre Dernière intervention 14 juin 2006
30 mars 2006 à 08:20
Salut !

Vous auriez un exemple s'il vous plait?

Merci beaucoup.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
30 mars 2006 à 09:47
Pour les deux versions, une avec xmlhttp, une sans :
http://codyx.org/snippet_listes-deroulantes-liees_89.aspx
0
Rejoignez-nous