Comment créer un lien avec des éléments d'une base de données?
Sid05
Messages postés
19
Date d'inscription
Statut
Membre
Dernière intervention
-
Sid05 Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
Sid05 Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
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: https://www.marmiton.org/recettes/recherche.aspx?type=all&aqt=poulet mais je n'y arrive pas :??:
Voici mon code:
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: https://www.marmiton.org/recettes/recherche.aspx?type=all&aqt=poulet mais je n'y arrive pas :??:
Voici mon code:
<?php extract($_GET); if(!isset($idCat)) { $idCat= "29"; } ?> <?php function listeCat($idCat) { // pour afficher les catégorie dans ma liste déroulante $sql = "select * from tblcategories order by nomCat" ; $rs = mysql_query($sql) or die("Erreur de requête : $sql" ) ; ?> <form method="get" action="" > <input type="hidden" name="page" value="06" /> <select name="idCat" class="select"> <?php while ($row = mysql_fetch_array($rs)) { extract($row) ; $buf = "" ; if ($id == $idCat) { $buf = "selected" ; } ?> <option <?php print $buf ?> value="<?php print $idCat ?>"> <?php print $nomCat ?> </option> <?php } ?> </select> <input type="submit" value=" ok " /> </form> // pour afficher les catégorie dans ma liste déroulante <?php } ?> <?php function listeRecettes($idCat) { // pour afficher les recettes de la catégorie sélectionnée $sql = "SELECT R.*, P.* FROM tblrecettes R INNER JOIN tblcategories P ON R.idCat = P.idCat WHERE P.idCat = $idCat ORDER BY R.nomRecettes "; $rs = mysql_query($sql) or die ("Erreur de requête:$sql" ); print "<table>" ; $i=1 ; while($row=mysql_fetch_array($rs)) { extract($row) ; $photos = $_FILES["photos"] ; if (($i % 2 ) == 0) { $classe = "paire" ; } else { $classe = "impaire" ; } ?> <br /><br /><p class="titre_recettes"> // Le tableau avec toutes les recettes <tr class="<?php print $classe;?>"> <th rowspan="2" valign="middle" ><a href="index.php?page=23"><img src="<?php print $photos ;?>" class="photo" /></th> <th valign="middle"><?php print $nomRecettes;?> (<?php print $nomCat ;?> )</th> </tr> <tr class="<?php print $classe;?>"> <td valign="top">Temps de préparation: <?php print $temps_prepa;?> - Temps de cuisson: <?php print $temps_cuisson;?><br />Difficulté: <?php print $difficulte;?></td> </tr> <?php $i++ ; } print "</table>" ; } ?> </head> <body> <?php include "include/connexion.inc.php" ; ?> <article> <label for="categorie" class="select">Rechercher par catégorie</label> <?php // Afficher le tableau sur la page listeCat($idCat) ; listeRecettes($idCat) ; ?> </article> </body> </html>
A voir également:
- Comment créer un lien avec des éléments d'une base de données?
- Créer un lien pour partager des photos - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
- Comment créer un compte gmail - Guide
- Lien url - Guide
4 réponses
Tu melanges le HTML et le PHP et c'est imbuvable :
Pour a deuxieme fonction :
Pour afficher tu fais :
Un truc dans le genre ... Je suis pas sur que la deuxième fonction fonctionne !
function listeCat($idCat) { // pour afficher les catégorie dans ma liste déroulante
$sql = "select *
from tblcategories
order by nomCat" ;
$rs = mysql_query($sql)
or die("Erreur de requête : $sql" ) ;
while ($l = mysql_fetch_array($rs))
{
if ($id == $idCat) {
$buf = "selected" ;
}
$option .= "<option $buf value='$idCat'>$nomCat</option>";
}
return "<select name='categorie'> $option </select>";
}
?>
Pour a deuxieme fonction :
function listeRecettes($idCat) { // pour afficher les recettes de la catégorie sélectionnée
$sql = "SELECT R.*, P.*
FROM tblrecettes R
INNER JOIN tblcategories P
ON R.idCat = P.idCat
WHERE P.idCat = $idCat
ORDER BY R.nomRecettes ";
$rs = mysql_query($sql) or die ("Erreur de requête:$sql" );
$tab = "<table>" ;
$i=1 ;
while($row=mysql_fetch_array($rs)) {
extract($row) ;
$photos = $_FILES["photos"] ;
if (($i % 2 ) == 0) {
$classe = "paire" ;
} else {
$classe = "impaire" ;
}
$tab .= "
<tr class='$classe'>
<th rowspan='2' valign='middle' ><a href='index.php?page=23'><img src='$photos' class='photo /></th>
<th valign='middle>$nomRecettes $nomCat </th>
</tr>
<tr class='$classe'>
<td valign='top'>Temps de préparation: $temps_prepa;> - Temps de cuisson: $temps_cuisson <br />Difficulté: $difficulte </td>
</tr>
";
}
$i++ ;
}
$tab .= "</table>" ;
}
return $tab;
Pour afficher tu fais :
</head>
<body>
<?php
include "include/connexion.inc.php" ;
?>
<article>
<label for="categorie" class="select">Rechercher par catégorie</label>
<?php // Afficher le tableau sur la page
echo listeCat($idCat) ;
echo listeRecettes($idCat) ;
?>
</article>
</body>
</html>
Un truc dans le genre ... Je suis pas sur que la deuxième fonction fonctionne !
Merci pour la réponse.
Oui, je débute et je mélange peut-être un peu.
J'ai essayé mais en effet, il doit y avoir quelque chose qui ne va pas car ça ne marche pas.
Je vais regarder en profondeur ;-)
Oui, je débute et je mélange peut-être un peu.
J'ai essayé mais en effet, il doit y avoir quelque chose qui ne va pas car ça ne marche pas.
Je vais regarder en profondeur ;-)
Voilà, j'ai changé mon code
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: https://www.marmiton.org/recettes/recherche.aspx?type=all&aqt=poulet mais je n'y arrive pas :??:
<?php extract($_GET); if(!isset($idCat)) { $idCat= "29"; } ?> <label for="categorie" class="select">Rechercher par catégorie</label> <?php include "include/connexion.inc.php" ; ?> <?php echo'<form method="get" action="" >'; echo'<input type="hidden" name="page" value="06" />'; $reponse = mysql_query("select * from tblcategories order by nomCat" ); echo'<select name="idCat">'; while ($donnees = mysql_fetch_array($reponse) ) { echo '<option value="'.$donnees['idCat'].'">'.$donnees['nomCat'].'</option>'; } echo'</select>'; echo'<input type="submit" value=" ok ">'; echo'</form>'; ?> <br /><br /> <?php $sql = "SELECT R.*, P.* FROM tblrecettes R INNER JOIN tblcategories P ON R.idCat = P.idCat WHERE P.idCat = $idCat ORDER BY R.nomRecettes "; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); echo "<table>\n"; while ($data = mysql_fetch_array($req)) { // on affiche les résultats echo "<tr>"; echo "<td rowspan="2" padding-lef="1em" padding-right="1em" color="#900" text-align="left">"; echo '<a href="'.$data.'"><img src="./mini/'.$photo.'" border="none" height="auto" width="100px"/><br/></a>'; echo "</td>"; echo "<th padding-lef="1em" padding-right="1em" color="#900" text-align="left">"; echo ''.$data['nomRecettes'].' ('; echo ''.$data['nomCat'].')'.'<br />'; echo "</th>"; echo "</tr>"; echo "<tr>"; echo "<td padding-lef="1em" padding-right="1em" color="#900" text-align="left">"; echo 'Temps de préparation: '.$data['temps_prepa'].' - '; echo 'Temps de cuisson: '.$data['temps_cuisson'].'<br />'; echo 'Difficulté: '.$data['difficulte'].'<br />'; echo "</td>"; echo "</tr>"; } echo "</table>\n"; mysql_free_result ($req); mysql_close (); ?> </body> </html>
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: https://www.marmiton.org/recettes/recherche.aspx?type=all&aqt=poulet mais je n'y arrive pas :??:
Voilà, j'ai changé mon code:
Pour la page recettes.php (avec la liste des recettes):
Et pour la page qui affiche la recette:
Mais voilà ce qui s'affiche:
Erreur SQL !
SELECT R.*, P.* FROM tblrecettes R INNER JOIN tblcategories P ON R.idCat = P.idCat WHERE P.idRecettes="4"
No database selected
Pour la page recettes.php (avec la liste des recettes):
<?php extract($_GET); if(!isset($idCat)) { $idCat= "29"; } ?> <label for="categorie" class="select">Rechercher par catégorie</label> <?php echo'<form method="get" action="" >'; echo'<input type="hidden" name="page" value="06" />'; $reponse = mysql_query("select * from tblcategories order by nomCat" ); echo'<select name="idCat">'; while ($donnees = mysql_fetch_array($reponse) ) { echo '<option value="'.$donnees['idCat'].'">'.$donnees['nomCat'].'</option>'; } echo'</select>'; echo'<input type="submit" value=" ok ">'; echo'</form>'; ?> <?php include "include/connexion.inc.php" ; ?> <br /><br /> <?php $sql = "SELECT R.*, P.* FROM tblrecettes R INNER JOIN tblcategories P ON R.idCat = P.idCat WHERE P.idCat = $idCat ORDER BY R.nomRecettes "; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); echo "<table>\n"; while ($data = mysql_fetch_array($req)) { // on affiche les résultats echo "<tr>"; echo "<td rowspan="2" padding-lef="1em" padding-right="1em" color="#900" text-align="left">"; echo '<a href="inc/recettes_affichage.php?id_recette_a_lire=' , $data['idRecettes'] , '"><img src="./mini/'.$photo.'" border="none" height="auto" width="100px"/><br/></a>'; echo "</td>"; echo "<th padding-lef="1em" padding-right="1em" color="#900" text-align="left">"; echo ''.$data['nomRecettes'].' ('; echo ''.$data['nomCat'].')'.'<br />'; echo "</th>"; echo "</tr>"; echo "<tr>"; echo "<td padding-lef="1em" padding-right="1em" color="#900" text-align="left">"; echo 'Temps de préparation: '.$data['temps_prepa'].' - '; echo 'Temps de cuisson: '.$data['temps_cuisson'].'<br />'; echo 'Difficulté: '.$data['difficulte'].'<br />'; echo "</td>"; echo "</tr>"; } echo "</table>\n"; mysql_free_result ($req); mysql_close (); ?> </body> </html>
Et pour la page qui affiche la recette:
<?php include "include/connexion.inc.php" ; ?> <?php if (!isset($_GET['id_recette_a_lire'])) { echo 'Sujet non défini.'; } else { echo'<form method="get" action="" >'; echo'<input type="hidden" name="page" value="23" />'; $sql = 'SELECT R.*, P.* FROM tblrecettes R INNER JOIN tblcategories P ON R.idCat = P.idCat WHERE P.idRecettes="'.$_GET['id_recette_a_lire'].'"'; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); while ($data = mysql_fetch_array($req)) { echo "<tr>"; echo "<td> "; echo ''.$data['nomCat'].')'.'<br />'; echo "</td>"; echo "</tr>"; } ?> <table>
Mais voilà ce qui s'affiche:
Erreur SQL !
SELECT R.*, P.* FROM tblrecettes R INNER JOIN tblcategories P ON R.idCat = P.idCat WHERE P.idRecettes="4"
No database selected