Pb triple liste déroulante

[Résolu]
Signaler
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007
-
Messages postés
1
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
23 février 2007
-
Voila ma triple liste déroulante ne fonctionne pas !
les deux premières fonctionnenent bien mais pas la dernière !


ça ne fonctionne toujours pas ! je ne vois vraiment pas ! je met mon code !

page principal
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
/**
* Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest
*/
function sendData(param, page)
{
if(document.all)
{
//Internet Explorer
var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
}//fin if
else
{
//Mozilla
var XhrObj = new XMLHttpRequest();
}//fin else


//définition de l'endroit d'affichage:
var content = document.getElementById("contenu");

XhrObj.open("POST", page);


//Ok pour la page cible
XhrObj.onreadystatechange = function()
{ if (XhrObj.readyState 4 && XhrObj.status 200)
content.innerHTML = XhrObj.responseText ;
}


XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
XhrObj.send(param);
}//fin fonction SendData


function send(param, page)
{
if(document.all)
{
//Internet Explorer
var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
}//fin if
else
{
//Mozilla
var XhrObj = new XMLHttpRequest();
}//fin else


//définition de l'endroit d'affichage:
var content = document.getElementById("cont");

XhrObj.open("POST", page);


//Ok pour la page cible
XhrObj.onreadystatechange = function()
{ if (XhrObj.readyState 4 && XhrObj.status 200)
content.innerHTML = XhrObj.responseText ;
}


XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
XhrObj.send(param);
}//fin fonction SendData
</script>
</head>


<?php
// Paramètres de la Connexion à la base MYSQL
$user="";
$host="";
$password="";
$database="";
$i=0; // variable de test
$j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
$k=0;
$l=0;

$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
echo '<form action="rec.php" method="POST">';
// Séléction de tous les enregistrements de la table Catégorie
$rq="SELECT * FROM structure WHERE numstructure <> 0 ORDER BY siglestructure;";
$result= mysql_query ($rq) or die ("Select impossible");
?>
<select size="1" name="struc" OnChange="sendData('id='+this.value,'liresc.php')" onKeyUp="sendData('id='+this.value,'liresc.php')">
<?php
while ($dt=mysql_fetch_row($result))
{
// Remplir la liste déroulante des catégorie
echo "<option value=".($dt[0]).">".($dt[2])."</option>";
if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
}
?>
</select>





<select size='1' name='service' OnChange="send('no='+this.value,'lire.php')" onKeyUp="send('no='+this.value,'lire.php')">
<?php
$rq="SELECT * FROM service WHERE numstructure=".$j." ORDER BY nomservice;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[3])."</option>
";
if ($k==0) { $l=$dt[0]; $k=1; } // garder la valeur du premier enregistrement
}
echo "</select>";
echo '
';
?>




<select size='1' name='sous_service'>
<?php
$rq="SELECT * FROM sous_service WHERE numservice=".$l." ORDER BY nomsousservice;";
$result= mysql_query ($rq) or die ("Select impossible");
$k=0;
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[3])."</option>
";
}
echo "</select>";
echo '
';
echo '';
echo "</form>";
?>

</html>



lire.php
<?php
header('Content-type: text') ; // on déclare ce qui va être afficher

// test des POST emis
if(isset($_POST['no']) && !empty($_POST['no']) ){
$user="";
$host="";
$password="";
$database="";
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
$rq="SELECT * FROM sous_service WHERE numservice=".$_POST['no']." ORDER BY nomsous_service;";
$result= mysql_query ($rq) or die ("Select impossible");
$k=0;
if (mysql_num_rows($result)>0)
{
echo "<select size='1' name='sous_service'>";
}
else
{
echo utf8_encode("Aucun sous service");
echo '';
}
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[3])."</option>
";
}
echo "</select>";
}


?>

liresc.php

<?php
header('Content-type: text') ; // on déclare ce qui va être afficher

// test des POST emis
if(isset($_POST['id']) && !empty($_POST['id']) ){
$user="";
$host="";
$password="";
$database="";
$connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
mysql_select_db($database,$connexion);
$rq="SELECT * FROM service WHERE numstructure=".$_POST['id']." ORDER BY nomservice;";
$result= mysql_query ($rq) or die ("Select impossible");
// $i = initialise le variable i
$i=0;
if (mysql_num_rows($result)>0)
{
echo "<select size='1' name='service'>";
}
else
{
echo utf8_encode("Aucun service");
echo '';
}
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[3])."</option>
";
}
echo "</select>";
}


?>

12 réponses

Messages postés
3
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
22 août 2006

J'ai adapté un code qui chaine 3 listes déroulantes. Il est disponible dans les sources -> CHAINER 3 LISTES DÉROULANTES EN AJAHT
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
c'est quelle partie qui ne fonctionne pas ? parce que là il y a beaucoup de code !
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

explique ce qui ne fonctionne pas exactement (je prends un peu de temps pour toi, depuis le temps que tu me le demandes ;-) )?


<select size='1' name='sous_service'>
<?php
$rq="SELECT * FROM sous_service WHERE numservice=".$l." ORDER BY nomsousservice;";
$result= mysql_query ($rq) or die ("Select impossible");
$k=0;
while ($dt=mysql_fetch_row($result))
{
echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[3])."</option>
";
}
echo "</select>";
echo '
';

La 1ère update la 2de, la 2de update la 3ème ? Que fait la 3ème ? Et qu'est ce qui ne se passe pas, et qui devrait ?
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007

Ok j'explique ! Merci !
Alors l'utilisateur doit sélectionner une structure (service et sous_service) pour avoir la liste des employés de cette meme structure.
Donc pour cela trois listes déroulantes :
la 1ère pr la structure : il choisi la structure ; ce qui nous renseigne pour la deuxième structure !
la 2ème pr le service : il choisi le service en fonction de la structure qui la choisi ! si ya pas de service : le message aucun service apparait !
la 3ème pr le sous_service : il choisi le sous_service en fonction du service qui la choisi ! si ya pa de sous_service : le message aucun sous_service apparait !
voila çété la théorie !
en pratique : je peux choisir la structure et le service ; mais la dernière liste déroulante est toujours vide ! je ne sais pas trop pourkoi !
merci à ceux qui veulent de jetter un coup d'oeil !
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Ok, donc c'est le onchange amenant à liste.php qui ne renvoie pas ce que tu veux, c'est ça ?
Bah, fais un echo $rq; dans liste.php, après avoir défini ta requête, tu verras déjà à quoi elle ressemble.
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007

dans lire.php tu veux dire non ?
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Oui
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007

oui ! Désolé pour le retard !
la valeur du service qui doit etre transmise en toujours nulle !
donc la requete ne s'éxécute pas !
Messages postés
3
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
22 août 2006

Bonjour,
Je souhaite chainer 3 listes déroulantes utilisant ajax avec le code inspiré du lien suivant :
http://perso.wareteam.com/comment_demander_des_informations_au_serveur_sans_recharger_la_page-.php

Aujourd'hui je suis dans le même cas que ahcorad avec un code presque identique.

Comme l'avait supposé malalam, il semble que ce soit
OnChange="send... et onKeyUp="send...qui ne soient pas actifs dans

.
Je me retrouve dans cette situation lorsque j'utilise la 1ere liste déroulante dès le début.
La 1ere liste déroulante mais à jour la 2me mais la 2me ne met pas à jour la 3me liste déroulante.
Par contre, si à l'ouverture de la page, je commence par utiliser d'abord la 2me liste déroulante (pour laquelle j'ai affecté une valeur par défaut) alors la 3me liste déroulante est mise à jour.
Quelqu'un a t?il répondu à ahcorad ?
Merci pour votre aide
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007

Salut !


Et non toujours pas de solutions ! j'ai abandonné !


mais si ya une solution je sui preneur !
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007

impeccable !


j'avais pas vu ta source !!!
Messages postés
1
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
23 février 2007

je suis entrain d'inserer ce code de ajax à l'interieure d'un composant joomla mais ca marche pas