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

PHP & Base de données Discussion :

[Conception] Ajout d'un crédit une fois par jour dans la bdd


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Points : 75
    Points
    75
    Par défaut [Conception] Ajout d'un crédit une fois par jour dans la bdd
    Bonsoir a tous,

    J'aimerais ajouter un chiffre dans ma bdd, une seule fois par jour et par membre.

    Mais je ne vois pas du tout comment gerer ceci au niveau de la date etc...Sans avoir d'interactivité au niveau client (sans qu'il se connecte au site).

    Merci d'avance pour l'aide que vous me fournirez.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Points : 24
    Points
    24
    Par défaut
    J'aimerais ajouter un chiffre dans ma bdd, une seule fois par jour et par membre.
    Sans avoir d'interactivité au niveau client (sans qu'il se connecte au site).
    Il me semble que ce n'est pas très logique et je ne vois pas ou tu veux en venir. Cependant pour faire ce que tu souhaites (encore une fois si je comprends bien), tu peux concaténer le jour et l'id de l'utilisateur par exemple.

    Si tu étais plus clair il me serait plus simple de t'aider.

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 45
    Points : 54
    Points
    54
    Par défaut
    Bonjour,

    regarde du côté des CRON. Et par la même occasion lit ceci :
    http://matthieu.developpez.com/execution_periodique/

  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Ton but est il de faire gagner par exemple une piece d'or a un membre toutes les 24 heures? Et si ton membre ne se connecte pas pendant 7 jours, le total de ses pièces aura augmenté de 7 ?

    Dans ce cas tu peux utiliser une astuce qui est à la connexion d'un membre de regarder de quand date sa dernière connexion. Si elle date du jour même tu ne fais rien, sinon tu calcules le nombre de jours qui s'est passé entre les deux dates et tu peux lui ajouter automatiquement (et donc maximum une fois par jour) le crédit voulu.

    Ca pose par contre un problème si tu établis par exemple des classements journaliers parce que certains comptent ne seront pas a jour vu que le membre ne se sera pas connecté. Dans ce cas il faut revenir a une tache CRON qui se chargera de faire tous ces calculs une bonne fois pour toute chaque matin.

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Points : 75
    Points
    75
    Par défaut
    Mon but et de faire gager dix points par jours, qui seront effacés automatiquement le jour même si non utilisés...

  6. #6
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Dans ce cas là, je verrais bien un système de ce genre là.

    Au moment ou la personne se connecte, tu lui ajoutes ses 10 points si tu ne l'a pas déjà fait. Pour ne pas réattribuer des points en cas de reconnexion, tu peux garder la trace de la dernière connexion.

    De cette façon, si la personne ne se connecte pas, elle a pas de points et tu n'as pas à les enlevés.

    Maintenant, il reste à solutionner les points attribués mais non utilisés.
    Pour cela, il faudrait savoir si ces points viennent s'ajouter à d'autres points ?
    Si ces points sont uniques ou stockés à part, il te suffit à la première connexion de la journée de mettre ses points à 10 sans te soucier tu total précédent ( 0 ou autre )
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  7. #7
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Subshadow Voir le message
    Mon but et de faire gager dix points par jours, qui seront effacés automatiquement le jour même si non utilisés...
    Quel SBGB ? Si MySQL 5.1 tu as un EVENT SCHEDULER très sympa : http://dev.mysql.com/doc/refman/5.1/en/events.html
    => Ex tous les soirs à minuit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE joueurs
    SET credits = 10 ;
    -- les crédit de tous les joueurs passent à 10, ceux non utilisés sont perdus
    Autrement tu as aussi comme recommandé plus haut les crontabs. Tu peux éventuellement passer par webcron.org pour appeler un script exécutant l'UPDATE précédent.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  8. #8
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Points : 75
    Points
    75
    Par défaut
    La derniere solution avec les evenements mysql me plait bien...

    Cela dis, je ne comprend pas très bien où on doit programmer ceci... :/

  9. #9
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    Un article à ce propos : http://atranchant.developpez.com/mysql/evenement/
    Attetion à la version de ton serveur MySQL !
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  10. #10
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Points : 75
    Points
    75
    Par défaut
    Merci de l'info.

    Lorsque je fais ceci: SHOW GLOBAL VARIABLES LIKE 'event_scheduler';

    Pour demander la verif de la variable, sa me met ok, en 0,0005s, mais quand je veux mettre le event_scheduler à 1, sa me répond ceci:

    #1193 - Unknown system variable 'event_scheduler'

    Je pense que c'est aps possible sur ma version... 5.0.44

  11. #11
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Subshadow Voir le message
    Je pense que c'est aps possible sur ma version... 5.0.44
    Oui il faut la 5.1.(qquechose)
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Heu... bonjour à tous,

    Je comprends pas trop (enfin le Scheduler c'est bon) le but de la manoeuvre, tu veux créditer le compte d'un utilisateur, mais s'il utilise pas lui enlevez le crédit alloué, en quelque sorte une prime a la connexion ! Pourquoi la retirer alors ?

    Et pour ton algorythme :

    Achaque connexion d'un utilisateur:

    Debut verification connexion jour
    // credit_total = valeur réel du credit
    // credit = valeur du credit sans la prime à la connexion
    // credit_jour = prime à la connexion

    // Initialisation Variable
    INT Val_credit_jour = 10;
    SI "connexion_jour" == 1;
    ALORS je fais rien;
    SINON
    "connexion_jour" = 1;
    "credit_jour" += "Val_credit_jour";
    "credit_total" = "credit" + "credit_jour";
    Fin verification connexion jour

    Debut procedure stocker
    TRIE par "connexion_jour" == 1;
    TANQUE "connexion_jour" == 1 alors
    SI "credit_total" < "credit"
    ALORS "credit" = "credit_total";
    SINON
    credit_jour -= "Val_credit_jour";
    Fin procedure stocker

  13. #13
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 250
    Points : 75
    Points
    75
    Par défaut
    Merci de ta réponse, sa me semble interessant, mais tu as mal compris ce que je souhaitais.

    Je souhaite qu'un script s'éxécute tous les jours a minuit, pouur en quelque sorte tous mes membre, juste un update a faire puisque que le crédit soit utilisé ou pas, je remet mon champ à 10

    De plus je pense m'orienter vers une page qui attribut les points et que je lance grâce à un planificateur de tache!

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Donc la solution est simple,

    Parcourt de la base, puis remise du champs "credit_jour" à 10, pour tous les utilisateurs.

    En créant la procédure à l'aide de "phpMyAdmin" ou autres..., tu la copie ensuite dans un fichier puis tu mets en place une tache avec "cron" sous linux et "at" sous windows qui va exécuté le fichier sql créé à l'heure voulu.

Discussions similaires

  1. [MySQL] Requête une fois par jour
    Par antxbe dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/05/2009, 11h15
  2. Procédure qui ne se lance qu'une fois par jour
    Par riri2938 dans le forum VBA Access
    Réponses: 6
    Dernier message: 28/02/2009, 15h16
  3. Réponses: 9
    Dernier message: 24/06/2008, 10h31
  4. [Tableaux] Une fois par jour
    Par mickado dans le forum Langage
    Réponses: 10
    Dernier message: 25/01/2007, 19h59
  5. Exécuter un script, une fois par jour
    Par Poussy-Puce dans le forum ASP
    Réponses: 1
    Dernier message: 19/10/2006, 16h55

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