Salut à tous,
J'ai deux tables (news et news_commentaires) dans la table news _commentaires j'ai un champ news_id qui me permet de faire la jonction entres les deux tables. J'arrive bien à faire mon SELECT pour afficher les news et les commentaires . Mais lorsque je veux compter le nombre de commentaires en rapport avec l' ID de la news. Cela me renvoie à chaque fois le nombre total de commentaires .
<?php ob_start() ?>
<!--Affichage dynamique des metas
* @Titre
* @keywords fr
* @keywords en
* @Descriptions -->
<title>Des nouvelles news</title>
<meta name="Keywords" lang="fr" content="" />
<meta name="Keywords" lang="en" content="" />
<meta name="description" content="" />
<?php $meta = ob_get_clean(); ?>
<?php ob_start() ?>
<!--CSS Dynamique. Correspond à la page en cours */-->
<link href="<?php echo WEBROOT ?>/css/news/news.css" rel="stylesheet" type="text/css" />
<?php $css = ob_get_clean(); ?>
<?php ob_start() ?>
<!--Recherche Dynamique
* @h1 = Titres du bandeau
* @form l'action pointe sur le fichier search.php
* du repertoire en cours.
* @value = Modifie l'invite du champs de recherche
*/-->
<h1>Les news</h1>
<form class="search" method="get" action="search">
<p class="champs">
<input type="text" name="q" id="q" title="Recherchez une news..."
value="Recherchez une news..." tabindex="1">
</input></p>
</form>
<?php $search = ob_get_clean(); ?>
<?php
/* Systeme de pagination*/
$sql = $bdd->query('SELECT COUNT(id) as nbArt FROM news');
$req = ($sql) or die('Erreur SQL <br> Vérifier votre table');
$data = $sql->fetch();
$nbArt = $data'nbArt'];
$perPage = 3;
$nbPage= ceil($nbArt/$perPage);
if(isset($_GET'id']) && $_GET'id']>0 && $_GET'id']<=$nbPage){
$cPage = $_GET'id'];
}
else{
$cPage =1;
}
/**/
$sql = $bdd->query("SELECT * FROM
news_categories
INNER JOIN news
ON news_categories.id = news.news_id
ORDER BY date ASC LIMIT ".(($cPage-1)*$perPage).",$perPage");
$req = ($sql) or die('Erreur SQL <br> Vérifier votre table');
?>
<!--Affichage dynamique du contenu -->
<?php ob_start() ?>
<?php
$retour = $bdd->query("SELECT COUNT(*) AS nbre_entrees
FROM news_commentaires
INNER JOIN news
ON news_commentaires.news_id = news.id " );
$req = ($retour) or die('Erreur SQL <br> Vérifier votre table');
$donnees = $retour->fetch();
while($data = $sql->fetch()):?>
<div class="content">
<p class="img_news "><IMG SRC="http://placekitten.com/200/240"></p>
<span class="etiquette">
<h2><?php echo $data"titre"]?></h2>
<ul class="down">
<li>Poste le <?php echo date("j/n/Y G:i", strtotime($data"date"]))?><li>
<li>categories <?php echo $data"cat"]?><li>
<li><?php echo $donnees'nbre_entrees']?> commentaires<li>
<?php if ($donnees'nbre_entrees'] == 0){
echo "RIEN";
}else{
echo "nombre de commentaires";
}?>
</ul>
<p class="dsc"><?php echo $data"contenu"]?></p>
<?php echo "<p class=\"plus\"><a class=\"plus\" href=\"plus&id={$data"id"]}\">Lire la suite</a></p>"; ?>
<span>
</div>
<?php endwhile; ?>
<div id="paginate">
<?php
for($i=1;$i<=$nbPage;$i++){
if($i==$cPage){
echo "<div id=\"pagination\">$i</div>";
}
else{
echo "<div id=\"pagination\"><a href=\"news&id=$i\">$i</a></div>";
}
}
?>
</div>
<?php $content = ob_get_clean(); ?>
<?php ob_start() ?>
<!--Menu Dynamique-->
<h3>Categories</h3>
<ul class="nav_v">
<li><a href="category/index&id=1">Multimedia</a></li>
<li><a href="category/index&id=2">Art graphique</a></li>
<li><a href="#">Communication</a></li>
<li><a href="#">High-Tech</a></li>
<li><a href="#">Motion</a></li>
</ul>
<?php $sidebar = ob_get_clean(); ?>
Tu peux nous donner seulement ta requête parceque là impossible de trouver la requête dans ton code.
Et voilou !!
$retour = $bdd->query("SELECT COUNT(*) AS nbre_entrees
FROM news_commentaires
INNER JOIN news
ON news_commentaires.news_id = news.id " );
$req = ($retour) or die('Erreur SQL <br> Vérifier votre table');
$donnees = $retour->fetch();
J'y pensais,
ton problème vient du fait que tu ne précises pas l'id de l'article dont tu veux calculer le nombre de posts liés,
Donc il aurait fallut que tu rajoutes la condition voulue avec le "WHERE news.id = $idDeTaNews"
pourquoi ne pas faire simple, tu n'as pas besoin de jointure.
$retour = $bdd->query("SELECT COUNT(*) AS nbre_entrees FROM news_commentaires as ns where ns.news_id = ".$id_news );