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 :

Incrémenter une variable à une date x chaque année


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut Incrémenter une variable à une date x chaque année
    Bonsoir,

    Je sais incrémenter ou décrémenter un entier et une date en php. Ok


    J'aimerai savoir s'il est possible de remplir ces 3 conditions en même temps :

    - 'incrémenter un entier à une date définie (1er juillet de chaque année par exemple) avec comme fin de boucle ( i <= 20 par exemple)

    exemple : tous les 1er juillet de chaque année, incrémente de 1 une variable (categorie) jusqu'à ce que cette variable <= 20.

    au 03 mars 2018 : categorie = 15
    au 1er juillet 2018 : categorie = 16
    au 1er juillet 2019 : categorie = 17
    au 1er juillet 2020 : categorie = 18
    au 1er juillet 2021 : categorie = 19
    au 1er juillet 2022 : categorie = 20
    au 1er juillet 2023 : stop l'incrémentation car variable>2020.....

    Merci de me dire si cela est faisable et de bien vouloir m'orienter vers des ressources.

  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
    Il suffit d'avoir les deux dans la même boucle non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $date = new datetime('2018-07-01');
     
    for ($categorie = 16; $categorie < 21; ++$categorie) {
    		echo $date->format('d F Y') . '-' . $categorie . '<br/>';
    		$date->modify('+1 year');
    }

  3. #3
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    ça passe aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $i     = 15;
    $dates = iterator_to_array(new DatePeriod(new DateTime('2018-07-01'), new DateInterval('P1Y'), 20));
    array_walk($dates, function($v, $k) use (&$i) { echo $v->format('d F Y'),'=',++$k+$i++,'<br>'; });
    J'aime le ++$k+$i++
    La classe

  4. #4
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Hello,

    Pas certain mais je penses que vous faite fausse route les modos
    D'après ce que je comprend, il souhaite une sorte de tâche cron qui incrémente une variable chaque année, et pas de faire une boucle pour afficher une date et une variable incrémentée.

    Si c'est bien ça, tu créer une variable contenant une date de référence, et tu incrémente ta variable si la date est atteinte, en faisant attention à ne pas incrémenté plusieurs fois ta variable le même jour.


    PS : Classe le ++$k+$i++

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut
    Merci pour vos retours,

    Je me suis mal exprimé. Je cherche en effet à incrémenter (+1) une variable (un entier) enregistré dans une base de données (SQL) automatiquement à une date pré-définie chaque année jusqu'à une certaine limite.

    je n'ai aucune idée de la démarche à suivre. Si vous avez des ressources ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    10 secondes de recherche web...


  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut
    Re,

    après des recherches sur les tâches CRON, cela semble correspondre exactement à ce que je recherche.

    Pour le moment, je suis en localhost (WAMP). Peut-on simuler/configurer une tâche CRON sur phpmyadmin en localhost ?

    J'ai vu des hébergeur qui utilisait Cpanel. Phpmyadmin semble utiliser WHM ? ai-je bien compris.

    Concernant le script, je vais tenter de le tester tout simplement / activation d'un bouton ? si vous avez une autre idée ?

    Merci

  8. #8
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 912
    Points : 6 705
    Points
    6 705
    Par défaut
    Tu peux aussi programmer un EVENT avec MySQL: https://dev.mysql.com/doc/refman/5.7...ate-event.html

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut
    Bonsoir CosmoKnacki,

    j'ai bien exploré votre proposition qui me semble très bien également.

    j'ai bien lu la documentation et j'ai tenté le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE
     DEFINER=`c0admin`@`localhost` 
    EVENT `e` 
    ON SCHEDULE EVERY 5 MINUTE 
    STARTS '2018-06-11 21:26:00' 
    ON COMPLETION PRESERVE ENABLE 
    DO UPDATE c0test.joueur 
    SET taille = taille +1;
    Cependant, il ne se déclenche pas à l'heure demandée
    Y-a'il un fuseau horaire, horaire d'été, .... pour bien paramétrer ou est-ce une erreur de syntaxe.


    j'ai bien EVENEMENTS qui apparaît sous ma table et 'e' qui semble être en attente.



    Merci pour votre retour

  10. #10
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 912
    Points : 6 705
    Points
    6 705
    Par défaut
    Je ne pense pas qu'il s'agisse d'une erreur de syntaxe, mais plutôt d'un problème de configuration du serveur MySQL.
    Dans ton fichier de configuration (my.cnf sous linux, ou my.ini sous Windows) il faut que tu ais la ligne:event-scheduler = ON (regarde d'abord si tu n'as pas déjà une ligne event-scheduler = OFF pour la modifier, sinon ajoute-la). Puis une fois que tu as fait la modification, tu dois redémarrer le serveur pour qu'elle soit prise en compte.

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut
    Bonsoir

    en effet, event-schelduler = OFF.

    Je ne peux pas modifier la configuration sauf si je me connecte avec SSH. Mais je crains faire des bétises ?

    Ne vaut-il pas mieux que je m'oriente sur une tâche CRON ?

  12. #12
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 912
    Points : 6 705
    Points
    6 705
    Par défaut
    Ça ne présente pas vraiment de risques, et si ça peut te tranquilliser rien ne t'empêche de faire une copie de ton fichier de configuration au préalable. À propos, quand je parle de "redémarrer le serveur", je parle du serveur MySQL uniquement.

  13. #13
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut
    Merci pour votre retour,

    Pour me plonger dans la réalité de mon projet, j'ai loué un vps chez L..... à faible coût.

    Déjà la programmation est un univers que j'arpente depuis très peu alors être capable d'activer event_scheduler sur mysql .....pffffff

    Je ne sais même pas comment accéder à ce put..... de fichier

    ------------------------------
    Pour activer l'EVENT_SCHEDULER vous devez vous connecter en SSH sur votre serveur VPS et éditer le fichier de configurations de votre service de base de données MariaDB.
    Chemin du fichier de configuration: /etc/mysql/mariadb.conf.d/50-server.cnf
    Directive à ajouter dans la section [mysqld]
    event_scheduler = on

    N?oubliez pas de redémarrer votre service MariaDB après la modification de votre fichier de configuration: service mysql restart

    Je me permets de vous fournir une documentation sur ce sujet:
    https://serverfault.com/questions/88...riadb-ignoring
    -----------------------------------------------

    pas fameux pour un novice...c'est fait exprès

  14. #14
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 912
    Points : 6 705
    Points
    6 705
    Par défaut
    Si ça t'inquiète tant que ça, pour l'instant laisse tomber l'event scheduler et utilise un autre moyen. À coté, je t'invite à tester chez toi une distribution linux, genre un dérivé de debian comme linuxmint ou ubuntu qui sont répandus et user-frendly (documentation abondante, grosse communauté), afin de te familiariser avec l'environnement sur lequel est installé ton serveur. Ensuite installe un serveur local apache/php/MySQL ou MariaDB (c'est documenté sur le web en long en large et en travers). Si tu te plonges un peu dans les lignes de commandes (le terminal), tu verras que ce que te raconte le type du support c'est en fait super simple. Ça prendra le temps que ça prendra, mais pour te débarrasser de tes craintes, tu dois sauter le pas.

    ps: si tu es sous Windows, une distribution linux peut être installée en dual-boot si tu as de la place sur ton disque dur, voire un disque dur de libre (c'est à mon avis la meilleur chose à faire), tu peux aussi installer une distribution dans une machine virtuelle (via vmware ou virtualbox), mais sans un grosse config et un bon réglage ça peut ramer grave et l'expérience sera au final très décevante. Pour ce qui est du livecd ou de l'installation sur une clef usb bootable, c'est bien pour un premier contact, mais au delà il ne faut pas espérer grand chose de cette manière de faire.

  15. #15
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut
    Merci j'ai demandé tout simplement une infogérance pour activer mon event_scheduler...

    Maintenant je peux tester mes codes (sur des critères bidons) et cela fonctionne...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    CREATE EVENT taille
    ON SCHEDULE EVERY 1 MINUTE
    STARTS TIMESTAMP '2018-06-19 17:23:00'
    ON COMPLETION PRESERVE
    DO
    UPDATE c0test.contact
    SET taille =
    	CASE taille
        	WHEN '163' THEN '168'
            WHEN '168' THEN '180'
            WHEN '180' THEN '800'
            WHEN '800' THEN '900'
           	ELSE taille
        END;
    En revanche, je ne sais pas comment faire pour des conditions avec AND (par curiosité - j'ai trouvé des exemples mais je n'arrive pas à les retranscrire, je n'ai pas la syntaxe) , par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHEN (taille >= '163' and <= '180') THEN '200' ????? comment faire

  16. #16
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut
    Je vais me plonger dans linux car après lecture je pense que lorsqu'on y a goûter on y reste... mais pour l'instant j'aimerai avancer sur mon projet qui me tient à coeur....certainement que je vais rater des possibilités

  17. #17
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 912
    Points : 6 705
    Points
    6 705
    Par défaut
    Déjà s'il s'agit d'une colonne de type int, pas la peine de mettre des quotes autour des valeurs.

    Au lieu d'utiliser la syntaxe qui met le nom de la colonne (ou autre) en facteur:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CASE colonne
        WHEN 163 THEN 168
        WHEN 168 THEN 180
        WHEN 180 THEN 800
        WHEN 800 THEN 900

    Utilise celle-ci qui exige que le nom de la colonne soit précisée dans les conditions:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CASE
        WHEN colonne = 163 THEN 168
        WHEN colonne = 168 THEN 180
        WHEN colonne = 180 THEN 800
        WHEN colonne = 800 THEN 900

    Donc ensuite pour insérer une condition avec AND:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CASE
        WHEN colonne >= 163 AND colonne <= 180 THEN 200
        WHEN colonne = 800 THEN 900

  18. #18
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut
    Un grand merci CosmoKnacki,

    j'ai pu tester toutes mes conditions sur des int, string, déclencher des actions à l'heure souhaitée avec récurrence, et mettre à jour mes données dans ma base....


    grâce à vous, j'ai encore avancé d'un pas dans mon projet....

    bonne journée

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

Discussions similaires

  1. [XL-2010] Incrémentation périodique d'une variable en VBA
    Par frankytactik dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/02/2013, 20h00
  2. Concaténer une variable à une date
    Par Lamouette66 dans le forum SQL
    Réponses: 11
    Dernier message: 25/06/2012, 19h42
  3. Incrémentation impossible d'une variable
    Par chok371 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/05/2011, 10h47
  4. incrémenter le nom une variable
    Par mederic dans le forum C
    Réponses: 15
    Dernier message: 06/05/2006, 20h11
  5. Requête selection avec une variable de date
    Par kahmsin dans le forum Access
    Réponses: 7
    Dernier message: 20/11/2005, 20h38

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