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 :

Récupérer les données d'une table à partir d'un identifiant (Id)


Sujet :

PHP & Base de données

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 Récupérer les données d'une table à partir d'un identifiant (Id)
    Bonjour à tous !!

    Je souhaite récuperer plusieurs lignes de table à partir d'un identifiant (id) sur un formulaire, pour rappel je travail sur
    un projet en php et mysql j'ai 4 tables dans ma BDD .
    employe(id_emp, nom, prenom, id_depart, id_serv), departement(id_depart, libelle) , service(id_serv, libelle, id_depart)
    et la table retraite(id_retrait, annee, id_emp, id_depart, id_serv), j'ai trois liste deroulantes la premiere contienne des
    valeurs c-a-d l'id de la table employe et j'aimerais, une fois que l'utilisateur sélectionne une valeur dans la première
    liste déroulante que les 2 autres listes déroulantes m'affichent les données qui sont enregistrées à partir de la valeur
    de l'id sélectionner.
    voici mon code : le fichier myquery.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
     
      include('config/bdd.php');  
         $output = '';
       if( isset($_POST['id_emp']) )
    {
     
     $query = 'SELECT employe.id_emp, departement.id_depart, departement.libelle, service.id_serv, service.libelle 
       FROM employe
        INNER JOIN departement ON employe.id_depart = departement.id_depart 
        INNER JOIN service ON employe.id_serv = service.id_serv
        WHERE employe.id_emp = :id_emp';
     
        $traitemet = $bdd->prepare($query);
      $traitemet->execute(
        array(':id_emp' => $_POST['id_emp'] ));
      $result = $traitemet->fetchAll();   
     
      foreach ($result as $row )
      {
        $output .= '<option value="'.$row["id_depart"].'">'.$row["libelle"].'</option>';
         $output .= '<option value="'.$row["id_serv"].'">'.$row["libelle"].'</option>';
     
     }
    le fichier 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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
     
     <?php include('config/bdd.php');
     
     $ident ='';
     
    $query = 'SELECT employe.id_emp, departement.id_depart, departement.libelle, service.id_serv, service.libelle 
       FROM employe
        INNER JOIN departement ON employe.id_depart = departement.id_depart 
        INNER JOIN service ON employe.id_serv = service.id_serv;
    
      $traitemet = $bdd->prepare($query);
         $traitemet ->execute() ;
    
            
           $result = $traitemet->fetchAll();    
           foreach ($result as $row ) {
      $ident.= '<option value="'.$row["id_emp"].'">'.$row["id_emp"].'</option>'."\n";
         
     }
    ?>
     
      <script src="assets/jquery-3.4.1.js"></script> 
    <script>
      $(document).ready(function(){
     
       $('#id_emp').on('change', function(){
     
        var id_emp = $(this).val();
        $.ajax({
          url :' myquery.php,
          method: "post", 
          dataType: 'html',
          data :{id_emp':id_emp},
          success :function(data)
          {
            console.log(data);
            $('#.id_depart').html(data);
     
          },
          error : function(err){console.log(err)}
        })
      })
        })
     
     
     
        $(document).ready(function(){
       $('#id_emp').on('change', function(){
     
        varid_emp = $(this).val();
        $.ajax({
          url : myquery.php',
          method: "post", 
          dataType: 'html',
          data :{id_emp':id_emp},
          success :function(data)
          {
            console.log(data);
            $('#.id_serv').html(data);
     
          },
          error : function(err){console.log(err)}
        })
      })
        });
    </script>
     
    <body>
     <div class = "container" >    
      <form method ="POST">
     
        <label for="id_emp">N° Identifiant & employe</label>  
     
              <select name ="id_emp" id ="id_emp" class ="form-control action">
                         <option value="">selectionner</option>
                                    <?php   echo $ident; ?>
     
     
             </select>
     
      <label for="id_depart">Departement</label>
               <select name ="id_depart" class="form-control" id="id_depart">
                  <option value="aucun" selected="selected">-sélectionner-</option>
            <?php  
               $flye1 = $bdd->query('SELECT id_depart, libelle FROM departement');
     
               while ($donees1 = $flye1 ->fetch()) {
                $dept     = $donees1['id_depart'];
                $datadept = $donees1['libelle'];
     
           ?>
            <option value ="<?php echo $dept; ?>"><?php echo $datadept;  ?></option>
            <?php  
             } 
            ?>        
          </select> <br>
     
      <label for="id_serv">Direction ou Service</label>
     
               <select name ="id_serv" class="form-control select2" id="id_serv">
                   <option value="aucun" selected="selected">-sélectionner-</option>
               <?php  
                   $flye2 = $bdd->query('SELECT id_serv, libelle FROM direction');
     
     while ($donees2 = $flye2->fetch()) {
                        $direct     = $donees2[id_serv'];
                        $datadirect = $donees2['libelle'];
              
               ?>
                    <option value ="<?php echo $direct; ?>"><?php echo $datadirect; ?></option>
              <?php 
                } 
              ?> 
               </select>
     
     
     
     </form>
    </body> 
    </html>
    j'ai un bésoin d'un coup de main merci !!

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Il faut faire ça en Ajax. Tu peux t'inspirer de cet exemple.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre confirmé
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Août 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte réseau

    Informations forums :
    Inscription : Août 2018
    Messages : 40
    Par défaut
    si le nombre d'enregistrements n'est pas astronomique et ne risque pas de dépasser la mémoire autorisé par page PHP , pourquoi ne pas faire plusieurs requetes sql créé dynamiquement a partir
    d'une premiere requete qui récupere l'ID que tu passe en variable

    avec qq chose du style : ( code non testé = champs et syntaxe a vérifier)

    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
     
    $id_emp=$_POST['id_emp'];
    $sql1 = "SELECT employe.id_emp, departement.id_depart, departement.libelle, service.id_serv, service.libelle    FROM employe     WHERE employe.id_emp = $id_emp";
    $result1 = mysqli_query($conn,$sql1);
    $row = mysqli_fetch_assoc($result1);
    $id_sql=$row["employe.id_emp"];
     
    ...
     
    $sql2 = "SELECT *    FROM departement   WHERE departement.id_depart=$id_sql";
    $result2 = mysqli_query($conn,$sql2);
     
    ...
     
    $sql3 = "SELECT *    FROM service   WHERE service.id_serv= $id_sql";
    $result3 = mysqli_query($conn,$sql3);
     
    ...

  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 CinePhil !!
    merci pour le lien, mais j'ais toujours le même problème j'ai besoin plus de details svp

  5. #5
    Membre confirmé
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Août 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte réseau

    Informations forums :
    Inscription : Août 2018
    Messages : 40
    Par défaut
    j avais mal compris la question.
    tu peu aussi utiliser une methode a l'ancienne avec des iframes



    une premiere page avec 2 iframe vide pour le moment:
    la premiere (ifsel2) avec le menu déroulant intermédiaire ,
    la 2eme (ifsel3)avec le résultat final


    premiere page (main.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
    <?php
     
    ...
    $tableau=
    //une variable array avec les options du premier menu déroulant
     
    foreach ($tableau as $value)
    	{
                       $chain=$chain."<option value=\"$value\">$value</option>";
    	}
    ?>
     
    <html>
    <body>
    <table><tr><td valign="top">
    <form  id='curdir' action="./form.php" method="post" target="ifsel2">
    <select name="parsedir" size="1" onchange="this.form.submit()">
    <?php echo $chain ?>
    </select>
    <br>
    <input type='submit'  value='envoyer'  />
    </form>
    </td>
    <td valign="top"><iframe name="ifsel2"  height="100" width="200"  scrolling="no" style="border:0 ;   overflow: hidden;"></iframe></td><tr>
     
    <tr><td valign="top" colspan="3" ><iframe name="ifsel3"  height="1000" width="1500"  scrolling="yes" style="border:0 ;   overflow: hidden;"></iframe></td></tr>
    </table>
    </body>
    </html>




    2eme page (form.php) qui affiche les menu déroulant complémentaire et qui passe les variable a l'iframe de résultat
    avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form action="window.parent.ifsel3.location='./affiche.php';" method="post">

    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
     
    <?php
     
    $parsedir=$_POST['parsedir'];
    //on recupere la valeur du premier menu déroulant
     
    //requete sql  en  fonction du premier parametre
     
    $array2=
     
    foreach ($array2 as $value)
    	{
    	$chain=$chain."<option value=\"$value\">$value</option>";
    	$i++;
    	}
    //on construit le 2 eme menu déroulant
    ?>
     
    <html>
    <body>
    <form action="window.parent.ifsel3.location='./affiche.php';" method="post">
    <select name="xxxx" size="1" onchange="this.form.submit()">
    <?php echo $chain ?>
    </select>
    <input type="hidden" name="parsedir" value="<?php echo $parsedir; ?>">
    <br>
    <input type="submit" value="envoyer">
    </form>
    </body>
    </html>

    et enfin une derniere page (affiche.php) qui affiche le résultat avec toute les valeurs sélectionnées.

  6. #6
    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
    Bonsoir saveus
    je vais essayer avec cette méthode merci

Discussions similaires

  1. Récupérer les données d'une table
    Par paselo dans le forum IHM
    Réponses: 24
    Dernier message: 18/09/2010, 17h59
  2. Récupérer les données d'une table liée
    Par ludojojo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/06/2010, 22h24
  3. Réponses: 15
    Dernier message: 14/06/2009, 04h20
  4. Réponses: 62
    Dernier message: 16/04/2009, 10h09
  5. Réponses: 1
    Dernier message: 25/04/2008, 16h17

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