Bonne pratique (requete COUNT - afficher nombres d'articles par catégories)

Le problème exposé dans ce sujet a été résolu.

Avec le ce code actuel (avec celui que je viens de coller dans mon message précédant), il m'affiche le nombre d'articles total par catégorie (sans prendre en conte le statut des articles). Je veux que le count affiche le nombre d'articles par catégorie WHERE le statut des article et = à 1. Merci.

Bonjour, j'avais cliqué sur résolu trop top… Y a un dernier problème auquel je n'avais pas pensé. Dans ma page où je gère mes catégories, j'ai un Search pour afficher la liste des catégories WHERE LIKE mots clés entrés. Et je ne sais pas où placer le LIKE dans ce code:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
/*
* categories : Table des catégories qui peuvent etre reliées à des articles
* articles : Table des articles
* categories_jointes_articles : Table pivot (qui a comme champs id_article et id_categorie)
*/
$sql = "SELECT categories.id, categories.nom
        , COUNT(articles.id) as nb_articles
        FROM categories";

// si je met WHERE categories.nom LIKE ? ici,
// PDO me renvoi erreur

$sql .= " LEFT OUTER JOIN categories_jointes_articles
            ON categories.id = categories_jointes_articlesid_categorie

        LEFT OUTER JOIN articles
            ON articles.id = categories_jointes_articles.id_article";
$sql .= " AND articles.statut = ? ";

// Si je met mle LIKE ici, toutes mes catégories s'affichent
// quelques soit les mots clés entrés

$sql .= " GROUP BY categories.id, categories.nom ";


$requete = self::getDb()->prepare($sql);

// bindValue du statut
$requete->bindValue(1, 1, PDO::PARAM_INT);
// bindValue des mots clés entrés
$requete->bindValue(2, '%'.$motsQ.'%', PDO::PARAM_STR);

$requete->execute();
$requete->setFetchMode(PDO::FETCH_OBJ);
return $requete;

Cette ligne :

1
$sql .= " AND categories.nom LIKE ? ";

Je ne sais pas où la mettre. Si je le met juste après le FROM, PDO me renvoi cette erreur: " Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' in …"

si je la met juste avant le GROUP BY, toutes mes catégories s'affichent quelques soit les mots clés entrés. ça fait un bon moment que je galère, et dans Google je ne trouve rien de similaire à mon problème. Merci beaucoup.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte