begin process at 2012 05 29 12:50:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Fonctionnement d'une propriété d'un navigateur

 > 

lier plusieur combox box... problème fonctionnement


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

lier plusieur combox box... problème fonctionnement

mercredi 31 janvier 2007 à 09:59:10 | lier plusieur combox box... problème fonctionnement

jasou62114

Bonjour à tous.. voilà c'est mon premier post sur ce forum, et j'ai un enorme soucis.. j'essaye de relier 5 combox box ensembles... j'ai déjà vu des exemples avec 3 mais j'avoue que j'ai beaucoup de difficultés pour faire les bon changements.

Alors voici ce qu'il y a dans ma page principale pour l'affichage :
[CODE]<?php
    include("Connexionbase.inc");
?>
<!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='';
var Ld2Id='';
var Ld3Id='';
var id_liste='';

function ValideLd2(val) {
    Ld1Id=val; //id_département
    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_département
    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_commune
    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;
    if (Ld3Id=='') {var LD_URL = 'ValideLd4.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>
<body background="img/m10a.jpg">
<a href='javascript:history.go(-1)'>RETOUR</a>
<center>
<h2>Recherche d'une fiche de réparation</h2>
<form action="ouvrir_fich_reparation.php" method="POST">
<table border="0">
    <tr align="center">
        <td>Numéro de fabrication si vous le connaissez :<input type="text" name="txtnumfab"></td>
    </tr>
    <tr>
        <td colspan="3">&nbsp;</td>
    </tr>
    <tr>
        <td colspan="3" align="center">Ou faite votre choix</td>
    </tr>
        <?php
        include("Connexionbase.inc");

        $vsql = "SELECT NUM_ETAB,NOM_ETAB,NOM_SUPP FROM etablissement,supplement_localisation
where etablissement.NUM_SUPP=supplement_localisation.NUM_SUPP;";
        $resultat =$connexion->query($vsql);
        $resultat2 =$connexion->query($vsql);
        
    
        ?>
    <tr>
        <td colspan="3">&nbsp;</td>
    </tr>
    <tr align="center">
        <td>
            Client&nbsp;:&nbsp;<?php include 'ValideLd1.php'; ?>&nbsp;<!--Pour remplir la liste déroulante 1-->
        
            N° Fabrication &nbsp;:&nbsp;<span id="niv2"><?php include 'ValideLd2.php'; ?></span>&nbsp; <!--Pour remplir la liste déroulante 2-->
        
            N° Citerne&nbsp;:&nbsp;<span id="niv3"><?php include 'ValideLd3.php'; ?></span>&nbsp; <!--Pour remplir la liste déroulante 3-->
    <br>
            Type Véhicule&nbsp;:&nbsp;<span id="niv4"><?php include 'ValideLd4.php'; ?></span>&nbsp; <!--Pour remplir la liste déroulante 4-->
            
            N° Parc&nbsp;:&nbsp;<span id="niv5"><?php include 'ValideLd5.php'; ?></span>&nbsp; <!--Pour remplir la liste déroulante 5-->
            
            Immatriculation&nbsp;:&nbsp;<span id="niv6"><?php include 'ValideLd6.php'; ?></span>&nbsp; <!--Pour remplir la liste déroulante 6-->
        <span id="buttons">
        </span>
        </td>
    </tr>

</table>
<br><br>
<input type="submit" value="Rechercher">
</form>
</center>
</body>
</html>[/CODE]

Pour pouvoir utiliser ceci j'ai plusieur fichier valide :

[CODE]<?PHP
include 'Connexionbd.php';
$Ld1_retour =''; //num_etab clé de la liste déroulante 1
$Ld2_retour =''; //num_fab clé de la liste déroulante 2    // en plus pr le valide 2, 3, 4, ...
$Ld3_retour =''; //num_fab clé de la liste déroulante 3    // en plus pr le valide 3, 4, ...
$Ld4_retour =''; //num_fab clé de la liste déroulante 4    // en plus pr le valide 4, ...
// etc pour d'autre liste en plus..

if (isset($_GET['Ld1'])) {$Ld1_retour = $_GET['Ld1'];}
if (isset($_GET['Ld2'])) {$Ld2_retour =  $_GET['Ld2'];}//num_fab clé de la liste déroulante 2    // en plus pr le valide 2, 3, 4, ...
if (isset($_GET['Ld3'])) {$Ld3_retour =  $_GET['Ld3'];} //num_fab clé de la liste déroulante 3    // en plus pr le valide 3, 4, ...
if (isset($_GET['Ld4'])) {$Ld4_retour =  $_GET['Ld4'];} //num_fab clé de la liste déroulante 4    // en plus pr le valide 4, ...
// etc pour d'autre liste en plus..

if (($Ld1_retour!='')&&($Ld2_retour!='')) {
    $rq="SELECT NUM_CITERNE FROM camion WHERE NUM_ETAB=".$Ld1_retour." AND NUM_FABRICATION=".$Ld2_retour." order by NUM_CITERNE;";
    $rq_pos_id=0;
    $rq_pos_val=0;
    $result= mysql_query ($rq) or die ("Select impossible");
    $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 = '<input id="Liste3" type="text" size="10" value="Aucune valeur" disabled>';
    }
    mysql_free_result($result);
    mysql_close($connexion);
}else{
    $retour = '<select name="Liste3" id="Liste3" size="1" disabled><option>Aucune valeur</option></select>';
}    
echo $retour
?> [/CODE]


Voilà j'espère que quelqu'un pourrai m'aider à comprendre la première partie du code qui à mon avis gère l'apparition des combobox... vu que le javascript je n'arrive qu'à comprendre tout ce qui es controle de saisie ou alors l'affichage de messages lorsqu'on détecte  une zone de texte non remplie....:oops: merci beaucoup par avance
mercredi 31 janvier 2007 à 12:33:16 | Re : lier plusieur combox box... problème fonctionnement

nickadele

Membre Club Administrateur CodeS-SourceS
Peux-tu fournir le code résultat de ta page (html) c-à-d sans le code php ?

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
mercredi 31 janvier 2007 à 13:48:49 | Re : lier plusieur combox box... problème fonctionnement

jasou62114

Voilà ce que donne le code source( j'en profite pour dire que j'aimerai que lorsque je sélectionne dans la deuxime combobox, les quatre suivantes se débloque s'il y a un choix... ) :

<!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='';
var Ld2Id='';
var Ld3Id='';
var id_liste='';

function ValideLd2(val) {//
 Ld1Id=val; //id_département
 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_département
 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_département
 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 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>
<body background="img/m10a.jpg">
<a href='javascript:history.go(-1)'>RETOUR</a>
<center>
<h2>Recherche d'une fiche de réparation</h2>
<form action="ouvrir_fich_reparation.php" method="POST">
<table border="0">
 <tr align="center">
  <td>Numéro de fabrication si vous le connaissez :<input type="text" name="txtnumfab"></td>
 </tr>
 <tr>
  <td colspan="3">&nbsp;</td>
 </tr>
 <tr>
  <td colspan="3" align="center">Ou faite votre choix</td>
 </tr>
   <tr>
  <td colspan="3">&nbsp;</td>
 </tr>
 <tr align="center">
  <td>
   Client&nbsp;:&nbsp;<select name="Liste1" id="Liste1" size="1" onchange="ValideLd2(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;<span id="niv2"><select name="Liste2" id="Liste2" size="1" disabled><option>Aucune valeur</option></select></span>&nbsp; <!--Pour remplir la liste déroulante 2-->
  
   N° Citerne&nbsp;:&nbsp;<span id="niv3"><select name="Liste3" id="Liste3" size="1" disabled><option>Aucune valeur</option></select></span>&nbsp; <!--Pour remplir la liste déroulante 3-->
 <br>
   Type Véhicule&nbsp;:&nbsp;<span id="niv4"><select name="Liste4" id="Liste4" size="1" disabled><option>Aucune valeur</option></select></span>&nbsp; <!--Pour remplir la liste déroulante 4-->
   
   N° Parc&nbsp;:&nbsp;<span id="niv5"><select name="Liste3" id="Liste3" size="1" disabled><option>Aucune valeur</option></select></span>&nbsp; <!--Pour remplir la liste déroulante 5-->
   
   Immatriculation&nbsp;:&nbsp;<span id="niv6"><select name="Liste3" id="Liste3" size="1" disabled><option>Aucune valeur</option></select></span>&nbsp; <!--Pour remplir la liste déroulante 6-->
  <span id="buttons">
  </span>
  </td>
 </tr>

</table>
<br><br>
<input type="submit" value="Rechercher">
</form>
</center>
</body>
</html>

vendredi 2 février 2007 à 08:20:22 | Re : lier plusieur combox box... problème fonctionnement

jasou62114

Réponse acceptée !

C'est bon j'ai trouvé j'ai réussi à les relier un part un.... voilà ca que ca donne pour la parti javascript !!

<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>



Cette discussion est classée dans : liste, num, retour, nbsp, xmlhttp


Répondre à ce message

Sujets en rapport avec ce message

Lier liste déroulante [ par piep14 ] Bonjour, je souhaite avoir deux listes déroulantes liées sans recharger la page. J'ai fait :Code :<pre class="alt Modification automatique et journalière d'un lien [ par vigiepresse ] Bonjour, J'ai un souci avec le script ci-dessous qui devrait normalement, lorsque je clique sur "Visitez le lien du jour", afficher automatiquement Envois d'un mail fixe + un mail avec liste déroulante [ par ecolom ] Bonjour, petit soucis de code. Dans mon exemple ci-dessous, j'aimerais que dès que l'on appuie sur Valider qu'un mail soit envoyé à une adresse fixe p javascript récupérer variable [ par ahcorad ] Bonjour,Mon code fonctionne bien sauf pour récupérer les valeurs de ma liste déroulante.Voici mon code :<meta http-equiv="Content-Type" content="text/ CALCUL AVEC BOUTON RADIO ET LISTE DEROULANTE [ par fmoitie ] Bonjour, je fais appelle a une ame charitable qui pourrais m'aider a resoudre mon probleme. j'essaye de faire une page HTML avec des champs cocher par javascript liste liée perte d'indice [ par fouedk2 ] bonjour, j'ai une liste déroulante "valideld1.php" qui déclenche des l'apparition de 7 listes déroulante identique "valideld2.php" problème ce passe Appel d'une fonction AJAXdans une boucle [ par arwen88 ] Bonjour,Je suis débutante et je rencontre actuellement une difficulté. Je souhaite afficher une liste quand je clique sur un bouton radio et une autre Date et liste déroulante : bug étrange ! [ par ChEp51 ] Bonjour , Je ne sais pas si j'ai choisie la bonne section pour poster ça, mais je pense que vous me le direz le cas échéant ; )je suis sur un formulai un combobox débloque 4 autres [ par jasou62114 ] 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 deux onchange dans un select [ par laticocotte ] Bonjour! j'essaie d'appliquer deux actions dans une liste déroulante à savoir j'ai une liste déroulante qui affiche en fonction de ce qui est choisi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales