comptage des réponses dans forum - Programmation
Marsh Posté le 23-08-2001 à 12:55:40
"SELECT Count(*) AS nombre_rep FROM forum WHERE parent = $id";
et avec = '$id'
Marsh Posté le 24-08-2001 à 02:29:33
bin tu mets pas '$id' sinon l'id est traitée comme chaine de caractères et c'est un entier.
par contre ton code est soit incohérent et plein d'erreurs, soit il en manque la moitié... t'arrives à avoir la liste des messages avec ça ?
tu dois faire la query qui donne la ligne du message et pendant que tu boucle pour afficher chaque ligne, tu fais une query qui compte le nombre de message fils (where parent=$id).
sinon à première vue et si il manque du code, je dirais : $id = cpt; ==> $id = $cpt; ça ira déjà mieux.
Marsh Posté le 24-08-2001 à 09:26:55
bon ben j'ai essayé $id = $cpt, mais ca me renvoie une erreure, ensuite j'ai ajouté parent ='$id' comme l'a conseillé kayasax et la j'ai ça en affichage:
titre: bienvenue sur le forum
nombre réponses: Resource id #31
nombre réponses: Resource id #31
titre: titre
nombre réponses: Resource id #31
titre: titre
nombre réponses: Resource id #31
titre: titre
nombre réponses: Resource id #31
titre: titre
nombre réponses: Resource id #31
titre: titre
nombre réponses: Resource id #31
titre: titre
nombre réponses: Resource id #31
titre: sup
j'ai pour essayé en fait plusieur fois le titre qui s'appelle titre, mais pourquoi il y a ressource id #31?
Marsh Posté le 24-08-2001 à 10:03:10
Essaie un truc du genre :
$query = "SELECT * FROM table WHERE parent=0";
$result = mysql_db_query ($dbname,$query) or die ("Erreur de connexion à la base de donnée" );
while($row=mysql_fetch_object($result))
{
$query2 = "SELECT COUNT(cpt) FROM table WHERE parent=$row->cpt";
$result2 = mysql_db_query ($dbname,$query2) or die ("Erreur de connexion à la base de donnée" );
$row2=mysql_fetch_row($result2);
echo "Discussion : $row->titre Message : $row->texte Nombre de réponse : ".$row2[0]." <br>";
$query3 = "SELECT * FROM table WHERE parent=$row->cpt";
$result3 = mysql_db_query ($dbname,$query3) or die ("Erreur de connexion à la base de donnée" );
while($row3=mysql_fetch_object($result3))
{
echo " Réponse : $row3->titre Message : $row3->texte<br>";
}
echo "<br>----------------------------<br>";
}
?>
Marsh Posté le 24-08-2001 à 18:31:55
ok je te remercie vraiment, enfin ca fonctionne.
tu peux pas savoir tout ce que j'ai essayé.
@+ et encore merci
Marsh Posté le 27-08-2001 à 12:06:23
Y-a pas de quoi, par contre c'est pas optimisé (nb de requête !!!).
Marsh Posté le 27-08-2001 à 14:11:39
Allez, la même chose avec une seule requête :
<?php
function nb_reponse($var)
{
global $i,$parent;
$nb_rep=0;
$k=0;
while($k<$i)
{
if($parent[$k]==$var)
{
$nb_rep++;
}
$k++;
}
return $nb_rep;
}
$query = "SELECT * FROM ta_table";
$result = mysql_db_query ($db_name,$query) or die ("Erreur de connexion à la base de donnée" );
$i=0;
while($row = mysql_fetch_object($result))
{
$cpt[$i]=$row->cpt;
$parent[$i]=$row->parent;
$titre[$i]=$row->titre;
$texte[$i]=$row->texte;
$i++;
}
$j=0;
while($j<$i)
{
if($parent[$j]==0)
{
echo "Discussion : $titre[$j] Message : $texte[$j] Nombre de réponse : ".nb_reponse($cpt[$j])." <br>";
$jj=0;
while($jj<$i)
{
if($parent[$jj]==$cpt[$j])
{
echo " Réponse : $titre[$jj] Message : $texte[$jj]<br>";
}
$jj++;
}
echo "<br>----------------------------<br>";
}
$j++;
}
?>
Marsh Posté le 23-08-2001 à 11:30:53
salut à tous, j'ai une coquille dans mon script si vous pouvez m'aider...
j'ai fait un forum, il m'affiche tous les titres de message comme prévu, mais pas le nombre de réponses à ces titres.
Ma table forum se présente ainsi:
cpt parent titre texte
48 0 salut yep,yep
49 0 bonjour essai du forum
50 48 re-salut reponse à salut
51 49 re-bonjour test réponse
explication: le message d'origine est à 0 dans PARENT, la réponse à ce méssage donne un chiffre dans PARENT égale au CPT du méssage d'origine.
questions:
- ou est l'erreure dans mes lignes?
- l'option "SELECT count(*)..." fonctionne-t-elle en PHP3 ou seulement en PHP4?
<?
//connection à la base
include('include_connect.php3');
$selec = "SELECT titre, cpt, parent FROM forum WHERE parent='0'";
$resul_selec = mysql_query($selec) or die(mysql_error());
$id = cpt;
$compar = "SELECT Count(*) AS nombre_rep FROM forum WHERE parent = $id";
$resul_compar = mysql_query($compar) or die(mysql_error());
$query = "SELECT titre FROM forum WHERE parent='0'";
$resul_query = mysql_query($query) or die(mysql_error());
//Affichage du titre et du nombre de réponses
while (list($titre)= mysql_fetch_row($resul_query))
{
echo "
<BR>titre: $titre
<BR>nombre réponses: $nombre_rep
}
mysql_close();
?>
voila si vous trouves une réponse ca m'aiderai beaucoup passkeu la je sèche...