A voir également:
- Module articles les plus commentés en php
- Easy php - Télécharger - Divers Web & Internet
- Igfxtray module ✓ - Forum Virus
- Module d'expérience locale francais ✓ - Forum Matériel & Système
- Pas de module ci - Forum TV & Vidéo
- Manque cam module - Forum TNT / Satellite / Réception
8 réponses
Dynamix
Messages postés
202
Date d'inscription
dimanche 22 mars 2009
Statut
Membre
Dernière intervention
30 avril 2011
76
3 nov. 2009 à 12:42
3 nov. 2009 à 12:42
Cela vient certainement de ta boucle car au niveau au niveau du while tu ne devrais avoir en aucun cas plus de 5 titres (à cause du limit 5).
$req = "SELECT article.contenu, article.titre, article.auteur, id_art, COUNT(*) FROM comment, article WHERE article.id = comment.id_art GROUP BY id_art ORDER BY COUNT(*) DESC LIMIT 5";
$result = mysql_query($req) or die(mysql_error());
while($donnees = mysql_fetch_array($result))
{
echo ''.$donnees['titre'].' est classé dans les 5 premiers<br><br>';
}
Pourquoi ne pas laisser que ça?
$req = "SELECT article.contenu, article.titre, article.auteur, id_art, COUNT(*) FROM comment, article WHERE article.id = comment.id_art GROUP BY id_art ORDER BY COUNT(*) DESC LIMIT 5";
$result = mysql_query($req) or die(mysql_error());
while($donnees = mysql_fetch_array($result))
{
echo ''.$donnees['titre'].' est classé dans les 5 premiers<br><br>';
}
Pourquoi ne pas laisser que ça?
Dynamix
Messages postés
202
Date d'inscription
dimanche 22 mars 2009
Statut
Membre
Dernière intervention
30 avril 2011
76
31 oct. 2009 à 13:11
31 oct. 2009 à 13:11
SELECT art.contenu, art.titre, art.auteur, idart, COUNT(*)
FROM commentaire, article
WHERE article.idart = commentaire.idart
GROUP BY idart
ORDER BY COUNT(*) DESC;
Voilà comment sélectionner ce que tu veux en une seule requête.
Si t'as une question n'hésite pas.
FROM commentaire, article
WHERE article.idart = commentaire.idart
GROUP BY idart
ORDER BY COUNT(*) DESC;
Voilà comment sélectionner ce que tu veux en une seule requête.
Si t'as une question n'hésite pas.
Excuse moi je ne vois pas à quel endroit se situe ce code. Je dois l'utiliser dans quel but.
Est-ce une modification de mon propre code au début ou à la suite.
Si ca correspond à ma derniere demande :
"Récupération des premières valeurs: [2] => 6
- $sql = "SELECT * FROM article WHERE id=2";
....
Suivant : [4] => 2
- ............. WHERE id=4
Etc..."
Comment faire pour classer mon tableau comme demandé stp.
Merci de ta réponse en tout cas.
Est-ce une modification de mon propre code au début ou à la suite.
Si ca correspond à ma derniere demande :
"Récupération des premières valeurs: [2] => 6
- $sql = "SELECT * FROM article WHERE id=2";
....
Suivant : [4] => 2
- ............. WHERE id=4
Etc..."
Comment faire pour classer mon tableau comme demandé stp.
Merci de ta réponse en tout cas.
Dynamix
Messages postés
202
Date d'inscription
dimanche 22 mars 2009
Statut
Membre
Dernière intervention
30 avril 2011
76
31 oct. 2009 à 14:44
31 oct. 2009 à 14:44
Ma réponse manquait un peu d'explication :
Donc la requête SQL suivante te permet de récupérer tes articles classés suivant le nombre de commentaires (du plus grand au plus petit) .
Dans cet exemple, j'ai nommé la table "art" pour les articles et "commentaire" pour les commentaires.
Donc au début de ton code :
//Sélection des articles classés suivant le nombre de commentaires
$rqt ="SELECT art.contenu, art.titre, art.auteur, idart, COUNT(*)
FROM commentaire, article
WHERE article.idart = commentaire.idart
GROUP BY idart
ORDER BY COUNT(*) DESC";
mysql_query($rqt);
// Affichage des articles
while($donnees = mysql_fetch_array($rqt)) {
// Là tu gères l'affichage
}
Donc la requête SQL suivante te permet de récupérer tes articles classés suivant le nombre de commentaires (du plus grand au plus petit) .
Dans cet exemple, j'ai nommé la table "art" pour les articles et "commentaire" pour les commentaires.
Donc au début de ton code :
//Sélection des articles classés suivant le nombre de commentaires
$rqt ="SELECT art.contenu, art.titre, art.auteur, idart, COUNT(*)
FROM commentaire, article
WHERE article.idart = commentaire.idart
GROUP BY idart
ORDER BY COUNT(*) DESC";
mysql_query($rqt);
// Affichage des articles
while($donnees = mysql_fetch_array($rqt)) {
// Là tu gères l'affichage
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai essayé avec ce code la donc
<?php
include('connexion.php');
$sql = "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);
$max = max($tbl_comment);
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 article.contenu, article.titre, article.auteur, id_art, COUNT(*) FROM comment, article WHERE article.id = comment.id_art GROUP BY id_art ORDER BY COUNT(*) DESC LIMIT 5";
$result = mysql_query($req) or die(mysql_error());
while($donnees = mysql_fetch_array($result))
{
echo ''.$donnees['titre'].' est classé dans les 5 premiers<br><br>';
}
}
}
?>
Ca me donne bien les 5 titre les plus classé mais la liste est répété 6 fois par contre.
C'est a dire qu'au lieu d'avoir seulement :
1er titre (le plus commenté )
2eme titre
3eme titre
4eme titre
5eme titre.
j'ai :
1er titre (le plus commenté )
2eme titre
3eme titre
4eme titre
5eme titre.
1er titre (le plus commenté )
2eme titre
3eme titre
4eme titre
5eme titre.
6 groupe de 5
La seul fois ou apparait 6 c'est le nombre de commentaire qu'a l'article le plus commenté. Donc j'ai vérifié ca et j'ai rajouté un commentaire mais ca le vérifie pas , y a toujours 6 groupe.
SI tu vois d'ou ca vien n'hésite pas stp
<?php
include('connexion.php');
$sql = "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);
$max = max($tbl_comment);
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 article.contenu, article.titre, article.auteur, id_art, COUNT(*) FROM comment, article WHERE article.id = comment.id_art GROUP BY id_art ORDER BY COUNT(*) DESC LIMIT 5";
$result = mysql_query($req) or die(mysql_error());
while($donnees = mysql_fetch_array($result))
{
echo ''.$donnees['titre'].' est classé dans les 5 premiers<br><br>';
}
}
}
?>
Ca me donne bien les 5 titre les plus classé mais la liste est répété 6 fois par contre.
C'est a dire qu'au lieu d'avoir seulement :
1er titre (le plus commenté )
2eme titre
3eme titre
4eme titre
5eme titre.
j'ai :
1er titre (le plus commenté )
2eme titre
3eme titre
4eme titre
5eme titre.
1er titre (le plus commenté )
2eme titre
3eme titre
4eme titre
5eme titre.
6 groupe de 5
La seul fois ou apparait 6 c'est le nombre de commentaire qu'a l'article le plus commenté. Donc j'ai vérifié ca et j'ai rajouté un commentaire mais ca le vérifie pas , y a toujours 6 groupe.
SI tu vois d'ou ca vien n'hésite pas stp
Mais j'ai bien les 5 titre avec le plus de commentaire mais le truc c'est que c'est répété 6 fois comme écris précédemment et ca je ne vois pas d'ou ca viens et que veux tu dire par "Pourquoi ne pas laisser que ca ?"
Tu veux dire remplacer tout le code par seulement ca ?
Tu veux dire remplacer tout le code par seulement ca ?
Perfecto ! Je vien d'essayer ce bout de code seul et ca fonctionne a merveilleux.
Pourquoi faire compliqué quand on peux faire simple.
Encore merci Dynamix pour cette aide apporté. Je t'en suis tres reconnaissant.
Pourquoi faire compliqué quand on peux faire simple.
Encore merci Dynamix pour cette aide apporté. Je t'en suis tres reconnaissant.