Un combobox débloque 4 autres

Résolu
jasou62114 Messages postés 59 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 20 juillet 2010 - 2 févr. 2007 à 08:28
jasou62114 Messages postés 59 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 20 juillet 2010 - 2 févr. 2007 à 13:22
Salut à tous, j'avai déjà posté pour relier 5 combobox les uns par rapport aux autres...
Mais voilà la donne a changé et en fait je voudrai que lorsque je sélectionne dans la deuxième Combobox les quatres suivantes se débloquent... comment faire? voilà mon code

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ouvrir une fiche de réparation</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
var Ld1Id='';// on initialise la variable à vide
var Ld2Id='';// on initialise la variable à vide
var Ld3Id='';// on initialise la variable à vide
var Ld4Id='';// on initialise la variable à vide
var Ld5Id='';// on initialise la variable à vide
var Ld6Id='';// on initialise la variable à vide
var id_liste='';// on initialise la variable à vide
function ValideLd2(val) {//
 Ld1Id=val; //id de l'élément sélectionné précédemment
 id_liste='2';//Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
 var LD_URL = 'ValideLd2.php?Ld1='+Ld1Id;
 ObjetXHR(LD_URL)
 // Réinitialisation de Ld3 si modification de LD1 après passage en Ld2
 if (Ld2Id!='') {ValideLd3(''); }
}
function ValideLd3(val) {
 Ld2Id=val; //id de l'élément sélectionné précédemment
 id_liste='3';//Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
 var LD_URL = 'ValideLd3.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id;
 ObjetXHR(LD_URL)
 // Réinitialisation de Ld3 si modification de LD1 après passage en Ld2
 if (Ld3Id!='') {ValideLd4(''); }
}
function ValideLd4(val) {
 Ld3Id=val; //id de l'élément sélectionné précédemment
 id_liste='4';//Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
 var LD_URL = 'ValideLd4.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id+'&Ld3='+Ld3Id;
 ObjetXHR(LD_URL)
 // Réinitialisation de Ld3 si modification de LD1 après passage en Ld2
 if (Ld4Id!='') {ValideLd5(''); }
}
function ValideLd5(val) {
 Ld4Id=val; //id de l'élément sélectionné précédemment
 id_liste='5';//Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
 var LD_URL = 'ValideLd5.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id+'&Ld3='+Ld3Id+'&Ld4='+Ld4Id;
 ObjetXHR(LD_URL)
 // Réinitialisation de Ld3 si modification de LD1 après passage en Ld2
 if (Ld5Id!='') {ValideLd6(''); }
}
function ValideLd6(val) {
 Ld5Id=val; //id de l'élément sélectionné précédemment
 id_liste='6';//Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
 var LD_URL = 'ValideLd6.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id+'&Ld3='+Ld3Id+'&Ld4='+Ld4Id+'&Ld5='+Ld5Id;
 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) { // si l'objet est à l'état terminé
  if (xmlhttp.status==200) { // si le sereur renvoi OK (200)
   //span id="niv2" ou "niv3"
   document.getElementById('niv'+id_liste).innerHTML=xmlhttp.responseText; /* on récupère le numéro de la liste situé sur
   la page et on a la Chaîne correspondant à la réponse du serveur à la requête */
   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>

RETOUR
<center>
Recherche d'une fiche de réparation

<form action="ouvrir_fich_reparation.php" method="POST">
<table border="0">
 <tr align="center">
  <td>Numéro de fabrication si vous le connaissez :
</form>
</center>

</html>

4 réponses

jasou62114 Messages postés 59 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 20 juillet 2010
2 févr. 2007 à 11:59
en fait voilà mon code mais j'ai résulu mon problème<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ouvrir une fiche de réparation</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
var Ld1Id='';// on initialise la variable à vide
var Ld2Id='';// on initialise la variable à vide
var Ld3Id='';// on initialise la variable à vide
var Ld4Id='';// on initialise la variable à vide
var Ld5Id='';// on initialise la variable à vide
var Ld6Id='';// on initialise la variable à vide
var id_liste='';// on initialise la variable à vide


function ValideLd2(val) {//
 Ld1Id=val; //id de l'élément sélectionné précédemment
 id_liste='2';//Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
 var LD_URL = 'ValideLd2.php?Ld1='+Ld1Id;
 ObjetXHR(LD_URL)
 // Réinitialisation de Ld3 si modification de LD1 après passage en Ld2
 if (Ld2Id!='') {ValideLd3(''); }
}


function ValideLd3(val) {
 Ld2Id=val; //id de l'élément sélectionné précédemment
 id_liste='3';//Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
 var LD_URL = 'ValideLd3.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id;
 ObjetXHR(LD_URL)
 // Réinitialisation de Ld3 si modification de LD1 après passage en Ld2
 if (Ld3Id!='') {ValideLd4(''); }
}


function ValideLd4(val) {
 Ld3Id=val; //id de l'élément sélectionné précédemment
 id_liste='4';//Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
 var LD_URL = 'ValideLd4.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id+'&Ld3='+Ld3Id;
 ObjetXHR(LD_URL)
 // Réinitialisation de Ld3 si modification de LD1 après passage en Ld2
 if (Ld4Id!='') {ValideLd5(''); }
}


function ValideLd5(val) {
 Ld4Id=val; //id de l'élément sélectionné précédemment
 id_liste='5';//Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
 var LD_URL = 'ValideLd5.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id+'&Ld3='+Ld3Id+'&Ld4='+Ld4Id;
 ObjetXHR(LD_URL)
 // Réinitialisation de Ld3 si modification de LD1 après passage en Ld2
 if (Ld5Id!='') {ValideLd6(''); }
}


function ValideLd6(val) {
 Ld5Id=val; //id de l'élément sélectionné précédemment
 id_liste='6';//Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
 var LD_URL = 'ValideLd6.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id+'&Ld3='+Ld3Id+'&Ld4='+Ld4Id+'&Ld5='+Ld5Id;
 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) { // si l'objet est à l'état terminé(4)
  if (xmlhttp.status==200) { // si le sereur renvoi OK (200)
   //span id="niv2" ou "niv3"
   document.getElementById('niv'+id_liste).innerHTML=xmlhttp.responseText; /* on récupère le numéro de la liste situé sur
   la page et on a la Chaîne correspondant à la réponse du serveur à la requête */
   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>

RETOUR
<center>
Recherche d'une fiche de réparation

<form action="ouvrir_fich_reparation.php" method="POST">
 ----

  Numéro de fabrication si vous le connaissez :,
 
 ----

  &nbsp;,
 
 ----

  Ou faite votre choix,
 
   ----

  &nbsp;,
 
 ----

     Client&nbsp;:&nbsp;<select name="Liste1" id="Liste1" size="1" onchange="ValideLd2(this[this.selectedIndex].value);ValideLd3(this[this.selectedIndex].value)"><option selected value="">Choisir...</option><option value="1">société une</option><option value="2">société deux</option><option value="3">société une</option><option value="4">société deux</option></select>&nbsp;<!--Pour remplir la liste déroulante 1-->
  
   N° Fabrication &nbsp;:&nbsp;<select name="Liste2" id="Liste2" size="1" disabled><option>Aucune valeur</option></select>&nbsp; <!--Pour remplir la liste déroulante 2-->
  
   N° Citerne&nbsp;:&nbsp;<select name="Liste3" id="Liste3" size="1" disabled><option>Aucune valeur</option></select>&nbsp; <!--Pour remplir la liste déroulante 3-->
 

   Type Véhicule&nbsp;:&nbsp;<select name="Liste4" id="Liste4" size="1" disabled><option>Aucune valeur</option></select>&nbsp; <!--Pour remplir la liste déroulante 4-->
   
   N° Parc&nbsp;:&nbsp;<select name="Liste5" id="Liste5" size="1" disabled><option>Aucune valeur</option></select>&nbsp; <!--Pour remplir la liste déroulante 5-->
   
   Immatriculation&nbsp;:&nbsp;<select name="Liste6" id="Liste6" size="1" disabled><option>Aucune valeur</option></select>&nbsp; <!--Pour remplir la liste déroulante 6-->
  
  
  ,
 

</form>
</center>

</html>

J'ai résolu mon problème en fait dans la page valide ou dans le onchange je pouvais mettre les autres combo disponible( et un combobox est un menu déroulant)
Par exemple ici dans valideL2 j'ai ceci

<?PHP
include 'Connexionbd.php';
$Ld1_retour =''; //id_département clé de la liste déroulante 1


if (isset($_GET['Ld1'])) {$Ld1_retour = $_GET['Ld1'];}


if ($Ld1_retour!='') {
 $rq="SELECT NUM_FABRICATION FROM camion WHERE NUM_ETAB=".$Ld1_retour." order by NUM_FABRICATION;";
 $rq_pos_id=0;
 $rq_pos_val=0;
 $result= mysql_query ($rq) or die ("Select impossible");
 $retour = '<select name="Liste2" id="Liste2" size="1" onchange="ValideLd3(this[this.selectedIndex].value);ValideLd4(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
?>

et c'est ici  onchange="ValideLd3(this[this.selectedIndex].value);ValideLd4(this[this.selectedIndex].value)">'; que je devait rajouter les nom des autres nom des combo...
problème résolu
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 févr. 2007 à 10:30
Bonjour,  

    c'est quoi un combobox ? ça n'existe ni en Javascript ni en Html.
    et ici, on ne voit qu'un finalement.
    et que vient faire la séquence "xmlhttprequest" dans ce coup ci ?

<hr />


Cordialement        Bul         [mon Site]     [M'écrire]



<hr />
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 févr. 2007 à 13:07
nickel si ça baigen et merci de l'avoir dit !
mais avec ce qui étati mis ici, impossible pour nous de résoudre.

>>un combobox est un menu déroulant
ben non !!! en VB, par exemple et avec d'auyes langages, c'est une liste
    déroulante mais en html/javascript ça n'existe pas ( la balise select, ça, oui )



<hr />



Cordialement            Bul         [mon Site]     [M'écrire]



<hr />
0
jasou62114 Messages postés 59 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 20 juillet 2010
2 févr. 2007 à 13:22
ha je ne savais pas, en cours on a toujours parlé de chose comme ca... bravo les profs.. .loool
mais bon voilà si ca peut rendre service à quelqu'un ^^
0
Rejoignez-nous