Triple liste déroulante

Signaler
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007
-
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007
-
J'aimerais avoir trois listes déroulantes liées : sélection catégorie, sous_catégorie et objet
l'objet faisant partie de la sous-catégorie.
un formulaire sans recharger la page (bien sur !)
j'ai tenté de modifier le code de frop01
http://www.phpcs.com/code.aspx?id=25832#
http://perso.wareteam.com/comment_demander_des_informations_au_serveur_sans_recharger_la_page-.php
en utilisant la méthode ajax car données importantes !
mais sans succès !
dc si qq1 a une idée ! merci !

6 réponses

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,

heu, c'est justement quand le nombre de données qui transitent entre le serveur et le client est important que les requêtes xmlhttp ne sont pas forcément recommandables...
Enfin bref, que ce soit entre 2, 3, ou 10 listes, la manière sera la même.
Dis nous plutôt sur quoi tu bloques ?
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007

je bloque sur la deuxième liste il faut juste répéter le même procédé que pour la première liste ou il faut rajouter quelque chose d'autre ???
car ç'est la liste intermédiaire qui reçoi la donnée de la 1ère et doit donner une valeur à la 3ème !
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Le principe est le même entre la 1ère et la 2de, qu'entre la 2de et la 3ème.
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007

ok ba jvai revoir si j'ai pas fait d'erreur !
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007

ç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>";
}


?>
Voila HELP !
Messages postés
106
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2007

ç ptet un peu compliqué mais j'ai vraiment besoin de votre aide ! merci