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

Langage PHP Discussion :

mettre a jour une valeur automatiquement chaque jour


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 56
    Points
    56
    Par défaut mettre a jour une valeur automatiquement chaque jour
    slt tt le monde,
    dans un site que je suis au cours de developpement j'ai prevu des liens que je dois les cliquer par exemple 10 fois par jour apres chaque clik le nombre se decremente et le lendemain je devrai trouver la valeur 10 une autre fois ce que je veux dire c que cette variable qui contient le nombre de clicks est mise a jour automatiquement le lendemain.
    par exemple:

    les liens | Nombres de clicks restants
    lien1 | 0
    lien2 | 2

    pour le lien2 si je complete pas les deux clicks qui restent le lendemain je devrai trouvé 12 clicks et ainsi de suite...

    j'espere que je me suis bien exprimé, et je suis coincé si quelqu'un peut m'aider

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux travailler avec une page intermédiaire :
    lien -> page intermediaire -> page réel

    Dans la page intermédiaire tu gères ton compteur et tu fais la redirection vers la page réel.

    Pour la gestion du compteur tu stockes juste la date et l'evolution du compteur (base de donnée, fichier texte ce que tu veux/peux)

    Concernant l'evolution du compteur selon le jour c'est juste une ecriture de condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    - lecture du compteur
    - si date < aujourd'hui
        - si compteur > 0
             compteur = restant + taille_départ
    etc....

  3. #3
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 56
    Points
    56
    Par défaut
    j'ai pas compris ce que tu veux dire par une page intermediaire et je veux t'informer que les liens sont deja stockés dans une base de donnéés chaque lien avec le nombre de clicks que je dois effectuer par jour

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Comme il faut que le click mette a jour la base de donnée, il faut une page de traitement entre la page qui contient le lien et la page réel de destination.
    Donc
    Page du lien -> Page intermediaire -> Traitement -> Redirection -> Page finale

  5. #5
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 56
    Points
    56
    Par défaut
    le probleme que je trouve c comment ou quelle instruction je dois faire pour mettre a jour le nombre de clicks apres chaque 24H.
    le probleme est dans la gestion du temps, le passage d'un jour a l'autre.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Comme je t'ai mis dans le premier message c'est juste une ecriture de condition.

    Si le compteur est a la date du jour, tu le decrementes, sinon tu recuperes sa valeur pour ecrire celle du jour.

  7. #7
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    Bonsoir,

    As tu accès au serveur ? Si oui, tu peux éxécuter des commandes PHP ou MYSQL via le cron (serveur unix/linux) ou les tâches planifiées (serveur Microsoft).

    Ca te permettra d'éxécuter la commande chaque nuit, par exemple.

    Gilou.

  8. #8
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 56
    Points
    56
    Par défaut
    le traitement que tu m'as donné lors du 1 message me servira pour aujourd'hui et le lendemain mais moi je veux que ça ira pour tous les jours, chaque jour qui passe il y aura une mise a jour automatique.
    meme le traitement que tu m'as conseillé je l'ai pas bien compris dsl
    j'essai de le programmer mais jusqu'à l'instant j'ai pas arrivé...
    et pour information je travaille sur le serveur local assuré par easyphp.

  9. #9
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 56
    Points
    56
    Par défaut
    J'ai essayé ce code et ça m'a donné 12 ce qui veut dire que ça a marché
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
      $var = 10;
      $nbsoum = 2;
      $dtinitiale = gmmktime(0, 0, 0, 9, 8, 2009);
      $dtajout = gmdate('Y-m-d' , $dtinitiale);
      $compteur=$dtajout;
      $dt = gmdate('Y-m-d');
      if ($dt>$compteur)
       {
         $nbsoum=$nbsoum+$var; 
       }
       echo $nbsoum;
    ?>
    Mais ça donnera tjrs 12 le lendemain j'aurai pas 22 tu vois ce que je veux dire

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ton code doit evidemment se baser sur la date et la valeur qui sont dans la base de données.

  11. #11
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 56
    Points
    56
    Par défaut
    oui je sais mais j'ai consideré que la date d'ajout du lien est le 8/9/2009
    et que le nombre de clicks par jour est 10. C comme si je les ai extrait de la base de données juste pour voir le resultat.

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je ne vois pas ton problème alors.
    Pour reprendre ton exemple :
    - situation de départ : compteur à 2 au 08 septembre.
    - le 09 septembre le compteur passe à 10+2 = 12
    - disons qu'il y eu 4 clicks : compteur à 8
    - le 10 septembre le compteur passe à 10+8 = 18

    Pour le rattrapage de compteur chaque jour, le plus simple est comme le propose LeGilou d'utiliser un script planifié.
    Si tu n'as pas accés à ce genre de fonctionnalités sur ton serveur tu peux toujours le gérer a chaque click d'un utilisateur (en veillant a rattraper la totalité des jours entre la date du compteur et la date actuelle car il est imaginable qu'il n'y ait aucun click pendant une journée).

  13. #13
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 56
    Points
    56
    Par défaut
    je pense que j'ai trouvé la solution mais il me reste un petit probleme.
    Dans la base de données la date est enregistrée sous la forme
    année-mois-jour
    (ex: 2009-08-25).
    ce que je veux c'est d'apres cette date avoir 3 variables separées $année,$mois et $jour contenant chaqune sa valeur d'apres la date enregistrée dans la BD.
    $année=2009
    $mois=08
    $jour=25
    comment dois-je faire pour le decoupage??

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si c'est pour faire ton mktime() c'est inutile, avec mysql tu peux faire UNIX_TIMESTAMP().

  15. #15
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 56
    Points
    56
    Par défaut
    comment puis je utiliser UNIX_TIMESTAMP()?
    si tu peux me donner un exemple

  16. #16
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Moult exemples et fonctions pour manipuler les dates avec mysql :
    http://dev.mysql.com/doc/refman/5.0/...functions.html

  17. #17
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 56
    Points
    56
    Par défaut
    merci bcp mon probleme est resolu et j'obtient mnt la mise a jour automatique de cette valeur apres chaque jour qui passe, mais il me reste un petit probleme au niveau d'une requete sql de mise a jour d'une table.
    j'ai fait le traitement pour les dates et j'ai utilisé un compteur qui compte les jours qui ont passés depuis le jour de l'enregistrement du lien mais la requete ne fonctionne pas pour mettre a jour le compteur.
    voici le code que j'ai utilisé:

    $req = "select * from pack ";
    $reponse=mysql_query($req);
    while ($donnees = mysql_fetch_array($reponse))
    {
    $url = $donnees['url_site'];
    $nbsoumissions = $donnees['nombre_soumissions'];
    $soumissions_en_attente = $donnees['soumissions-en-attente'];
    $dtajout = $donnees['date_commande'];
    $compteur = $donnees['compteur'];
    $soumissions_par_jour = $donnees['nombre_soumissions_par_jour'];
    $année = SUBSTR($compteur, 0,4);
    $mois = SUBSTR($compteur, 5,2);
    $jour = SUBSTR($compteur, 8,2);
    $tcompteur = gmmktime(0,0,0,$mois,$jour,$année);
    $taffiche = time();
    $diff = $taffiche - $tcompteur;
    $coefficient = FLOOR($diff/86400);
    if ($coefficient > 0)
    {
    $soumissions_en_attente += $soumissions_par_jour * $coefficient;
    $compteur = gmdate('Y-m-d', $taffiche);
    $req1 = "UPDATE pack SET soumissions-en-attente='$soumissions_en_attente' , compteur='$compteur''";
    $reponse1=mysql_query($req1);
    if ($reponse1)
    {
    echo "oui";
    }
    else
    {
    echo "non";
    }
    }
    mysql_close();
    }

    le probleme est au niveau de le requete req1.
    merci encore une fois pour vos aides....

  18. #18
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 56
    Points
    56
    Par défaut
    dsl j'ai trouvé la solution, c'etait au niveau de la base de donnée.
    j'ai utilisé le - au lieu de _ dans le nom du champ soumissions-en-attente. je l'ai renommé en soumissions_en_attente et ça marche mnt.
    Merci infiniment...

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

Discussions similaires

  1. [AC-2010] Mettre à jour une valeur dans une table
    Par POGaudet dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/11/2012, 20h47
  2. Réponses: 1
    Dernier message: 10/02/2009, 08h36
  3. Comment mettre à jour une page jsp chaque seconde
    Par zizoux5 dans le forum Struts 1
    Réponses: 6
    Dernier message: 25/05/2007, 18h37
  4. Réponses: 1
    Dernier message: 12/03/2007, 14h53
  5. Réponses: 6
    Dernier message: 17/08/2006, 09h40

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