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

PHP & Base de données Discussion :

Alimenter 2 selectbox simultanément


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 54
    Par défaut Alimenter 2 selectbox simultanément
    Bonjour a tous
    Je viens demander de l'aide afin de trouver solution à mon problème.
    J'ai 2 selectbox que j'aimerai alimenter simultanément au lancement de ma form.
    J'arrive à le faire pour un selectbox, mais pas pour les deux, disons que je ne sais pas comment adapter mon code pour le faire avec une requête différente de la première.
    Quelqu'un peut il m'aider?

    Mes selectbox sont selectbox1 et selectbox2

    Mon script
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $('#addModal').on('shown.bs.modal', function (e) {
            var action = 'Add';
            var query = 'Add';
            var result = 'selectbox1';
                $.ajax({
                    url:'fetch.php',
                    method:"POST",
                    data:{action:action, query:query},
                    success:function(data)
                    {
                        $('#'+result).html(data);
                    }
                })
        });

    fetch.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
    <?php
    //fetch.php
     
    if(isset($_POST['action']))
    {
        if($_POST["action"] == 'Add')
        {
            require_once 'config.php';
            $sql="SELECT * FROM test ORDER BY tester";
            $result=mysqli_query($conn,$sql);
            while($row=mysqli_fetch_array($result)){
                $atester= explode(",",$row['tester']);
                foreach($atester as $tester) {
                    $output .= '<option value="'.$tester.'">'.$tester.'</option>';
                }
            }
        }
        echo $output;
    }
     
    ?>
    Merci d'avance

    cordialement

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    Salut,

    Si le contenu des <select> est stocké dans une seule table, alors tu peux exécuter une seule requête pour le récupérer, sinon tu dois utiliser dataType:"json" dans $.ajax afin que le fichier php puisse renvoyer les données en tant que tableau :
    Code JavaScript : 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
    $.ajax({
       url:'fetch.php',
       method:"POST",
       data:{action:action, query:query},
       dataType:"json",//importante
       success:function(data){
           //met d'abord un console.log(data) ici pour voir la structure de l'objet renvoyé par le php avant de passer aux lignes suivantes.... 
           console.log("success data :",data);
           $("#selectbox1").html(data.select1);
           $("#selectbox2").html(data.select2);  
       },
       error:function(err){//utilise ce callback (fonction de retour) pour voir s'ils y'a des erreurs
           alert("Erreur ajax :"+err.responseText);
       }
     
    });

    Puis en php tu récupère tes variables comme tu l'a fait ...sauf qu'il faut stocker les données de chaque select dans un index de $reponse, $reponse["select1"]=$output et $reponse["select2"]=$output puis tu renvois le tout avec json_encode() à la fin (pas d'echo ni var_dump ni rien)
    Code php : 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
    $reponse=[];
    $output="";
    if(isset($_POST['action']))
    {
        if($_POST["action"] == 'Add')
        {
            require_once 'config.php';
            $sql="SELECT * FROM test ORDER BY tester";
            //première requête du select1:
            $result=mysqli_query($conn,$sql);
            while($row=mysqli_fetch_array($result)){
                $atester= explode(",",$row['tester']);
                foreach($atester as $tester) {
                     $output.='<option value="'.$tester.'">'.$tester.'</option>';
                }
            }
     
            $reponse["select1"]=$output;
     
            //deuxième requête pour le select2:
            $output="";//vider le $output pour le remplir ensuite avec les données de la 2éme requête 
            $sql=".........";
            $result=mysqli_query($conn,$sql);
            while($row=mysqli_fetch_array($result)){
                //le code nécessaire
                $output.= '<option value="....">.....</option>';
            }
            $reponse["select2"]=$output;
        }
        echo json_encode($reponse);
    }

    Si tout va bien, le fichier php renverra un tableau contenant deux items :select1 et select2, qui est converti en json par ajax.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 54
    Par défaut
    Bonjour Toufik83
    Grand merci, c'est exactement ce que je cherche et ça marche.

    Cependant en voulant appliquer une clause where je reçois une erreur "undefined".

    Je récupère l'ID dans une champs nommé tester_id et je voudrais que la seconde requête soit du genre SELECT * FROM test WHERE id=champ tester_id.

    Possible de m'aider?

    Encore merci

    cordialement

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    Salut,

    Tu n'as pas répondu à ma question, est-ce que les requêtes s’exécutent sur plusieurs tables ou bien sur la même ?

    Tu peux me montrer la structure de tes/ta table(s) et le nouveau code php que tu as mis afin que je comprenne mieux la situation?

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 54
    Par défaut
    Bonjour
    Désolé, la requête s’exécute sur 2 tables (essai et test).

    Les structures
    Nom : essai.jpg
Affichages : 78
Taille : 6,8 KoNom : test.jpg
Affichages : 73
Taille : 5,8 Ko

    Le nouveau 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
    $reponse=[];
    $output="";
    if(isset($_POST['action']))
    {
        if($_POST["action"] == 'Add')
        {
            require_once 'config.php';
            $sql="SELECT * FROM test ORDER BY tester";
            $result=mysqli_query($conn,$sql);
            while($row=mysqli_fetch_array($result)){
                $atester= explode(",",$row['tester']);
                foreach($atester as $tester) {
                     $output.='<option value="'.$tester.'">'.$tester.'</option>';
                }
            }
     
            $reponse["select1"]=$output;
     
            $output="";
            $sql="SELECT * FROM essai WHERE id=$_POST['tester_id']";//tester_id est le champ contenant l'id
            $result=mysqli_query($conn,$sql);
            while($row=mysqli_fetch_array($result)){
                $atest_ob= explode(",",$row['test_ob']);
                foreach($atest_ob as $test_ob) {
                     $output.='<option value="'.$test_ob.'">'.$test_ob.'</option>';
                }
            }
            $reponse["select2"]=$output;
        }
        echo json_encode($reponse);
    }
    Merci d'avance

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 513
    Par défaut
    Salut,

    j'attendais une explication beaucoup mieux claire que celle-là ...

    Y a-t-il une relation entre la colonne tester_id de la table essai et id de la table test ?, une clé étrangère non ?.

    Si oui, alors dans ce cas il faut faire une requête avec jointure au lieu d'utiliser deux requêtes.

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

Discussions similaires

  1. Alimenter simultanement plusieurs tables Oracle
    Par foxrol dans le forum DataStage
    Réponses: 0
    Dernier message: 29/06/2014, 10h09
  2. Réponses: 2
    Dernier message: 06/03/2014, 07h49
  3. Réponses: 2
    Dernier message: 17/07/2007, 22h55
  4. [Syntaxe] Action simultanée sur plusieurs élements
    Par FranT dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/03/2003, 20h20
  5. Nombre de fichiers ouverts simultanément
    Par matrixfan dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/05/2002, 17h47

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