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

  FORUM HardWare.fr
  Programmation
  PHP

  Comment puis-je ordonner une liste de résultat?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment puis-je ordonner une liste de résultat?

n°1708070
Masterping​ouin
Posté le 26-03-2008 à 14:30:35  profilanswer
 

Bonjour,

 

j'essaye d'organiser une série d'article en fonction de leur score. Or, les score ne sont pas stockés dans la base de donnés. Il y a, à la place, la liste des ID des utilisateurs ayant voté pour l'article. Ça se présente de cette façon :

 

Table : votes

  • Champ > ID
  • Champ > Post (valeur numérique qui correspond à l'ID de l'article)
  • Champ > votes (exemple de valeur : ,2,3,4,5) les numéros correspondent aux ID des votant


Ma fonction pour récupérer la liste des articles et leur score respectif (il y a du code wordpress dedans, mais rien de bien méchant : $wpdb->get_result correspondant à une requête de type fetch_array et get_post($requete->post)->post_title retourne le nom de l'article correspondant à l'ID stocké dans la table "votes" )  :

 
Code :
  1. //display list of post
  2. function DisplayListdeux() {
  3. global $wpdb;
  4. //Zou, on récupère ce qui nous interesse
  5. $requetes = $wpdb->get_results("SELECT votes, post FROM ".$wpdb->prefix."votes" );
  6. foreach ($requetes as $requete) {
  7. //on éclate la liste des utilisateurs ayant voté pour le billet afin de faciliter le comptage
  8. $lesvotes = explode(",", $requete->votes);
  9. //On Calcule le score du billet
  10. $votecount = count($lesvotes) - 1;
  11. //On Affiche la liste
  12. echo get_post($requete->post)->post_title.' Score : ';
  13. echo $votecount.'<br />';
  14. }
  15. }
 

J'aimerai classer les article du mieux noté, au moins bien noté. Comment dois-je m'y prendre?

 

Merci à vous!

 


Message édité par Masterpingouin le 26-03-2008 à 14:39:48
mood
Publicité
Posté le 26-03-2008 à 14:30:35  profilanswer
 

n°1708078
skeye
Posté le 26-03-2008 à 14:33:50  profilanswer
 

tu peux pas le faire directement dans ta requête? :??:


---------------
Can't buy what I want because it's free -
n°1708094
Masterping​ouin
Posté le 26-03-2008 à 14:40:42  profilanswer
 

Je ne sais pas le faire, tu peux peut-être me l'indiquer? Merci ;)
Vu que les scores ne sont pas stockés dans la bdd, je vois mal comment je pourrai utiliser un ORDER BY (^-^)


Message édité par Masterpingouin le 26-03-2008 à 14:42:08
n°1708104
skeye
Posté le 26-03-2008 à 14:46:21  profilanswer
 

Ah oui, c'est super laid, j'avais pas regardé en détail comment tu calcules le score.[:pingouino]
Qui a eu l'idée saugrenue de stocker les votes comme ça?[:roane]


---------------
Can't buy what I want because it's free -
n°1708106
Masterping​ouin
Posté le 26-03-2008 à 14:49:20  profilanswer
 

un abruti sûrement (^-^), j'essaye d'exploiter un plugin wordpress qui a le mérite d'être léger. On sait maintenant pourquoi ;) Tu n'as pas une solutions coté php?

n°1708108
skeye
Posté le 26-03-2008 à 14:50:10  profilanswer
 

ah ben si, ordonner un tableau n'a rien de sorcier...fonction usort() et ses copines! ;)


---------------
Can't buy what I want because it's free -
n°1708130
Masterping​ouin
Posté le 26-03-2008 à 15:05:42  profilanswer
 

(@-@), ça, c'est quelque chose que je ne sais pas faire, pourrai-tu me mettre sur la voie, je suis un grand néophyte en PHP T-T Merci!

n°1708135
skeye
Posté le 26-03-2008 à 15:08:12  profilanswer
 

Il s'agit juste de définir une fonction qui sait ordonner deux éléments, et de la passer à usort()...


---------------
Can't buy what I want because it's free -
n°1708138
Masterping​ouin
Posté le 26-03-2008 à 15:11:25  profilanswer
 

Décidément néophyte est un bien faible mot pour définir ma médiocrité en PHP XD Je n'en suis même pas capable. J'ai juste appris bêtement certain rouages PHP.
 
As-tu une portion de code à me proposer?
Désolé, j'en demande peut-être trop *blush*

n°1708141
skeye
Posté le 26-03-2008 à 15:12:34  profilanswer
 

Il y a un exemple dans la doc...


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 26-03-2008 à 15:12:34  profilanswer
 

n°1708151
Masterping​ouin
Posté le 26-03-2008 à 15:20:09  profilanswer
 

le problème, c'est que ma variable $votecount ne contient pas plusieurs valeurs. c'est juste une variable qui contient un seul est unique score. Vraiment, je ne vois pas comment m'y prendre.
 
Désolé de t'embêter avec ça, mais je sature un peu XD

n°1708153
skeye
Posté le 26-03-2008 à 15:22:13  profilanswer
 

Masterpingouin a écrit :

le problème, c'est que ma variable $votecount ne contient pas plusieurs valeurs. c'est juste une variable qui contient un seul est unique score. Vraiment, je ne vois pas comment m'y prendre.
 
Désolé de t'embêter avec ça, mais je sature un peu XD


 
plusieurs solutions:  
1) Dans ta requête tu comptes les virgules de ton champ votes, et tu fais un order by là-dessus.:D
2) Tu mets tous tes résultats dans un tableau avant de les afficher, tu ordonnes le tableau, et ensuite tu le parcours pour afficher.


---------------
Can't buy what I want because it's free -
n°1708164
Masterping​ouin
Posté le 26-03-2008 à 15:36:29  profilanswer
 

En gros il faut que je passe SELECT COUNT(,) AS score
FROM votes?

n°1708165
skeye
Posté le 26-03-2008 à 15:37:11  profilanswer
 

en très très gros, alors.:o


---------------
Can't buy what I want because it's free -
n°1708170
Masterping​ouin
Posté le 26-03-2008 à 15:44:06  profilanswer
 

je te l'ai dis, je n'ai aucune logique ^^
J'ai essaye d'intégrer ça dans ma requête et il me retourne une erreur.

n°1708173
skeye
Posté le 26-03-2008 à 15:45:49  profilanswer
 

Il va falloir soit te mettre au sql, soit au php, je ne peux ni ne veux te donner plus que ce que je t'ai dit...


---------------
Can't buy what I want because it's free -
n°1708181
Masterping​ouin
Posté le 26-03-2008 à 15:54:42  profilanswer
 

Ça, je l'ai bien comprit. Le problème c'est que là, je ne peux pas apprendre de mes erreurs : J'ai beau chercher, je ne trouve aucun exemple où Count() décompte le nombre de virgules voir le nombre de mots dans une cellule.

 

Merci quand même...


Message édité par Masterpingouin le 26-03-2008 à 16:00:27
n°1708185
skeye
Posté le 26-03-2008 à 15:56:30  profilanswer
 

Cherche dans la doc de ton sgbd ce qu'il y a de disponible comme fonctions de traitement de chaines de caractères...


---------------
Can't buy what I want because it's free -
n°1708217
Masterping​ouin
Posté le 26-03-2008 à 16:21:45  profilanswer
 

Apparemment il faut que je combine COUNT et SUBSTR pour que count puisse compter les virgules, je suis sur la bonne voie?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Comment puis-je ordonner une liste de résultat?

 

Sujets relatifs
In love des listes déroulantesDifférence entre FF et IE : Liste
[Builder 6]récpere le résultat d'une requête SQL d'un composant TQuery[Excel+VBA]Liste déroulante associée à une autre liste déroulante !
Ordonner lignes numérotées d'un fichier texteInterroger une BDD selon des critères pour afficher un résultat …
Crrer une liste d'entierVBA EXCEL liste déroulante entre deux fichiers
Liste générique en Csélectionner une liste entière si checkbox cochée
Plus de sujets relatifs à : Comment puis-je ordonner une liste de résultat?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR