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 : 219
Taille : 29,2 Ko et le résultat
Nom : Capture d’écran 2022-06-24 144849.png
Affichages : 219
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.