compter le nb de commentaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : compter le nb de commentaire

par djtec » 14 juin 2007, 09:02

En faites j'ai trouvé hier soir mais a cause du mod qui interdit le double post je pouvais pas repondre désolé

J'ai fait comme ceci
while($resultat = mysql_fetch_array($p)){

$resultat['titre'] = substr($resultat['titre'], 0, 60);

include ('includes/function_bbcode.php');


if (!isset($_GET['comment']))
{
$sqlc = "select count(id_news) as qte from ".$prefixe."_comment where id_news='".stripslashes($resultat['id'])."'";
$pc = mysql_query($sqlc,$c);
$comment = mysql_result($pc, 0);
}
else 
$comment = intval($_GET['comment']);


$max=140; 
if(strlen($texte)>=$max){$texte=substr($texte,0,$max); 
$espace=strrpos($texte," "); 
$texte=substr($texte,0,$espace)."..."; } 

echo'
<div class="post" id="post-'.stripslashes($resultat['id']).'">
	<div class="date"><span>'.stripslashes($resultat['mois']).'</span> '.stripslashes($resultat['jour']).'</div>
		<div class="title">
          <h3><a href="index.php?name=view_news&id='.stripslashes($resultat['id']).'" title="'.stripslashes($resultat['titre']).'">'.stripslashes($resultat['titre']).'</a></h3>
          <div class="postdata"><span class="category">Posté à '.stripslashes($resultat['heure']).'</span> <span class="comments">';
		  if ($comment == 0){ echo 'Aucun commentaire';} 
		elseif($comment == 1){ echo '<a href="index.php?name=view_comment_news&id='.stripslashes($resultat['id']).'">Un seul commentaire</a>';} 
		else {echo '<a href="index.php?name=view_comment_news&id='.stripslashes($resultat['id']).'">'.$comment.' commentaires</a>';}echo' »</span></div>
		  </div>
          <div class="entry">
            <p>'.$texte.'</p>
          </div>
          <div class="suite">
            <span class="txt"><a href="index.php?name=view_news&id='.stripslashes($resultat['id']).'" title="'.stripslashes($resultat['titre']).'">[Lire la suite]</a></span>
          </div>
</div>
<br />
';
Et sa fonctionne nikel

Je te remerci Cyrano

++

par Cyrano » 14 juin 2007, 06:55

Bon, ben tu fais une requête comme ceci :

Code : Tout sélectionner

SELECT n.id AS news, COUNT(c.id) AS total_reponses FROM sg__news n LEFT OUTER JOIN sg__comment c ON n.id = c.id_news GROUP BY news;
Tu vas obtenir une ligne par news : un mysql_num_rows() va te donner le nombre de news et pour chaque ligne, la seconde donnée sera le nombre de réponse par sujet.

par djtec » 13 juin 2007, 23:48

Voici la table news

Code : Tout sélectionner

CREATE TABLE `sg__news` ( `id` int(11) NOT NULL auto_increment, `titre` text NOT NULL, `texte` text NOT NULL, `date` date NOT NULL default '0000-00-00', `heure` time NOT NULL default '00:00:00', PRIMARY KEY (`id`) ) TYPE=MyISAM ;
Voici la table comment

Code : Tout sélectionner

CREATE TABLE `sg__comment` ( `id` int(11) NOT NULL auto_increment, `id_news` varchar(255) NOT NULL default '', `pseudo` varchar(255) NOT NULL default '', `email` varchar(255) NOT NULL default '', `titre` varchar(255) NOT NULL default '', `texte` text NOT NULL, `date` date NOT NULL default '0000-00-00', `heure` time NOT NULL default '00:00:00', PRIMARY KEY (`id`) ) TYPE=MyISAM ;

par Cyrano » 13 juin 2007, 22:15

Ça se fait avec une clause GROUP BY

Il faudrait avoir la structure de tes tables et comment elles sont liées pour savoir où compter les news et où compter les commentaires.

par djtec » 13 juin 2007, 22:10

Oui pourquoi pas mais je ne sais pas du tout comment faire la requete ni l'affichage

par Cyrano » 13 juin 2007, 21:58

Et pourquoi ne fias-tu pas le comptage des commentaires en même temps dans la même requête qui compte les news ? Avec une jointure, ça pourrait très bien se faire.

par djtec » 13 juin 2007, 21:07

La le script que j'ai mit compte le nmbre de news et non le nombre de commentaire la fonction de comptage est la pour l'affichage sur plusieur page si y a besoin.

Je sais pas du tout comment faire pour l'affichage du nb de commentaire car il faudrait un script du genre
if (!isset($_GET['total']))
{
$comment = le code du comptage de nb de commentaire
}
else
$comment = 'Pas de commentaire';
J'espère avoir été assez expliciste dans le genre de script car c'est dur a expliquer quand on connait pas

par Cyrano » 13 juin 2007, 20:19

Commence par virer les "@" devant tes fonctions, s'il y a des erreurs, il faut les voir.

Ensuite, il y a ceci :
$total = mysql_result($p,'0','qte');
Tu envoies trois paramètres dans une fonction qui n'en attend que deux :
Essaye en mettant à la place :
$total = mysql_result($p, 0);
Enfin, tu as un :
if($total < 1)
Où donc est le "else" qui devrait suivre pour traiter l'autre option "Il y a n commentaires" :?:

par djtec » 13 juin 2007, 20:04

Voici mon script
<? 
$nb = $board_newspg;


if (!isset($_GET['page'])) $page = 1;
else $page = intval($_GET['page']);

if (!isset($_GET['total']))
{
$sql = "select count(*) as qte from ".$prefixe."_news";
$p = @mysql_query($sql,$c);
$total = @mysql_result($p,'0','qte');
}
else $total = intval($_GET['total']);

$debut = ($page - 1) * $nb;
		

$sql = "SELECT *, DATE_FORMAT(date, '%M') as mois, DATE_FORMAT(date, '%d') as jour, DATE_FORMAT(heure, '%H:%i') as heure FROM ".$prefixe."_news ORDER BY id DESC";

if($p = @mysql_query($sql,$c)){
$i = 1;
while($resultat = @mysql_fetch_array($p)){

$resultat['titre'] = substr($resultat['titre'], 0, 60);

include ('includes/function_bbcode.php');

$max=140; 
if(strlen($texte)>=$max){$texte=substr($texte,0,$max); 
$espace=strrpos($texte," "); 
$texte=substr($texte,0,$espace)."..."; } 

echo'
<div class="post" id="post-'.stripslashes($resultat['id']).'">
	<div class="date"><span>'.stripslashes($resultat['mois']).'</span> '.stripslashes($resultat['jour']).'</div>
		<div class="title">
          <h3><a href="index.php?name=view_news&id='.stripslashes($resultat['id']).'" title="'.stripslashes($resultat['titre']).'">'.stripslashes($resultat['titre']).'</a></h3>
          <div class="postdata"><span class="category">Posté à '.stripslashes($resultat['heure']).'</span> <span class="comments"><a href="index.php?name=view_news&id='.stripslashes($resultat['id']).'#comment" title="Commentaires sur '.stripslashes($resultat['titre']).'">No Comments »</a></span></div>
		  </div>
          <div class="entry">
            <p>'.$texte.'</p>
          </div>
          <div class="suite">
            <span class="txt"><a href="index.php?name=view_news&id='.stripslashes($resultat['id']).'" title="'.stripslashes($resultat['titre']).'">[Lire la suite]</a></span>
          </div>
</div>
<br />
';
$i++;
}

echo'';

if($total < 1) echo'
<div align="center">
<table cellpadding="0" cellspacing="0" align="center" width="685">
	<tr>
		<td align="center">Aucune news pour le moment.</td>
	</tr>
</table>
</div>
';

// calcul du nombre de pages
		 $nbpages = ceil($total / $nb); // arrondi a l'entier superieur
		 // on affiche les pages
echo'<div align="right">';	
$page_moins_un = $page-1;
if($page_moins_un >= 1) 
{
echo'<a href="?name=news&page='.$page_moins_un.'&total='.$total.'" class="page">«</a>&nbsp;&nbsp;';
}
							
for($i = 1;$i <= $nbpages;$i ++)
{
echo'<a href="?name=news&page='.$i.'&total='.$total.'" class="page">'.$i.'</a>&nbsp;&nbsp;';
if($i < $nbpages) echo '';
}

$page_plus_un = $page+1;
if($page_plus_un <= $nbpages) 
{
echo'<a href="?name=news&page='.$page_plus_un.'&total='.$total.'" class="page">»</a>';
}

echo'</div>';
$i++;
}
mysql_close();
?>
J'ai cette fonction qui sert a compter le nombre de news pour l'affichage par page
if (!isset($_GET['total']))
{
$sql = "select count(*) as qte from ".$prefixe."_news";
$p = @mysql_query($sql,$c);
$total = @mysql_result($p,'0','qte');
}
else $total = intval($_GET['total']);
Mais cette fonction indique 0 s'il y a rien je ne sais vraiment pas comment faire désoler.

par Cyrano » 13 juin 2007, 19:38

Méthode : tu récupères comment tes commentaires ? N'as-tu pas à ce moment là l'opportunité de les compter et de stocker ce nombre dans une variable ? Ensuite, avec une alternative vérifiant que ce nombre est ou non supérieur à zéro, tu peux définir ce qu'il y a lieu d'afficher.

compter le nb de commentaire

par djtec » 13 juin 2007, 19:00

Bonjour,
J'ai un script de news avec commentaire et je voudrais faire apparaitre le nombre de commentaire présent pour la news et si y a aucun commentaire ça marque pas de commentaire

Exemple:

Si 3 commentaires ça affiche "3 commentaires"

Si aucun commentaire ça affiche "pas de commentaire"

Si quelqu'un a une idée du script qu'il faudrait car j'ai rien touvé.

Merci d'avance.