Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2434 connectés 

 


Dernière réponse
Sujet : comptage des réponses dans forum
FLY LM 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++;
}
 
?>

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
FLY LM 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++;
}
 
?>
FLY LM Y-a pas de quoi, par contre c'est pas optimisé (nb de requête !!!).
mecano1 ok je te remercie vraiment, enfin ca fonctionne.
tu peux pas savoir tout ce que j'ai essayé.
@+ et encore merci
FLY LM 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>";
}
 
?>
mecano1 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?
Sh@rdar 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.
kayasax "SELECT Count(*) AS nombre_rep FROM forum WHERE parent = $id";  
 
et avec  = '$id'
mecano1 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...

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)