Bonjour,
Voila je n'arrive pas à trouver la solution.
J'ai 2 recettes contenant chacune 2 ingrédients.
J'ai bien ma liste de recettes dans un tableau.
Mais mon autre tableau m'affichant le détail de la recette m'affiche les 4 ingrédients des 2 recettes.
Avec le code qui suit, lorsque je clique sur une recette, je récupère bien l'id de la recette dans ma barre d'adresse.
<table id="recettes-table" class="table table-bordered table-striped" width="100%">
<thead>
<tr>
<th>Recettes</th>
<th width="30%">Actions</th>
</tr>
</thead>
<tbody>
<?php foreach (App::getInstance()->getTable('Recette')->all() as $recette): ?>
<tr>
<td onclick="location.href='index.php?p=recettes&id=<?= $recette->id; ?>'"><?= $recette->recettes; ?></td>
<td>
<!-- Bouton Editer -->
<a href="?p=recette.edit&id=<?= $recette->id; ?>" class="btn btn-xs btn-default btn-flat"><span class="glyphicon glyphicon-pencil"></span></a>
<!-- Bouton Imprimer -->
<a href="#" class="btn btn-xs btn-default btn-flat"><span class="glyphicon glyphicon-print"></span></a>
<!-- Bouton Supprimer -->
<form action="?p=recette.delete" method="post" style="display: inline;">
<input type="hidden" name="id" value="<?= $recette->id ?>">
<button type="submit" class="btn btn-xs btn-default btn-flat"><span class="glyphicon glyphicon-trash"></span></button>
</form>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
Lorsque je clique sur une recette, que le détail des ingrédients correspondant s'affiche.
C'est bon, en me posant et regardant tout dans le détail, j'ai réussi.
J'ai modifié ma fonction actuelle comme ceci :
public function getDetailRecette($id)
{
return $this->query("
SELECT C.categories, C.id, R.recettes, R.nbpersonnes, marge, observations, I.ingredients, quantites, I.prix
FROM categories C
JOIN recettes R
ON C.id=R.categories_id
JOIN composition_recettes CR
ON R.id=CR.recettes_id
JOIN ingredients I
ON I.id=CR.ingredients_id
WHERE CR.recettes_id = $id
ORDER BY ingredients ASC
");
}
Et dans ma page PHP j'ajoute donc ce code :
$id = isset($_GET['id']) ? $_GET['id'] : 1;
$details = App::getInstance()->getTable('Recette')->getDetailRecette($id);
Bonsoir,
Tu cherches à detecter quand un clique est fait... donc le reflex devrait direct être >>>> Javascript.
Tu détecte le clique sur ton élément et après tu peux afficher des éléments HTML.
Bonjour,
Merci pour la piste.
C'est parce que dans une autre version, j'avais réussi en intégrant à la fois du code dans une fonction et à la fois dans ma page PHP pour contrôler $id.
function getDetailRecette( $connect, $id ) {
$id = intval($id); <------------------
$query = "
SELECT C.categories, C.id, R.recettes, R.nbpersonnes, marge, observations, I.ingredients, quantites, I.prix
FROM categories C
JOIN recettes R
ON C.id=R.categories_id
JOIN composition_recettes CR
ON R.id=CR.recettes_id
JOIN ingredients I
ON I.id=CR.ingredients_id
WHERE CR.recettes_id = $id <---------------
ORDER BY ingredients DESC";
$result = mysqli_query($connect, $query);
return mysqli_fetch_all( $result, MYSQLI_ASSOC );
}
Et dans ma page PHP, j'avais donc ceci :
$id = isset($_GET['id']) ? $_GET['id'] : 1; <------ Affiche par défaut le contenu de la recette avec l'id 1
$details = getDetailRecette( $connect, $id );
Mais depuis que j'ai tout refait en suivant la formation PHP en POO, je n'arrive pas à reproduire la même chose sans javascript.
Je vais rechercher selon ce que tu m'as dit. Merci