Bonjour, donc voila comme précisé dans le titre je suis entrain de faire un module qui classe mes articles en fonction du nombre de commentaire.
Pour cela j’ai une table “article” ou chaque article ajouté prend un certain id
et une seconde table “comment” ou chaque commentaire ajouté prend un id et en plus de ca prend l’id de l’article via un formulaire donc de colonne essentiel : id et id_art.
J’ai réussi à récupérer dans un tableau associatif le nombre de commentaire selon les article grace à ce bout de code:
<?php include('connexion.php'); $[/contents/sql/sqlintro.php3 sql] = "[/contents/sql/sqlsel.php3 SELECT] id_art FROM comment"; $result = mysql_query($sql); while($donnees = mysql_fetch_array($result)) { $tbl_comment[] = $donnees['id_art']; } $tbl_comment = array_unique($tbl_comment); print_r($tbl_comment); echo ''; $max = max($tbl_comment); echo $max; echo '
'; for($i=0 ; $i<=$max ; $i++) { $sql = "SELECT id FROM comment WHERE id_art = $i"; $result = mysql_query($sql); if(mysql_num_rows($result)>0) { $req = "SELECT COUNT(*) AS id FROM comment WHERE id_art = $i"; $result = mysql_query($req); while($donnees = mysql_fetch_array($result)) { $class_plus_comment[$i] = $donnees['id']; } } } print_r($class_plus_comment); ?>
Avec ca j’obtiens : Array ( [2] => 6 [3] => 1 [4] => 2 [11] => 2 )
Donc entre crochet c’est le numéro de l’article et ensuite c’est le nombre de commentaire associé à cette article.
Donc ce que j’aimerais maintenant c’est classé le nombre de commentaire en ordre décroissant ( ca je sais le faire ) mais le probleme c’est que le nombre entre crochet ne suis pas. Je m’explique j’obtiens un nouveau tableau:
Array ( [0] => 6 [1] => 2 [2] => 2 [3] =>1 )
On peut voir que le nombre de commentaire a été classé mais que le numéro de l’article associé n’y est lpus Or moi j’aimerais obtenir ca: Array ( [2] => 6 [4] =>2 [11] => 2 [3] => 1 )
En considérant qu’il y aurait beaucoup plus de commentaire sur beaucoup plus d’article , je pensais récupéré les 5 premiers afin d’afficher le titre de l’article.
Si c’est un peu confus je m’en excuse mais je crois que c’est justement pour ca que je n’y arrive pas.
Donc je résume mes problèmes:
***Classer le tableau par ordre décroissant le nombre de commentaire tout en faisant en sorte que l’id de l’article suive le classement.
( Une fois fais, je pense que récupéré les 5 premières valeur dans un nouveau tableau ne devrait pas être difficile )
***Récupérer le résultat en faisant une boucle, je pense, de ce style la:
Récupération des premières valeurs: [2] => 6
- $sql = “SELECT * FROM article WHERE id=2”;
…
Suivant : [4] => 2
- … [/contents/sql/sqlrestr.php3 WHERE] id=4
Etc…
J’espere que vous quelqu’un sera en mesure de résoudre mon problème.
Merci d’avance.
PS: Si vous avez des chose à redire sur le début du code n’hésitez pas.