Liste deroulante qui en genere une autre

[Résolu]
Signaler
Messages postés
53
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
14 juin 2006
-
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
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

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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>
Messages postés
318
Date d'inscription
mardi 27 mai 2003
Statut
Membre
Dernière intervention
11 mars 2010
1
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
Messages postés
53
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
14 juin 2006

Salut !

Vous auriez un exemple s'il vous plait?

Merci beaucoup.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Pour les deux versions, une avec xmlhttp, une sans :
http://codyx.org/snippet_listes-deroulantes-liees_89.aspx