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


cafreunion
Auteur
Réponse acceptée

Merci de votre aide tout fonctionne maintenant
Cafreunion

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']}";

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

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();
}

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é.