Créer un portfolio de A à Z : Problème de requête catégories

Par cafreunion, il y a 11 ans


Bonjour,
j'ai suivi le tutoriel sur la création d'un portfolio de A à Z, mais l'osque j'arrive sur l'affichage des catégorie j'ai des erreurs qui s'affiche ci-dessous ma page index.php

<?php $auth = 0; include '../layout/lib/include.php'; include '../layout/lib/image.php'; $condition = ''; $category = false; if(isset($_GET['category'])){ $slug = $db->quote($_GET['category']); $select = $db->query("SELECT * FROM categories WHERE slug=$slug"); if(!isset($_GET['slug'])){ header("HTTP/1.1 301 moved Permanently"); Header('Location:' . WEBROOT); die(); } $category = $select->fetch(); $condition = "works.category_id={$category['id']}"; } $works = $db->query(" SELECT works.name, works.id, works.slug, images.name as image_name FROM works LEFT JOIN images ON images.id = works.image_id $condition ")->fetchAll(); $categories = $db->query("SELECT slug, name FROM categories")->fetchAll(); include '../layout/partials/header.php'; ?> <?php if($category):?> <h1> Mes réalisations <?=$category['name']; ?></h1> <?php var_dump($category);?> <?php else: ?> <h1>Bienvenue sur mon portfolio</h1> <?php endif; ?> <div class="row"> <div class="col-sm-8"> <div class="row"> <?php foreach($works as $k => $work): ?> <div class="col-sm-3"> <a href="/newproject/portfolio/realisation/<?= $work['slug']; ?>"> <img src="/newproject/layout/img/works/<?= resizedName($work['image_name'], 150, 150); ?>" alt=""> <h2><?= $work['name']; ?></h2> </a> </div> <?php endforeach ?> </div> </div> <div class="col-sm-4"> <ul> <?php foreach($categories as $category): ?> <li> <a href="<?= WEBROOT;?>categorie/<?=$category['slug'];?>"> <?= $category['name'];?> </a> </li> <?php endforeach;?> </ul> </div> </div> </div> <?php include '../layout/lib/debug.php';?>``` j'ai les erreurs suivantes : ``` Warning: PDO::query(): in C:\wamp\www\newproject\portfolio\index.php on line 26 Fatal error: Call to a member function fetchAll() on a non-object in C:\wamp\www\newproject\portfolio\index.php on line 26 la ligne 26 : $works = $db->query(" SELECT works.name, works.id, works.slug, images.name as image_name FROM works LEFT JOIN images ON images.id = works.image_id $condition ")->fetchAll();

J'ai aussi le probleme sur la redirection lorsque je clique sur une catégorie, cela me redirige malgre que j'ai des images
Merci de votre aide
Cafreunion

5 réponses

Balbert, il y a 11 ans

Bonjour,

Je pense que l'erreur vient de

$condition = "works.category_id={$category['id']}";

Essaie de le remplacer par le code ci dessous :

$condition = " WHERE works.category_id={$category['id']}";
cafreunion, il y a 11 ans

Bonjour,
Merci pour votre aide, cependant il me reste une problème concernant l'affichage car si je ne neutralise pas une portion du code je peux pas voir la page

$slug = $db->quote($_GET['category']); $select = $db->query("SELECT * FROM categories WHERE slug=$slug"); if(!isset($_GET['slug'])){ header("HTTP/1.1 301 moved Permanently"); Header('Location:' . WEBROOT); die(); }``` pourtant j'ai bien une valeur qui est passé dans le GET mais il me redirige malgrès tout
Balbert, il y a 11 ans

Rebonjour
essaie de remplacer $_GET['slug'] par $_GET['category']

$slug = $db->quote($_GET['category']); $select = $db->query("SELECT * FROM categories WHERE slug=$slug"); if(!isset($_GET['category'])){ header("HTTP/1.1 301 moved Permanently"); Header('Location:' . WEBROOT); die(); }
cafreunion, il y a 11 ans

Merci de votre aide tout fonctionne maintenant
Cafreunion

Metylene, il y a 11 ans

Le but de placer un message en "réponse utile" est que les autres utilisateurs du forum peuvent voir rapidement la solution du sujet. Si tu place ton message de remerciement à cette place, ça n'a pas d'utilité.