Classer champs identiques
Résolu
eBryde
-
Blocks Messages postés 98 Date d'inscription Statut Membre Dernière intervention -
Blocks Messages postés 98 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je voudrais que les articles sur mon site se classe par nombre de commentaires qu'ils possèdent. Les plus commentés en premier. J'ai fait des recherches et il semble qu'il faille utiliser un GROUP BY ( ? ) Seulement je ne connais pas cette clause et par conséquent je ne parviens pas à ce que je veux...
Dans ma table commentaires_stats, chaque commentaire possède un id propre et un id_stats qui correspond à l'article auquel correspond le commentaire. La table qui contient les articles s'appelle stats.
Pourriez vous m'aiguillez ? Merci beaucoup...
Je voudrais que les articles sur mon site se classe par nombre de commentaires qu'ils possèdent. Les plus commentés en premier. J'ai fait des recherches et il semble qu'il faille utiliser un GROUP BY ( ? ) Seulement je ne connais pas cette clause et par conséquent je ne parviens pas à ce que je veux...
Dans ma table commentaires_stats, chaque commentaire possède un id propre et un id_stats qui correspond à l'article auquel correspond le commentaire. La table qui contient les articles s'appelle stats.
Pourriez vous m'aiguillez ? Merci beaucoup...
A voir également:
- Classer champs identiques
- Classer par ordre alphabétique excel plusieurs colonnes - Guide
- Classer automatiquement mail gmail - Guide
- Logiciel pour classer ses musiques - Télécharger - Lecture & Playlists
- Classer les applications par ordre alphabétique iphone - Guide
- Word mettre à jour tous les champs - Forum Word
4 réponses
Perso j'aurais peut-être mis un champ dans la table des articles du style : nbrcommentaire
Tu pourrais l'incrémenter de 1 à chaque commentaire ajouté.
Ca permettrais de pas mal simplifier les choses, puis au moins tu pourrais mettre un truc tout simple :
Article sur la vache qui rit (16 commentaires)
Tu pourrais l'incrémenter de 1 à chaque commentaire ajouté.
Ca permettrais de pas mal simplifier les choses, puis au moins tu pourrais mettre un truc tout simple :
Article sur la vache qui rit (16 commentaires)
Merci pour ta réponse Blocks,
Je suis déjà parvenu à mettre le nombre de commentaire par article grâce à cette requête :
$nombre_coms = mysql_query('SELECT COUNT(*) AS nb_coms FROM commentaires_stats WHERE id_stats ="'.$donnees['id'].'"');
Que j'utilise à l'intérieur de la boucle qui affiche tous les articles... N'y aurait-il pas une solution sans ajouter de champ nbrcommenaire, avec un GROUP BY, pour classer par ordre decroissant ces groupes de id_stats identiques ?
En effet ajouter un champ ne m'arrange pas tellement étant donné que j'ai déjà pas mal de commentaires... =S
Je suis déjà parvenu à mettre le nombre de commentaire par article grâce à cette requête :
$nombre_coms = mysql_query('SELECT COUNT(*) AS nb_coms FROM commentaires_stats WHERE id_stats ="'.$donnees['id'].'"');
Que j'utilise à l'intérieur de la boucle qui affiche tous les articles... N'y aurait-il pas une solution sans ajouter de champ nbrcommenaire, avec un GROUP BY, pour classer par ordre decroissant ces groupes de id_stats identiques ?
En effet ajouter un champ ne m'arrange pas tellement étant donné que j'ai déjà pas mal de commentaires... =S
Si tu ajoutes un champ, ce serait dans la table articles et non dans commentaires
De plus, ajouter un champ (si je ne me trompe pas), ca ne modifie pas les données que tu as déjà dans ta base.
Donc moi je ferais :
ajouter dans articles nbrcommentaires
$id_article = Array();
$requete = "SELECT * FROM articles";
$retour = mysql_query($requete);
while($donnes= mysql_fetch_array($retour)) {
$id_article[] = $donnes["id"];
}
// là j'ai récupéré tous les id des articles
foreach($id_article as $id) {
$requete = "SELECT COUNT(*) AS nbrcommentaire FROM commentaire WHERE `id_stat`=$id";
$retour = mysql_query($requete);
$donnees = mysql_fetch_array($retour);
$nbrcommentaire = $donnes["nbrcommentaire"];
$requete = "UPDATE article SET `nbrcommentaire`=$nbrcommentaire WHERE `id`=$id";
mysql_query($requete);
}
// là je remplis tous les champs nbrcommentaire dans la table article
Ca tu le fais une fois, puis après quand tu veux rajouter un commentaire, tu dis :
-> Va chercher nbrcommentaire dans l'article du commentaire
-> Le nombre de commentaire++
-> Met le nouveau nombre de commentaire dans article
Voili voulou, j'espère ne pas m'être trompé, et puis à part pour ma méthode je vois pas comment faire avec autre chose :/
De plus, ajouter un champ (si je ne me trompe pas), ca ne modifie pas les données que tu as déjà dans ta base.
Donc moi je ferais :
ajouter dans articles nbrcommentaires
$id_article = Array();
$requete = "SELECT * FROM articles";
$retour = mysql_query($requete);
while($donnes= mysql_fetch_array($retour)) {
$id_article[] = $donnes["id"];
}
// là j'ai récupéré tous les id des articles
foreach($id_article as $id) {
$requete = "SELECT COUNT(*) AS nbrcommentaire FROM commentaire WHERE `id_stat`=$id";
$retour = mysql_query($requete);
$donnees = mysql_fetch_array($retour);
$nbrcommentaire = $donnes["nbrcommentaire"];
$requete = "UPDATE article SET `nbrcommentaire`=$nbrcommentaire WHERE `id`=$id";
mysql_query($requete);
}
// là je remplis tous les champs nbrcommentaire dans la table article
Ca tu le fais une fois, puis après quand tu veux rajouter un commentaire, tu dis :
-> Va chercher nbrcommentaire dans l'article du commentaire
-> Le nombre de commentaire++
-> Met le nouveau nombre de commentaire dans article
Voili voulou, j'espère ne pas m'être trompé, et puis à part pour ma méthode je vois pas comment faire avec autre chose :/