Comment créer un lien avec des éléments d'une base de données?

Comment créer un lien avec des éléments d'une base de données? - PHP - Programmation

Marsh Posté le 03-09-2014 à 15:30:54    

Bonjour,
 
Je débute en php et j'aimerais faire mon site moi-même.
Sur la page "recette" de mon site, il y a une liste déroulante reprenant toutes les catégories de recettes reprises dans la table "tblcategorie" (idCat et nomCat). Lorsque qu'on a choisit sa catégorie et qu'on clique sur ok, les différentes recettes reprises dans cette catégorie sélectionnée s'affichent une en dessous de l'autre sous forme de tableau avec la photo de la recette, le nom de la recette, la catégorie, le temps de préparation, de cuisson et la difficulté (tblrecettes, nomRecettes...)
 
Jusque là, tout se passe bien et tout s'affiche correctement.
 
Ce que j'aimerais, c'est que quand on clique sur la photo ou sur le nom de la recette, un lien nous envoie à une page avec la recette complète (style marmiton: http://www.marmiton.org/recettes/r [...] t&type=all) mais je n'y arrive pas  :??:
 

Code :
  1. <?php
  2. extract($_GET);
  3. if(!isset($idCat)) {
  4. $idCat= "29";
  5. }
  6. ?>
  7. // pour afficher les catégorie dans ma liste déroulante
  8. <?php
  9. function listeCat($idCat) {
  10. $sql = "select *
  11.   from tblcategories
  12.   order by nomCat" ;
  13. $rs = mysql_query($sql)
  14.   or die("Erreur de requête : $sql" ) ;
  15. ?>
  16. <form method="get" action="" >
  17.     <input type="hidden" name="page" value="06" />
  18.    
  19.     <select name="idCat" class="select">
  20.      <?php
  21.         while ($row = mysql_fetch_array($rs)) {
  22.   extract($row) ;
  23.   $buf = "" ;
  24.   if ($id == $idCat) {
  25.    $buf = "selected" ;
  26.   }
  27.   ?>
  28.             <option <?php print $buf ?> value="<?php print $idCat ?>">
  29.   <?php print $nomCat ?>
  30.             </option>
  31.   <?php
  32.  }
  33.  ?>
  34.     </select>
  35.     <input type="submit" value=" ok " />
  36.     </form>
  37.     // pour afficher les catégorie dans ma liste déroulante
  38.     <?php   
  39. }
  40. ?>
  41. [#FF8D00]    // pour afficher les recettes de la catégorie sélectionnée
  42. <?php
  43. function listeRecettes($idCat) {
  44. $sql = "SELECT R.*, P.*
  45.   FROM tblrecettes R
  46.   INNER JOIN tblcategories P
  47.   ON R.idCat = P.idCat
  48.   WHERE P.idCat = $idCat
  49.   ORDER BY R.nomRecettes ";
  50. $rs = mysql_query($sql) or die ("Erreur de requête:$sql" );
  51.  print "<table>" ;
  52. $i=1 ;
  53. while($row=mysql_fetch_array($rs)) {
  54.  extract($row) ;
  55.   $photos       = $_FILES["photos"] ;
  56.  if (($i % 2 ) == 0) {
  57.   $classe = "paire" ;
  58.  } else {
  59.   $classe = "impaire" ;
  60.  }
  61. ?>
  62. [#FF8D00]    // Le tableau avec toutes les recettes
  63.    
  64. <br /><br /><p class="titre_recettes">
  65.    
  66.  <tr class="<?php print $classe;?>">
  67.          <th rowspan="2" valign="middle" ><a href="index.php?page=23"><img src="<?php print $photos ;?>" class="photo" /></th>
  68.          <th valign="middle"><?php print $nomRecettes;?> (<?php print $nomCat ;?> )</th>
  69. </tr>
  70.      
  71.            
  72.         <tr class="<?php print $classe;?>">
  73.            <td valign="top">Temps de pr&eacute;paration: <?php print $temps_prepa;?> - Temps de cuisson: <?php print $temps_cuisson;?><br />Difficult&eacute;: <?php print $difficulte;?></td>
  74. </tr>
  75.  <?php
  76.  $i++ ;
  77. }
  78. print "</table>" ; 
  79. }
  80. ?>
  81. </head>
  82. <body>
  83. <?php
  84. include "include/connexion.inc.php" ;
  85. ?>
  86. <article>
  87. <label for="categorie" class="select">Rechercher par cat&eacute;gorie</label>
  88. [#FF8D00]    // Afficher le tableau sur la page
  89. <?php
  90. listeCat($idCat) ;
  91. listeRecettes($idCat) ;
  92. ?>
  93. </article>
  94. </body>
  95. </html>


 
J'espère avoir été clair et d'avance merci ;-)

Reply

Marsh Posté le 03-09-2014 à 15:30:54   

Reply

Marsh Posté le 03-09-2014 à 15:49:32    

extract($_GET) est à proscrite pour des raisons de sécurité :o
 
Pour ton lien, il fuat avoir un scirpt chargé d'afficher la recette qui prend en paramètre GET l'id de la recette.  
genre : http://tonsite.fr/recette.php?id=xxxx
Donc, quand tu affiches ton tableau, ton code php va aussi écrire un lien html <a> ayant pour "src" http://tonsite.fr/recette.php?id=xxxx où xxxx est l'id en cours de lecture dans ta BD (dans la variable $row).
 
Dans ton script recette.php, le premier truc sera de récupérer l'ID passé en GET puis de recherche le contenu associé à cette ID en BD et de l'afficher comme tu veux :)
 
L62 : $photos       = $_FILES["photos"] ;
-> je le sens pas ce truc :/ $_FILES est créé quand t'as un form de type upload de fichier. Je doute que ça soit ce que tu veux faire.
 
D'une manière générale, tu devrais éviter extract().
 
Je te recommande aussi de regarder le design pattern MVC car tu mélange ton HTML et ton PHP et ça, c'est pas top pour la maintenance et la relecture du code...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed