IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Classement membre sur 1 an


Sujet :

Algorithmes et structures de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 98
    Points : 91
    Points
    91
    Par défaut Classement membre sur 1 an
    Salut,

    j'ai un site avec un classement des meilleurs membres.
    Le prob, c'est que ce classement court depuis la création du site il y a un an. Les plus fidèles sont en tête et les autres sont dans les limbes. De la même manière, un nouveau membre n'aura aucune chance de se retrouver un jour 1er !

    Pour palier à cette injustice, je veux mettre en place un algo qui fera un classement sur les x derniers mois (ou semaines plutôt). En fait, je vais me baser sur le classement ATP (tennis) qui est mis à jour tous les lundis. Ce classement décompte les points obtenus par les joueurs lors des 52 dernières semaines : on comprend la justice de ce classement.

    D'un PdV du dév, je pensais à faire comme suit :
    - une table ClmntGeneral dans ma base avec 1 ligne par membre et 54 colonne : 1 pour l'Id Mbre, 1 pour le dernier n° de semaine màj, et 52 pour les 52 semaines.
    - une page de màj qui contient le code qui calcule les points obtenus par le membre durant la semaine écoulée.
    Bien sûr tout ceci se fera par batch en utilisant Webcron et sera programmé dans la nuit de dimanche à lundi.

    Voici les grandes lignes de mon projet et j'attends maintenant, vos remarques ou autres conseils.

    Merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Salut,

    Juste une remarque au niveau de la table ClmntGeneral. 54 colonnes ce n'est pas une bonne idée, il est plus simple de faire une table avec 3 colonnes, une avec l'ID du membre, une avec le numéro de la semaine, et une autre avec le score pour la semaine correspondante.
    C'est plus simple de travailler en longueur plutot qu'en largeur

    Voilà

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 98
    Points : 91
    Points
    91
    Par défaut
    Citation Envoyé par phig
    Salut,

    Juste une remarque au niveau de la table ClmntGeneral. 54 colonnes ce n'est pas une bonne idée, il est plus simple de faire une table avec 3 colonnes, une avec l'ID du membre, une avec le numéro de la semaine, et une autre avec le score pour la semaine correspondante.
    C'est plus simple de travailler en longueur plutot qu'en largeur

    Voilà
    Ok mais c'est une question pratique ou de perf ?

    Car si c'est pour une question pratique, je vois pas trop le prob

    merci pour ton post

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    3 338
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 338
    Points : 4 657
    Points
    4 657
    Par défaut
    Citation Envoyé par kileak
    Ok mais c'est une question pratique ou de perf ?
    Les 2 mon capitaines.

    Mettre le numéro de la semaine dans une colonne te permet d'indexer la colonne, donc meilleur perf.

    De plus, si un jour le nombre de semaine du classement ATP passe à 53 tu sera pas obligé de retoucher ta base et le code.

    Tu aura juste à ajuster une variable.

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    3 338
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 338
    Points : 4 657
    Points
    4 657
    Par défaut
    Sachant que une année compte 52 semaine il est très simple de savoir le numéro de la semaine mise à jour vu que c'est le numéro de la semaine de l'année civile donc pas besoin de stocker ça dans une colonne ;-)

    Il existe des fonctions toute faite pour trouver le numéro courant de la semaine, et donc avec un -1 tu trouve celui de la semaine précedente (attention à l'exception de la semaine 1 qui doit retourner 52)

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 98
    Points : 91
    Points
    91
    Par défaut
    Merci Gaël !

    je suis en train de piger que la conception de ma table est un peu naze.
    Je vais donc suivre vos conseils (performance et flexibilité).


  7. #7
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par Gaël Donat
    Sachant que une année compte 52 semaines
    ou 53 : ISO 8601 Page 8 (qui est la 12 au sens pdf)

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 98
    Points : 91
    Points
    91
    Par défaut
    Citation Envoyé par Médiat
    Citation Envoyé par Gaël Donat
    Sachant que une année compte 52 semaines
    ou 53 : ISO 8601 Page 8 (qui est la 12 au sens pdf)
    Exact, j'ai vu ça en codant mon truc.
    J'ai quand même fait mon calcul avec 52 semaines max, ça marche très bien pour cet usage

    merci

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 98
    Points : 91
    Points
    91
    Par défaut
    Citation Envoyé par kileak
    Citation Envoyé par Médiat
    Citation Envoyé par Gaël Donat
    Sachant que une année compte 52 semaines
    ou 53 : ISO 8601 Page 8 (qui est la 12 au sens pdf)
    Exact, j'ai vu ça en codant mon truc.
    J'ai quand même fait mon calcul avec 52 semaines max, ça marche très bien pour cet usage

    merci
    En fait, (je sais pas si ça va intéresser quelqu'un mais bon...) j'ai complètement revu mon mode de calcul. Se baser sur le n° de semaine était vraiment foireux alors j'ai utilisé la super fonction PHP mktime où tu peux soustraire x jours à une date et elle te recalcule la date exacte. J'ai donc soustrait 364 jours à ma date courante pour être le même jour (pour moi le lundi) 52 semaines avant.
    C'est autrement plus précis

    a+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ohloh et hcard des membres sur developpez
    Par ludovic.fernandez dans le forum Evolutions du club
    Réponses: 3
    Dernier message: 03/08/2007, 21h23
  2. Espace membre sur un serveur Free
    Par stilobique dans le forum Langage
    Réponses: 11
    Dernier message: 16/02/2006, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo