Listes déroulantes liées dynamiques

Fermé
Laurette35 Messages postés 1 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 24 janvier 2012 - Modifié par Laurette35 le 24/01/2012 à 12:12
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 24 janv. 2012 à 13:14
Bonjour,

je vous explique donc mon problème.

Je n'arrive pas à faire fonctionner les deux listes déroulantes dynamiques.
j'ai essayée pleins de solutions conditions en php, javascript mais cela ne fonctionne pas.

j'aimerais que lorsque dans la première liste déroulante on clique sur "administration" la seconde liste déroulante s'affiche.

Voici mon code




Premiere liste déroulante

<!--::::: création du formulaire :::::-->
<form name="clavier" method="post" action="enregistrement-covoiturageoui.php" onsubmit="return Confirmation();" >

<!--::::: Content :::::-->
<div id="content">
<table width="850" border="1" align="center">
<tr>
<td width="425" align="center" id="reponse">

<!--::::: création de la liste déroulante pour le type de visiteur :::::-->
<select name="txtTypeVisiteur" id="txtTypeVisiteur" style="width: 150px" onchange="document.form1.submit();"/>
<option>- choisissez un type -</option>
<?php
require ('connexion.php');

// Requete de selection des types de visiteurs (en excluant les type qui contiennent permis)
$Requete = "Select nomtypevisiteur from TypeVisiteur where nomtypevisiteur not in ( Select nomtypevisiteur from TypeVisiteur where nomtypevisiteur like '% permis%')";

// envoi de la requete au serveur avec l'identifiant, mot de passe ... passé en début de page
$Resultat = mysql_query($Requete, $Cnx) or die ($Requete .'<br>' . mysql_error() );
$Donnees = mysql_fetch_array($Resultat);

// tant qu'il y a des lignes a la réponse, on remplis la liste des réponses
while($Donnees)
{
if($Donnees['nomtypevisiteur'] == $nomTypeVisiteur)
{
$Txt=' selected="selected"';
}
else
{
$Txt = '';
}
echo '<option'.$Txt.' value="'.$Donnees['nomtypevisiteur'].'">'.$Donnees['nomtypevisiteur'].' </option>';
$Donnees = mysql_fetch_array($Resultat);
}
mysql_free_result($Resultat);
?>
</select>

</td>
</tr>
</table>







Seconde liste déroulante

<table width="850" border="1" align="center">
<tr>
<td id="question">
<h3 class="bouton" align="center" >De quelle administration venez-vous ?</h3>
</td>
<td width="425" align="center" id="reponse">
<!--::::: création de la liste déroulante pour le type de visiteur :::::-->
<select name="txtAdministration" id="txtAdministration" style="width: 150px" onchange="document.form1.submit();" >
<option></option>
</select>
</td>
</tr>
</table>






le java

<script>
function Choix(form)
{
i = <?php $_POST['txtTypeVisiteur'] ?>;
if (i == '')
{
return;
}
else (i == 'administration')
{
<?php
require ('connexion.php');

// Requete de selection des types de visiteurs (en excluant les type qui contiennent permis)
$Requete = "Select Nomadministration from administration;";

// envoi de la requete au serveur avec l'identifiant, mot de passe ... passé en début de page
$Resultat = mysql_query($Requete, $Cnx) or die ($Requete .'<br>' . mysql_error() );
$Donnees = mysql_fetch_array($Resultat);

// tant qu'il y a des lignes a la réponse, on remplis la liste des réponses
while($Donnees)
{
if($Donnees['Nomadministration'] == $Nomadministration)
{
$Txt=' selected="selected"';
}
else
{
$Txt = '';
}
echo '<option'.$Txt.' value="'.$Donnees['Nomadministration'].'">'.$Donnees['Nomadministration'].' </option>';
$Donnees = mysql_fetch_array($Resultat);
}
mysql_free_result($Resultat);
?>
}
}
</script>



Si vous avez une solution à me proposer je suis preneuse ...
Merci d'avance


1 réponse

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 24/01/2012 à 13:19
fais une recherche sur ce forum "listes deroulantes liees"

et

- ne pas confondre java et javascript
- tu peux utliser 2 méthodes:

-- > en php: sur le onchange liste 1 tu fais submit ça va ré-afficher la page avec la liste 2 complétée
-- >en Ajax: sur le onchange liste 1l appelle la fct Ajax Httprequest qui va appeler un script php sur le serveur et la réponse va faire apparaitre la liste 2 (complétée) sans rechargement de la page
1