classement

classement - PHP - Programmation

Marsh Posté le 09-12-2004 à 17:49:54    

bonjour,
 
J'ai besoin de faire un classement type championnat en fonction de plusieurs criteres : nb de pts, puis si egalité entre 1 ou plusieurs equipes, en fonction des resultats des matches entre les equipes a egalité, etc...
j'ai stocké ttes mes valeurs dans un tableau multidimensionnel. MAis je cherche une methode pr le trier en fonction de mes criteres. array_multisort permet de trier ts les tableau mais pas de trier dans sa globalité selon mes criteres. Vous avez la solution ? allez je suis sure que quelqu'un a fait ca en exercice de cours!!!
 

Reply

Marsh Posté le 09-12-2004 à 17:49:54   

Reply

Marsh Posté le 09-12-2004 à 17:51:51    

Tu les récupères d'où tes données? Parce-que si c'est d'une requête SQL ya sûrement moyen de trier avant...:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2004 à 09:49:31    

ouioui je recupere mes données d'une requete sql mais je recupere les resultats des matches. donc apres mon code compte les points, les buts, etc etc.. mais c'est le classement en lui meme : j'ai commencé un truc qui est particulierement long et qui doit pas etre tres optimisé : pour chaque nb de pts je regarde le nb de pts de chaque equipe et si egalité je stocke ds un tableua. pr chazque nb de pts a egalité, je regarde le nb de pts des matches directs, je stocke etc etc pr chaque critere. ca me parait bien tordu.

Reply

Marsh Posté le 10-12-2004 à 09:50:30    

et tu peux pas tous simplement ordonner tes enregistrements dans la requête? :??:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2004 à 10:56:42    

ben non parceque je recupere les resultats des matches. Or il faut que je retravaille ca derriere pour obtenir le nb de pts en fonction des matches gagnés / perdus etc...

Reply

Marsh Posté le 10-12-2004 à 10:57:16    

Reply

Marsh Posté le 10-12-2004 à 10:57:59    

...question bête : pourquoi tu ne stockes pas le nombre de points? :??:
Ca prendrait très peu de place en plus, et ça simplifierait énormément le boulot à faire ensuite...!


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2004 à 11:17:17    

Ben ca m'avancerait pas des masses de le stocker car le 2eme critère de tri c'est le nb de pts issus des matchs impliquant  directement les equipes a égalité. je suis obligée de le calculer ca. Je vais deja essayer de simplifier ca avec usort(). merci!

Reply

Marsh Posté le 10-12-2004 à 11:18:41    

Il est plus facile de trier après coup un tableau en ne comparant que les équipes à égalité de points qu'en se tapant un classement intégral à la main!


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2004 à 11:44:14    

skeye a écrit :

Il est plus facile de trier après coup un tableau en ne comparant que les équipes à égalité de points qu'en se tapant un classement intégral à la main!


 
+1
personnellement, j'essai que mes requete me formalise un max les infos de manière à minimiser le traitement PHP, mais il ya encore beaucoup d'apprenti webmaster que se content d'un "select *" piqué sur un tutoriel et se tape une page complète de traitement derriere...
 
Le codage PHP est une chose (relativement aisée d'où la communauté énorme et grandissante de webmaster), la bonne utilisation des BDD en est une autre (nettement plus complexe pour faire qque chose de propre et optimisé)...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 10-12-2004 à 11:44:14   

Reply

Marsh Posté le 10-12-2004 à 11:49:30    

Oui mais je suis obligée de me contenter d'un select,  ma base ne contient que les resultats des matches (une equipe jouant plusieurs matches) , je vais pas m'amuser a calculer le nb de pts pr le stocker ensuite et refaire une requete en mettant des ordres de tri ensuite...

Reply

Marsh Posté le 10-12-2004 à 11:50:53    

peut etre que ta structure de tables n'est pas optimisée alors...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 10-12-2004 à 11:52:13    

Euh oui...tu dois bien avoir une table des équipes quelquepart dans ta base, non?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2004 à 11:56:14    

et meme qu'avec les matchs je suis sur qu'il y a moyen de recuperer les points
un truc du genre
select 3*sum(victoire)+sum(nul)
from table_match victoire, table_match nul
where victoire.score_1 > victoire.score_2
and nul.score_1 = nul_score_2
 
un truc du genre quoi

Reply

Marsh Posté le 10-12-2004 à 11:58:20    

Sebastien a écrit :

et meme qu'avec les matchs je suis sur qu'il y a moyen de recuperer les points
un truc du genre
select 3*sum(victoire)+sum(nul)
from table_match victoire, table_match nul
where victoire.score_1 > victoire.score_2
and nul.score_1 = nul_score_2
 
un truc du genre quoi


Oui, mais c'est très mauvais.
Tu refais le même calcul à chaque fois que tu accèdes à la page, alors qu'il suffit de le faire une fois (et encore, ce sera de l'incrémental à chaque ajout d'un match) et de le stocker...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2004 à 11:59:34    

Oui mais la je parle dans l'idée qu'il ne p(v)eut plus modifier ses bases.

Reply

Marsh Posté le 10-12-2004 à 12:00:21    

Sebastien a écrit :

Oui mais la je parle dans l'idée qu'il ne p(v)eut plus modifier ses bases.


Oui, mais c'est très mal quand même. Autant revoir la base de données pendant qu'il en est encore temps:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2004 à 12:02:00    

Karou si tu peux le faire en requete alors n'hesite pas une seconde.

Reply

Marsh Posté le 10-12-2004 à 12:02:34    

Tiens y a un post qui a disparu ^^

Reply

Marsh Posté le 10-12-2004 à 12:03:12    

karou a écrit :

ben non. je vais essayer de voir ca. mais ca fera plus de requetes, ca va ralentir plus que de le calculer non?


Ben non. Tu feras les calculs des points 1 seule fois par match, donc tu gagneras énormément sur ta requête (ou ton php, je sais pas où tu fais le calcul).
Faire plusieurs requête de lecture simples est pas très couteux par rapport à une qui fait des calculs complexes avec lecture de nombreux enregistrements...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2004 à 12:03:35    

Sebastien a écrit :

Tiens y a un post qui a disparu ^^


trop tard, je l'ai eu! [:ddr555]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2004 à 12:05:35    

En meme temps si je fais une table ou je stocke les equipes avec les nb de points, ca devient compliqué car il y a plusieurs tours et que pour les equipes qui passent au tour principal on conserve le nb de pts qui on ete acquis avec les equipes qui sont passées aussi!!!  :pt1cable:  oui je sais j'abuse! bon je vais essayer de revoir ca en creant des tables. merci pour les reponses!!! :)

Reply

Marsh Posté le 10-12-2004 à 12:06:07    

N'empeche que je me rappelle mes profs qui me disaient tjs :
 
'Il ne faut rien mettre dans les tables qui soient des données calculées'
 
je me demande qui leur avait dit de dire d'aussi belles choses :)

Reply

Marsh Posté le 10-12-2004 à 12:06:13    

ah mince trop rapide pour moi!!!

Reply

Marsh Posté le 10-12-2004 à 12:07:17    

karou a écrit :

En meme temps si je fais une table ou je stocke les equipes avec les nb de points, ca devient compliqué car il y a plusieurs tours et que pour les equipes qui passent au tour principal on conserve le nb de pts qui on ete acquis avec les equipes qui sont passées aussi!!!:pt1cable:  


 
Je suis pas sûr d'avoir compris, mais avec un script qui met à jour les tables à la fin du 1er tour ça me parait pas très complexe... :??:
 

karou a écrit :

 oui je sais j'abuse! bon je vais essayer de revoir ca en creant des tables. merci pour les reponses!!! :)


:jap:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2004 à 12:09:25    

Sebastien a écrit :

N'empeche que je me rappelle mes profs qui me disaient tjs :
 
'Il ne faut rien mettre dans les tables qui soient des données calculées'
 
je me demande qui leur avait dit de dire d'aussi belles choses :)


C'est de la jolie théorie, mais tout dépend du calcul en question...;)
Si c'est un montant TTC par exemple, on garde le HT et la TVA et basta, c'est simple.
Là il a un calcul beaucoup plus complexe, et ne pas stocker "pour le principe" le résultat faire perdre énormément d'efficacité par rapport au coût que ça a...:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2004 à 14:55:59    

Je suis également en cours de développement d'un site pour gérer le classement des memebres de mon asso au jeu MotoGP2
Je suis justement en train de travailler sur la page du classment complet (avec nb de point par circuit, plus classement en fonction du nombre de point, de n° de 1ere places...etc...)
 
J'en suis arrivé très vite à la conclusion de stocker les points dans une table récapitulative.
 
La requete de calcul et de MAJ de cette table sera peut etre couteuse en ressource, mais ne se fait que lors de la saisie/modification d'un chrono (opération uniquement faisable par un admin)
 
Ensuite, à chaque visiteur qui voit la page, ya une requete de sélection mlultiple (nom des pilotes dans une table, noms des circuit dans une autre, les point dans une 3eme), mais juste des requete de sélection --> j'ai pas fini je m'attend à un résultat assez satisfaisant ;)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed