Bonjour,
je viens ici demander un peu d'aide SVP, car je galère à finaliser une requete avec des jointures.
Mon but est de récupérer ma liste des catégories dans ma page de gestions des catégories, et aussi d'afficher à coté du Nom de chaque catégories le nombre d'articles publiés (statut 1) par catégorie.
Avec un search WHERE mots clés entrés pour afficher mes catégories selon mots clés entrés, je ni arrive pas.
Avec le code ci-dessous, je n'arrive pas à faire en sorte que le search cherche dans la table categories.
Actuellement, mes catégories s'affichent toutes, quelque soit les mots clés entrés...
Peut on m'aider Svp ?
Voici mon code :
Merci beaucoup.
Modifié par dew (16 Oct 2015 - 10:30)
je viens ici demander un peu d'aide SVP, car je galère à finaliser une requete avec des jointures.
Mon but est de récupérer ma liste des catégories dans ma page de gestions des catégories, et aussi d'afficher à coté du Nom de chaque catégories le nombre d'articles publiés (statut 1) par catégorie.
Avec un search WHERE mots clés entrés pour afficher mes catégories selon mots clés entrés, je ni arrive pas.
Avec le code ci-dessous, je n'arrive pas à faire en sorte que le search cherche dans la table categories.
Actuellement, mes catégories s'affichent toutes, quelque soit les mots clés entrés...
Peut on m'aider Svp ?
Voici mon code :
<?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 :
* _récupérer liste des catégories selon mots clés entrés dans search, et nombre d'articles par catégories :
* SELECT champs de la table categories
* , et COUNT le nombre de articles.id (dans les parenthèses du count mettre (articles.id) au lieu de (*), servira à récup WHERE statut articles = 1 (publiés))
* FROM table categories
* JOIN table categories_jointes_articles
* sur categories.id est = à categories_jointes_articles.id_categorie
*
* _count nombre d'articles par catégories uniquement WHERE articles.statut = 1 (statut publiés)
* JOIN table articles
* sur articles.id = à categories_jointes_articles.id_article
* AND articles.statut est = à 1 (AND ".$tablePosts.".statut = ?";, pour afficher aussi les catégories qui ne sont pas reliées à des articles where statut = 1)
*/
$sql = "SELECT categories.id, categories.nom
, COUNT(articles.id) as nb_articles
FROM categories
LEFT OUTER JOIN categories_jointes_articles
ON categories.id = categories_jointes_articles.id_categorie
LEFT OUTER JOIN articles
ON articles.id = categories_jointes_articles.id_article
AND ".$tablePosts.".statut = ?";
$sql .= " AND categories.nom LIKE ? "; // c'est cette ligne que je ne sais pas où mettre
$sql .= " GROUP BY categories.id, categories.nom";
$requete = self::getDb()->prepare($sql);
$requete->bindValue(1, 1, PDO::PARAM_INT);
$requete->bindValue(2, '%'.$mots.'%', PDO::PARAM_STR);
$requete->execute();
$requete->setFetchMode(PDO::FETCH_OBJ);
return $requete;
Merci beaucoup.
Modifié par dew (16 Oct 2015 - 10:30)