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

jQuery Discussion :

Lier 2 listes déroulantes avec un Select [AJAX]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 19
    Par défaut Lier 2 listes déroulantes avec un Select
    Bonjour à tous !!!
    j'ai besoin d'un coup de main, voila ça fait plusieurs jours je n'arrive pas à trouver la solution de mon problème, j'ai besoin d'alimenter 2 liste déroulantes en fonction du résultat de la 1ère liste déroulante.

    Dans ma base de données j'ai 3 tables et chaque table contient un id et un libelle;
    • 1) table département => iddepart, libelle
    • 2) table direction => iddirect, iddepart, libelle
    • 3) table service => idservic, iddire.ct, libelle.

    je voudrais qu'à chaque fois que je sélectionne un élément dans la table département par exple agriculture, il m'affiche uniquement les directions du departement "agriculture" dans la seconde liste déroulante.


    voici mon code index.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
       <?php include('config/databas.php');   
     
      $departement ='';
     
      $query = " SELECT iddepart, libelle FROM departement";
     
         $traitemet = $bdd->prepare($query);
         $traitemet ->execute() ;
     
     
           $result = $traitemet->fetchAll();
            foreach ($result as $row ) {
     
          $departement.= '<option value="'.$row["iddepart"].'">'.$row["libelle"].'</option>';
           }
     
    ?>
     
    <div class ="container" style = "margin-top:30px">
    	<div class="control-group">
      <label class ="control-label" for ="selected01">Departement</label>
      <form method ="POST" id="">
     
        <select name ="departement" id ="iddepart" class ="form-control action">
          <option value="">selectionner</option>
           <?php echo $departement; ?>
     
     
        </select></div></div><br>
     
     <div class="container" style = "margin-top:40px">
     
            <div class="control-group">
            <label class ="control-label" for="select01">Direction</label>
     
            <select name ="direction" id ="iddirect" class ="form-control action">
          <option value="">selectionner</option>
            <?php  ?>
     
     
        </select></div></div><br>
     
     
       <script src="assets/jquery-3.4.1.js"></script>
    <script>
     
      $(document).ready(function(){
       $(.action).change(function(){
     
        if($(this).val() !='')
        {
          var  action = $(this).attr("id");
          var query = $(this).val();
          var result ='';
     
          if(result=='iddept')
          {
            result = 'iddirect';
          }
          $.ajax({
           url :'divajax.php',
            method: "POST", 
            data :{action:action, query:query},
            success :function(data)
            {
              $('#'+result).html(data);
            }
          })
        }
     
     
       })
     
      })
    </script>
    mon fichier divajax.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
     if (isset($_POST['action'])){
      include('config/databas.php'); 
      $output ='';
     
      if($_POST['action'] =='iddepart'){
     
        $query = " SELECT iddirect, libelle FROM direction WHERE iddepartt = :iddepartt GROUP BY libelle ";
     
         $traitemet = $bdd->prepare($query);
         $traitemet -> execute(
           array(':iddept' => $_POST["query"] ) 
     
           ); 
     
           $result = $traitemet->fetchAll();
     
            foreach ($result as $row ) {
             $output .= '<option value="'.$row["iddirect"].'" selected="selected">'.$row["libelle"].'</option>';
           }
       }
    je rappelle que ça marche pour la 1ère liste mais pas pour la 2ème.
    svp je demande votre aide

    merçi d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    autodidacte / éternel débutant
    Inscrit en
    Avril 2018
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : autodidacte / éternel débutant

    Informations forums :
    Inscription : Avril 2018
    Messages : 64
    Par défaut
    Bonjour,
    Je suis loin d'être sûr d’avoir les compétences pour te corriger, et tout à fait sûr de n'avoir pas tout compris de ton code, mais 3 remarques :

    1- J'ai cru comprendre que tu voulais mettre à jour 2 listes en fonction d'une première.
    Ça impliquerait 3 listes : département(1ere), direction et service (les deux autres, je suppose?) or je n'en vois que 2 dans le code que tu as posté...

    2- Premières lignes de ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $traitemet = $bdd->prepare($query);
    $traitemet ->execute() ;
    Tu n'as pas de message(s) d'erreur ici ???

    Et surtout :
    3- pour faciliter la vie ceux qui voudraient t'aider, (et attirer des réponses) utilise les balises CODE (bouton #) pour rendre ton code lisible

    PS : une recherche "listes liées + ajax" devrait te fournir de quoi t'aider

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    A CORRIGER :

    index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    			if(action == 'iddepart') // A CORRIGER
    			{
    				result = 'iddirect';
    			}
    divajax.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        $query = " SELECT iddirect, libelle FROM direction WHERE iddepart = :iddepart GROUP BY libelle ";  // A CORRIGER
    // ...
         $traitemet -> execute(
           array(':iddepart' => $_POST["query"] )  // A CORRIGER
           );
    Dernière modification par Invité ; 30/07/2019 à 11h39.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 19
    Par défaut
    Bonjour ClayStone !
    je rappelle qu'il n y a pas de messages d'erreur sur ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $traitemet = $bdd->prepare($query);
    $traitemet ->execute() ;

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 19
    Par défaut
    Bonjour jreaux62 !!!
    j'ai essayé beaucoup de trucs mais rien ne marche, je ne sais pas si c'est comme ça que tu ma demandé de faire , si non apporte moi une explication sur ce code.
    fichier divajax.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
     
    if (isset($_POST['action'])){
      include('config/databas.php'); 
      $output ='';
      $result ='iddirect';
     
      if('action == 'iddepart'){
     
        $query = " SELECT iddirect, libelle FROM direction WHERE iddepart = :iddepart GROUP BY libelle ";
     
         $traitemet = $bdd->prepare($query);
         $traitemet -> execute(
           array(':iddepart' => $_POST["query"] ) 
     
           ); 
                 // var_dump($query);
          // $result = $traitemet->fetchAll();
     
            foreach ($result as $row ) {
             $output .= '<option value="'.$row["iddirect"].'">'.$row["libelle"].'</option>';
           }
       }
    en plus je n'arrive pas à récuperer la valeur de iddepart sur la requette, il m'affiche rien et pas de message d'erreur.
    merci d'avance.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      if('action == 'iddepart'){
    NON : le 1er code que j'ai donné est à corriger dans le code JS !


    QUESTION : COMPRENDS-TU les codes que tu montres, ou les as-tu copiés-collés ??

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Remplir une liste déroulante avec un select
    Par breizhcola29 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 28/11/2015, 13h32
  2. [AJAX] Lier deux listes déroulantes avec ajax
    Par king_soft dans le forum AJAX
    Réponses: 1
    Dernier message: 07/01/2011, 09h49
  3. Liste déroulante avec selections/deselections multiples
    Par Nyark dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/11/2007, 15h50
  4. liste déroulante avec selected
    Par vanou dans le forum Langage
    Réponses: 5
    Dernier message: 06/03/2007, 22h25
  5. Lier 2 listes déroulantes entre elles, et avec MySQL ?
    Par mLk92 dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 30/08/2006, 16h01

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