Merci nautilus99,
j'essaie une autre solution:j'ai crée 5pages,mais quand je selectionne le code de service ds la 1ère liste les 2autres listes restent inactives.
VOICI LE CODE:
p1 pour la connexion:
<?PHP
$connexion = mysql_connect('localhost','root','') or die ("Connexion au serveur impossible");
mysql_select_db('gestion_stock')or die('la selection de la base impossible');
?>
p2 pour la connexion:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Listes déroulantes pilotées par JavaScript Asynchrone et une Base de données</title>
<script type="text/javascript">
<!--
var Ld1Id='';
var Ld2Id='';
var id_liste='';
function ValideLd2(val) {
Ld1Id=val; //cde_sce
id_liste='2';//Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
var LD_URL = 'ValideLd2.php?Ld1='+Ld1Id;
ObjetXHR(LD_URL)
//objet XMLHttpRequest(LD_URL)
// Réinitialisation de Ld3 si modification de LD1 après passage en Ld2
if (Ld2Id!='') {ValideLd3(''); }
}
function ValideLd3(val) {
Ld2Id=val; //id_commune
id_liste='3'; //Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
var LD_URL = 'ValideLd3.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id;
if (Ld2Id=='') {var LD_URL = 'ValideLd3.php';}
ObjetXHR(LD_URL)
}
function ObjetXHR(LD_URL) {
//creation de l'objet XMLHttpRequest
if (window.XMLHttpRequest) { // Mozilla,...
xmlhttp=new XMLHttpRequest();
if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType('text/xml');
}
xmlhttp.onreadystatechange=ChargeLd;
xmlhttp.open("GET", LD_URL, true);
xmlhttp.send(null);
} else if (window.ActiveXObject) { //IE
xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
if (xmlhttp) {
xmlhttp.onreadystatechange=ChargeLd;
xmlhttp.open('GET', LD_URL, false);
xmlhttp.send();
}
}
// Bouton non apparent car modification de LD1 ou Ld2
document.getElementById('buttons').style.display='none';
}
// fonction pour manipuler l'appel asynchrone
function ChargeLd() {
if (xmlhttp.readyState==4) {
if (xmlhttp.status==200) {
//span id="niv2" ou "niv3"
document.getElementById('niv'+id_liste).innerHTML=xmlhttp.responseText;
if (xmlhttp.responseText.indexOf('disabled')<=0) {
//focus sur liste déroulante 2 ou 3
document.getElementById('Liste'+id_liste).focus();
}
}
}
}
function Affiche_Btn() {
document.getElementById('buttons').style.display='inline';
}
</script>
<style>
#buttons {
display: none;
}
</style>
</head>
<!--
<noscript>
Cette page nécessite que JavaScript soit activé; dans votre navigateur
</noscript>-->
Selectionnez votre choix dans les listes déroulantes:
<form name="form1" method="get" action="ListeCP.php">
<?php
include ("ValideLd1.php"); ?> <!--Pour remplir la liste déroulante 1-->
<?php include ("ValideLd2.php"); ?> <!--Pour remplir la liste déroulante 2-->
<?php include ("ValideLd3.php"); ?> <!--Pour remplir la liste déroulante 3-->
</form>
</html>
p3 pour l'affichage de la 1ère liste:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<?PHP
include 'Connexionbd.php';
$rq="Select * from service order by desig_sce;";
$rq_pos_id=0; //position dans le SQL de la clé de la liste déroulante idem dans ValideLd2.php et ValideLd3.php
$rq_pos_val=1; //position dans le SQL de la valeur de la liste déroulante idem dans ValideLd2.php et ValideLd3.php
$result= mysql_query ($rq) or die('Erreur SQL !'.$rq.'
'.mysql_error());
$retour = '<select name="Liste1" id="Liste1" size="1" onchange="ValideLd2(this[this.selectedIndex].value);">';
$retour .= '<option selected value="">Choisir...</option>';
if (mysql_num_rows($result) != 0) {
while ($row = mysql_fetch_row($result)) {
$retour .= '<option value="'. $row[$rq_pos_id] .'">'. $row[$rq_pos_val] .'</option>';
}
$retour .= '</select>';
} else {
$retour = '';
}
mysql_free_result($result);
mysql_close($connexion);
echo $retour
?>
</html>
p4 pour l'affichage de la 2ème liste:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<?PHP
include 'Connexionbd.php';
$Ld1_retour =''; //cde_sce clé de la liste déroulante 1
if (isset($_GET['Ld1'])) {$Ld1_retour = $_GET['Ld1'];}
if ($Ld1_retour) {
$rq="Select * from service where cde_sce=".$Ld1_retour." order by desig_sce;";
$rq_pos_id=0;//position dans le SQL de la clé de la liste déroulante idem dans ValideLd2.php et ValideLd3.php
$rq_pos_val=1;//position dans le SQL de la valeur de la liste déroulante idem dans ValideLd2.php et ValideLd3.php
$result= mysql_query ($rq) or die('Erreur SQL !'.$rq.'
'.mysql_error());//echo $Ld1_retour;
$retour = '<select name="Liste2" id="Liste2" size="1" onchange="ValideLd3(this[this.selectedIndex].value);">';
$retour .= '<option selected value="">Choisir...</option>';
if (mysql_num_rows($result) != 0) {
while ($row = mysql_fetch_row($result)) {
$retour .= '<option value="'. $row[$rq_pos_id] .'">'. $row[$rq_pos_val] .'</option>';
}
$retour .= '</select>';
} else {
$retour = '';
}
mysql_free_result($result);
mysql_close($connexion);
}else{
$retour = '<select name="Liste2" id="Liste2" size="1" disabled><option>Aucune valeur</option></select>';
}
echo $retour
?>
</html>
p5 pour l'affichage de la 3ème liste:
<?PHP
include 'Connexionbd.php';
$Ld1_retour =''; //cde_sce clé de la liste déroulante 1
$Ld2_retour =''; //desiog_sce clé de la liste déroulante 2
if (isset($_GET['Ld1'])) {$Ld1_retour = $_GET['Ld1'];}
if (isset($_GET['Ld2'])) {$Ld2_retour = $_GET['Ld2'];}
if (($Ld1_retour!='')&&($Ld2_retour!='')) {
$rq="Select type_sce from service where cde_sce='$Ld1_retour' AND desig_sce='$Ld2_retour' ";
$rq_pos_id=0;
$rq_pos_val=0;
$result= mysql_query ($rq) or die('Erreur SQL !'.$rq.'
'.mysql_error());
$retour = '<select name="Liste3" id="Liste3" size="1" onchange="Affiche_Btn();">';
$retour .= '<option selected value="">Choisir...</option>';
if (mysql_num_rows($result) != 0) {
while ($row = mysql_fetch_row($result)) {
$retour .= '<option value="'. $row[$rq_pos_id] .'">'. $row[$rq_pos_val] .'</option>';
}
$retour .= '</select>';
} else {
$retour = '';
}
mysql_free_result($result);
mysql_close($connexion);
}else{
$retour = '<select name="Liste3" id="Liste3" size="1" disabled><option>Aucune valeur</option></select>';
}
echo $retour
?>