IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] Menus déroulants dynamiques


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [AJAX] Menus déroulants dynamiques
    Bonjour,

    J'ai suivi un tuto sur internet pour créer des menus déroulants (3menus). J'ai essayé de créer un script pour 4 menus, mais le dernier menu ne charge pas

    j'ai d'assez bonnes connaissances en php, mais de très mauvaises en java. Je pense que l'erreur est dans la première page (insertcours.php) dans le code java et ajax.

    Est-ce que qqun peut venir a mon secours merci bcp

    (petite explication, la page inscription.php renvoie aux pages ValideLd1.php ValideLd2.php ValideLd3.php ValideLd4.php dans lesquels je fais les requetes php pour remplir les listes.)


    inscription.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    <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 Ld3
    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 (Ld4Id=='') {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, true);
    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>
     
    <form name="form1" method="post" action="">
    <?PHP
    include 'ValideLd1.php'; ?>&nbsp; <!--Pour remplir la liste déroulante 1-->
    <span id="niv2">
    <?PHP include 'ValideLd2.php'; ?></span>&nbsp; <!--Pour remplir la liste déroulante 2-->
    <span id="niv3">
    <?PHP include 'ValideLd3.php'; ?></span>&nbsp; <!--Pour remplir la liste déroulante 3-->
    <span id="niv4">
    <?PHP include 'ValideLd4.php'; ?></span>&nbsp; <!--Pour remplir la liste déroulante 4-->
    <span id="buttons"><span id="buttons">
    <input type="submit" value="Valider">
    </span>
    </form>
    ValideLd1.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php include'../Connections/connect.php';
    mysql_select_db($database_connect, $connect);
    $query_rq1="Select id_ecole,name_ecole from ecole ;";
    $rq1= mysql_query ($query_rq1, $connect) or die(mysql_error());
    $row_rq1 = mysql_fetch_assoc($rq1);
    $totalRows_rq1 = mysql_num_rows($rq1);
     
    $retour = '<select name="Liste1" id="Liste1" size="1" onchange="ValideLd2(this[this.selectedIndex].value);">';
    $retour .= '<option selected value="">Choisir...</option>';
     
     
    if (mysql_num_rows($rq1) != 0) {
    do {
    $retour .= '<option value="'. $row_rq1['id_ecole'] .'">'. $row_rq1['name_ecole'] .'</option>';
    }while ($row_rq1 = mysql_fetch_assoc($rq1));
     
    $retour .= '</select>';
    } else {
    $retour = '<input id="size" type="text" size="10" value="Aucune valeur" disabled>';
    }
    mysql_free_result($rq1);
    echo $retour
    ?>
    ValideLd2.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     
    <?php include'../Connections/connect.php';
     
    mysql_select_db($database_connect, $connect);
    $Ld1_retour =''; //id_département clé de la liste déroulante 1
     
    if (isset($_GET['Ld1'])) {$Ld1_retour = $_GET['Ld1'];}
     
    if ($Ld1_retour!='') {
    $query_rq2="Select id_section, name_section from section where id_ecole=".$Ld1_retour." order by name_section;";
    $rq2= mysql_query ($query_rq2, $connect) or die(mysql_error());
    $row_rq2 = mysql_fetch_assoc($rq2);
    $totalRows_rq2 = mysql_num_rows($rq2);
     
    $retour = '<select name="Liste2" id="Liste2" size="1" onchange="ValideLd3(this[this.selectedIndex].value);">';
    $retour .= '<option selected value="">Choisir...</option>';
     
    if (mysql_num_rows($rq2)!= 0) {
    do {
    $retour .= '<option value="'. $row_rq2['id_section'] .'">'. $row_rq2['name_section'] .'</option>';
    } while ($row_rq2 = mysql_fetch_assoc($rq2));
    $retour .= '</select>';
    } else {
    $retour = '<input id="Liste2" type="text" size="10" value="Aucune valeur" disabled>';
    }
    mysql_free_result($rq2);
    }else{
    $retour = '<select name="Liste2" id="Liste2" size="1" disabled><option>Aucune valeur</option></select>';
    }
    echo $retour
    ?>
    ValideLd3.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
     
    <?php include'../Connections/connect.php';
     
    mysql_select_db($database_connect, $connect);
    $Ld1_retour =''; //id_ecole clé de la liste déroulante 1
    $Ld2_retour =''; //id_section 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!='')) {
    $query_rq3 ="Select id_annee, annee from anne where id_ecole=".$Ld1_retour." AND id_section=".$Ld2_retour." order by annee;";
     
    $rq3= mysql_query ($query_rq3, $connect) or die(mysql_error());
    $row_rq3 = mysql_fetch_assoc($rq3);
    $totalRows_rq3 = mysql_num_rows($rq3);
     
    $retour = '<select name="Liste3" id="Liste3" size="1" onchange="ValideLd3(this[this.selectedIndex].value);">';
    $retour .= '<option selected value="">Choisir...</option>';
     
    if (mysql_num_rows($rq3) != 0) {
    do {
    $retour .= '<option value="'. $row_rq3['id_annee'] .'">'. $row_rq3['annee'] .'</option>';
    } while ($row_rq3 = mysql_fetch_assoc($rq3));
     
    $retour .= '</select>';
    } else {
    $retour = '<input id="Liste3" type="text" size="10" value="Aucune valeur" disabled>';
    }
    mysql_free_result($rq3);
    }else{
    $retour = '<select name="Liste3" id="Liste3" size="1" disabled><option>Aucune valeur</option></select>';
    }
    echo $retour
     
    ?>
    ValideLd4.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <?php include'../Connections/connect.php';
     
    mysql_select_db($database_connect, $connect);
    $Ld1_retour =''; //id_ecole clé de la liste déroulante 1
    $Ld2_retour =''; //id_section clé de la liste déroulante 2
    $Ld_retour =''; //id_section clé de la liste déroulante 3
     
    if (isset($_GET['Ld1'])) {$Ld1_retour = $_GET['Ld1'];}
    if (isset($_GET['Ld2'])) {$Ld2_retour = $_GET['Ld2'];}
    if (isset($_GET['Ld3'])) {$Ld2_retour = $_GET['Ld3'];}
     
    if (($Ld1_retour!='')&&($Ld2_retour!='')) {
    $query_rq4 ="Select cours from list_cours where id_ecole=".$Ld1_retour." AND id_section=".$Ld2_retour." AND id_anne=".Ld3_retour." order by cours;";
     
    $rq4= mysql_query ($query_rq4, $connect) or die(mysql_error());
    $row_rq4 = mysql_fetch_assoc($rq4);
    $totalRows_rq4 = mysql_num_rows($rq4);
     
    $retour = '<select name="Liste3" id="Liste3" size="1" onchange="Affiche_Btn();">';
    $retour .= '<option selected value="">Choisir...</option>';
     
    if (mysql_num_rows($rq4) != 0) {
    do {
    $retour .= '<option value="'. $row_rq4['id_cours'] .'">'. $row_rq4['cours'] .'</option>';
    } while ($row_rq4 = mysql_fetch_assoc($rq4));
     
    $retour .= '</select>';
    } else {
    $retour = '<input id="Liste4" type="text" size="10" value="Aucune valeur" disabled>';
    }
    mysql_free_result($rq4);
    }else{
    $retour = '<select name="Liste3" id="Liste3" size="1" disabled><option>Aucune valeur</option></select>';
    }
    echo $retour
     
    ?>

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    pas bien compris le fonctionnement (c'est bien compliqué pour un simple menu ), mais en l'état, si ta variable xmlhttp n'est pas déclarée en globale (en dehors des fonctions), elle n'est pas visible dans ChargeLd()

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    merci pour votre réponse. Pour être honnête, je ne comprends pas vraiment ce que je fais en java... Je ne connais bien que le php.

    Vous avez parlez d'un moyen beaucoup plus simple pour créer des listes dynamiques depuis un base de donnée est-ce que vous auriez un lien ou une piste?

    Merci pour tout

    Deidei

Discussions similaires

  1. [AJAX] liste déroulante dynamique 2 résultats
    Par btobnet dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/04/2008, 15h59
  2. [AJAX] Liste déroulante Dynamique à partir d'un BD
    Par elle-même dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/04/2008, 14h47
  3. [AJAX] Listes déroulantes dynamiques
    Par SHERPAE dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 18/12/2007, 10h12
  4. [SQL] Relation entre deux menus déroulants dynamiques
    Par intissar_g dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/11/2007, 15h36
  5. [AJAX] Menu déroulant dynamique pour parcourir une BD
    Par relena dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 25/03/2007, 17h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo