Salut,
Alors j'ai une fonction récursive qui a pour but de compter le nombre de sujet dans les catégorie + sous catégorie d'un forum. Je fais donc un count en mysql, le problème eet que je n'arrive pas a additionner tout les count. Par exemple si j'ai 2 sujet dans la catégorie et 2 dans la sous catégorie, je me retrouve avec 22 au lieu de 4.
Voila le code :
function nombresujet($id)
{
$qnm=mysql_query("SELECT COUNT(*) FROM fsujet WHERE id='$id'");
$nbrsujet=mysql_result($qnm,0);
$qnm2=mysql_query("SELECT * FROM arbo WHERE id_parent='$id'");
while($res3=mysql_fetch_array($qnm2)){
nombresujet($res3['id']);}
}
function nombresujet($id)
{
$qnm=mysql_query("SELECT COUNT(*) FROM fsujet WHERE catesujet='$id'");
$nbr=mysql_result($qnm,0);
$qnm2=mysql_query("SELECT * FROM arbo WHERE id_parent='$id'");
while($res3=mysql_fetch_array($qnm2)){
$nbr+=nombresujet($res3['id']);}
return $nbr;
}
echo nombresujet(....);
tu devrais indenter ton code... je ne vais pas l'indenter a ta place a chaque fois... c'est plus lisible quand c'est indente
/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
Bah la elle n'y est pas car toutes les facons d'additionner que j'ai essayé ne marchais pas, j'ai essayé avec un tableau, avec une boucle et d'autre essai désespérés.
Si tu pouvais justement me dire comment additionné les différent $nbrsujet ou plutot les différents résultat du count... ca m'avancerais pas mal ou en tout cas me donné des pistes.
Merci de ta réponse :-)
function nombresujet($id)
{
$qnm=mysql_query("SELECT COUNT(*) FROM fsujet WHERE id='$id'");
$nbrsujet=mysql_result($qnm,0);
$qnm2=mysql_query("SELECT * FROM arbo WHERE id_parent='$id'");
while($res3=mysql_fetch_array($qnm2)){
$nbrsujet+=nombresujet($res3['id']);
}
return $nbrsujet; }
Merci, ca marche mais a moitier en plus logiquement j'ai du mal a tout comprendre :-(
Donc j'ai fais ca :
function nombresujet($id)
{
$qnm=mysql_query("SELECT COUNT(*) FROM fsujet WHERE catesujet='$id'");
$nbr=mysql_result($qnm,0);
$qnm2=mysql_query("SELECT * FROM arbo WHERE id_parent='$id'");
while($res3=mysql_fetch_array($qnm2)){
$nbr+=nombresujet($res3['id']);}
echo $nbr;
return $nbr;
}
J'ai remplacé $nbrsujet par $nbr, et rajouté un echo $nbr mais il est peut être mal placé car au lieu de m'afficher 5 il m'affiche 25 sachant qu'il y a 3 sujet dans la catégorie et 2 dans la sous catégorie. Comment faire pour n'affiché que 5 ? et pas le nombre de la sous catégorie ?
Je sais pas si je suis trés clair...
Merci ! super c'est ca, t'es un génie du php. Est ce que tu pourrais m'expliquer un peu la logique du echo nombresujet(..) car d'ici a ce que je comprenne tout seul...
indenter, c'est mettre des tabulations comme je l'ai fait plus haut, ca sert a separer les blocs, on relit mieux son code ensuite.
l'histoire du echo, faut le voir comme une fonction en math :
ta fonction nombresujet :
nombresujet est une fonction qui prend comme parametre un $id, et qui renvoie le nombre de sujets qui ont pour parent (au sens large) le sujet qui a pour id $id.
ca, c'est ce qu'elle fait, maintenant, faut voir comment elle le fait :
elle cherche le nombre d'enfants directs.
pour chaque enfant direct, elle veut le nombre d'enfants(au sens large) de cet enfant direct, et elle les somme.