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

Langage PHP Discussion :

Requête sur deux tables [PHP 7]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Octobre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Octobre 2019
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Requête sur deux tables
    Bonjour, j'ai un souci avec une requête qui ne me donne pas le résultat escompté.
    Je m'explique, ci après je vous donnerai le MCD que j'ai fait pour comprendre ce que je veux concrètement mais je vais essayer de décrire mon problème aussi explicite que possible.
    Je suis développeur plus qu'amateur et voici mon projet: créer une base de données avec lecture en php sur des listes de recettes.
    Jusque là tout va bien.
    j'ai donc créé plusieurs tables dont une table "recettes" (normal jusque là) contenant tout un tas de données à l'intérieur dont le type de recettes.
    Or ce type de recettes je peux le mettre en liste déroulante (çà je sais faire). C'est à dire que ma recette 1 correspond par exemple à une entrée froide.
    Je me suis donc dit: plutôt que de mettre à chaque fois dans un champ texte le type de recettes, autant le mettre dans une autre table type_recettes.
    C'est là où commence mon souci.
    J'ai lié par une relation ma table recettes à ma table type_recettes par l'id commun id_type. Ma table type_recettes contient donc juste deux champs: id_type qui est la clé primaire en auto-increment et l'intitulé du type de recettes.
    Ce que je voudrais faire lorsque je liste mes recettes c'est non pas afficher l'id du type de recettes mais son intitulé. donc le champ type de recette ne contiendra pas l'id du type de recette mais bien son intitulé. J'ai tenté plusieurs types de requête qui me donne soit tous les types de recette au lieu d'un seul soit il ne me donne que le premier de ma table type_recette.
    Voici ci joint le schéma de ma base de données (perfectible certes puisqu'il y a des doublons de champ mais çà je m'en occuperai après)
    Nom : canvas.png
Affichages : 191
Taille : 29,2 Ko et le résultat
    Nom : Capture d’écran 2022-06-24 144849.png
Affichages : 197
Taille : 14,9 Ko

    ci après mon code:
    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
    <?php
    include ('connexion.php');
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $sql="SELECT *
          FROM recettes";
    $resultat=mysqli_query($bdd,$sql);
    while ($donnees=mysqli_fetch_assoc($resultat))
    {
      ?>
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <title>Liste des recettes</title>
    </head>
    <body>
      <table border="0">
        <tr>
          <td>
            <label>id de la recette : </label>
          </td>
          <td>
            <input type="text" name="id_recettes" value="<?php echo $donnees['id_recettes'];?>"/>
            <br/>
          </td>
        </tr>
        <tr>
        <td halign="center" valign="center">
        <label>Nom de la recette : </label>
        </td>
     
        <td halign="center" valign="center">
        <input type ="text" id="nom_recette" name="nom_recette" size="50" value = "<?php echo $donnees['nom_recette'];?>"/>
        <br>
        </td>
        </tr>
        <tr>
        <td><label>Type de la recette : </label>
        </td>
        <td>
     
          <?php
          /*$sql2= "SELECT nom_type, recettes.id_type,type_recettes.id_type  
          FROM type_recettes, recettes
          WHERE recettes.id_type=type_recettes.id_type" and ;
          $resultat2=mysqli_query($bdd,$sql2);
          
         while ($donnees2=mysqli_fetch_assoc($resultat2))
          
            { echo ($donnees2["nom_type"]);
      
         }
         */
         $sql2="SELECT t.nom_type 
         FROM type_recettes t
         JOIN recettes r ON t.id_type=r.id_type";
     
         $resultat2=mysqli_query($bdd,$sql2);
     
         while ($donnees2=mysqli_fetch_assoc($resultat2))
     
          {echo ($donnees2["nom_type"]);}
     
     
    ?>
     
        </td>
      </tr>
      </table>
      <?php
    }
    ?>
    </body>
    </html>
    Merci de m'aider à comprendre ce que j'ai mal fait. Vous remerciant par avance de vos réponses.
    Cordialement,
    Christophe.

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 228
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 228
    Points : 8 487
    Points
    8 487
    Billets dans le blog
    17
    Par défaut
    Tu veux connaître le type de recette d'une recette en particulier, donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sql2="SELECT t.nom_type 
    FROM type_recettes t
    JOIN recettes r ON t.id_type=r.id_type
    WHERE r.id_recettes = {$id_recette}";
    Mais je te conseille de récupérer ça lors de la 1re requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql = <<<SQL
        SELECT r.id_recette, r.nom_recette, t.id_type, t.nom_type
        FROM recettes AS r
        INNER JOIN type_recettes AS t ON r.id_type = t.id_type
        SQL;

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Octobre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Octobre 2019
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Merci!!
    Merci çà fonctionne nickel. c'est beaucoup simple comme çà. Je n'étais pas loin en terme de jointure mais c'est la première fois que j'essaye donc pas évident de comprendre au premier coup. Encore merci!

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

Discussions similaires

  1. Aide pour une requête sur deux tables
    Par Andry dans le forum Développement
    Réponses: 2
    Dernier message: 05/11/2007, 07h14
  2. [Access] Fonction TOP dans une requête sur deux tables
    Par pc75 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/07/2007, 09h31
  3. Requête sur deux tables et réponses en colonnes
    Par grandoc dans le forum Requêtes
    Réponses: 2
    Dernier message: 19/12/2006, 12h49
  4. Requête sur deux tables en même temps
    Par will89 dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/04/2006, 11h01
  5. Problème de requêtes sur deux tables
    Par Pymm dans le forum Access
    Réponses: 6
    Dernier message: 06/09/2005, 09h06

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