Aide - Recherche - Membres - Calendrier
Version complète : PHP (probleme pour les plus confirmés d'entre vous)
Forum Webmaster - Ton Webmaster > Conception de sites > Programmation > php
skylord
Bonjour chers amis, je vient pour vous demander de l'aide à la realisation de mon script PHP.Je pense que seul les plus confirmés d'entre vous peuvent y répondre.Donc voilà je suis administrateur d'un serveur de jeu, et j'ai creer un petit site en php avec gestion des news,espace administration, creation de compte par validation et j'en passe.Il se trouve que je veux faire un script de classement des joueurs, vous allez me dire "Où est la difficultée ?".Je m'explique pour ce qui est de lister les valeurs simples par ordre décroissant et l'afficher en TOP10 , jusque là ca va.Maintenant je veux selectionner par ordre décroissant dans la base de donnée un champ ont les entrées se compose comme ceci :

"30890 47407 194" ou "278476 303046 166" ou encore "91 91 91"

Cela représente le temps passé par un joueur sur le serveur (en millième , Respectivement Heures,Minutes secondes).J'ai penser à la fonction explode mais comment selectioner dans la base de donnée par ordre décroissant ces valeurs ? sachant que chaque groupe de nombre ne se compose pas forcement du même nombre de chiffres.Voilà mon problème, en éspérant que vous pourrez trouver une solution pour que je puisse continuer.

Amicalement Skylord
skylord
Aucune soluce sad.gif ?
Deedee
C'est quoi comme champs ? un String, un int ?
skylord
Un blob.

Merci pour ta reponse
dedemutas
Tu devrais plutot faire un "Int" en secondes et convertir ensuite les secondes en heures,minutes et secondes ca serait beaucoup plus simple mais bon pourquoi faire simple quand on peut faire compliqué laugh.gif
skylord
Ouais mais c'est un serveur de MMORPG , je ne peux pas modifier le client pour qu'il envoie d'autres infos à la base ^^
real34
Bonjour,

Je ne pense pas qu'en SQL tu aies les fonctions nécessaires pour faire ceci ... en effet, les champs de types BLOB ne sont pas prévus pour ça à la base.
La seule solution serait de faire avec des MAX, ORDER BY et LIMIT, mais je suppose que tu as du essayer.

J'ai bien peur que tu doives tout faire en php (explode + arsort ...).
Si cela doit être fait assez souvent, ce que tu peux faire c'est stocker par exemple les id des 100 meilleurs membres (ou 50) et à chaque fois vérifier seulement ceux-ci (tu traiteras 50 entrées au lieu des 3000 si tu as 3000 membres. Si jamais le classement ne varie pas tant que ça, dans ce cas là tu peux carrément mettre le résultat en cache.

En espérant avoir pu t'éclairer ;)
skylord
Merci, je vois ce que tu veut me dire, je vais tester et merci de m'avoir eclaire.Bonne continuation à vous tous.

Amicalement skylord
C\'est une version "bas débit" de notre forum. Pour voir la version complète avec plus d\'information, la mise en page et les images, veuillez cliquez ici.
Invision Power Board © 2001-2012 Invision Power Services, Inc.