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 :

Remettre a zero une variable quand on change d'annee


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut Remettre a zero une variable quand on change d'annee
    Bonjour à tous!!

    Voila tout est dans le titre, j'ai une variable qui s'auto incrémente et je voudrai que celle-ci se remette à 0 dès que l'on change d'année par exemple 2014->2015.
    Je voulais savoir si cela était possible ? Car je sais pas trop comment m'y prendre.

    Merci d'avance pour votre aide .

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 107
    Points : 139
    Points
    139
    Par défaut
    Bonjour,

    Avec un script qui tourne tous les jours pour vérifier la date du jour ? Par contre, tu es un peu en retard pour 2015


    EDIT : ou voir si tu peux planifier un script pour le 1er jour de l'année.


    Darkauron

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    merci de ta réponse!

    Quel genre de script ? Peut tu m'éclairer d'avantage ? Ou me donner un exemple ? Car je sais pas trop comment m'y prendre. En faite dans mon code j'arrive à prendre l'année mais je bloque sur la remise à 0.

  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
    Tu as une variable qui s'incremente ou ça ?

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    En faite cette variable s'incrémente(quand on appuie sur un bouton) que lorsque que l'on est dans la même année mais je souhaite la remettre à 0 quand on change d'année.

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 107
    Points : 139
    Points
    139
    Par défaut
    La question est de savoir où se trouve cette variable. Dans une base de données ?

    Darkauron

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    Ah non elle sert juste à donner un nom pour de l'archivage mais comme chaque archivage est différent ma variable doit s'incrémenter.

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 107
    Points : 139
    Points
    139
    Par défaut
    On va poser la question différement : comment tu connais la valeur actuelle de ta variable ?

    J'imagine que tes archives portent un nom de ce type :
    archive_annee_variable ?
    Si c'est ça, ou que ça en approche, comment tu sais que variable vaut 10 et que pour le prochaine ça sera 11 ?

    Darkauron

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    Oui c'est ça c'est du genre archive_annee_variable. En faite tout est appelé quand on appuie sur un bouton se qui va incrémenter ma variable. Voici une partie du code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $nb_c = $list1['NB'];
    	$nb_c++;
    	$nb_c = str_pad($nb_c, 3, "0", STR_PAD_LEFT);
     
    	$num_arch = "ARCH-".$date."-".$nb_c;

  10. #10
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 107
    Points : 139
    Points
    139
    Par défaut
    Donc ta variable est renseigné via Maintenant, il ne reste plus qu'à savoir d'où ça vient.

    Par contre, petite question, tu peux avoir plusieurs archive le même jour ? Sinon, tu aurais pu utiliser la date du jour (année-mois-jour voire avec minutes et secondes) pour le nom des fichiers, non ?

    Darkauron

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    Oui on peux en avoir plusieurs le même jour mais au niveau du nom je préfère les regrouper par année.

    Voila la suite:

    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
    $requete1 ="SELECT COUNT(*) AS NB 
    				FROM POP_DM
    				JOIN POP_PROJET ON POP_DM.ID_PROJET = POP_PROJET.ID_PROJET
    				WHERE NUM_ARCH LIKE '%2014%'
    				AND ID_SITE =".$site['ID_SITE'];
     
    	/*$requete1 ="SELECT COUNT(*) AS NB 
    				FROM POP_DM
    				JOIN POP_PROJET ON POP_DM.ID_PROJET = POP_PROJET.ID_PROJET
    				WHERE NUM_ARCH LIKE '".$date."'
    				AND ID_SITE =".$site['ID_SITE'];*/
     
    	$statement1 = oci_parse($conn, $requete1);
    	oci_execute($statement1,OCI_COMMIT_ON_SUCCESS);
    	$list1 = oci_fetch_assoc($statement1);
    La requête ne vient pas de moi et je la comprends pas beaucoup mais j'ai confiance ^^, j'ai repris un projet et je dois faire des améliorations.

  12. #12
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 107
    Points : 139
    Points
    139
    Par défaut
    Du coup, on va décortiquer un peu la requête pour que tu comprennes plus facilement :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*) AS NB
    On compte le nombre de voir_la_suite et on le stocke dans NB

    Qu'est ce qu'on compte du coup ? Où plutôt, sur quoi filtre t-on ?
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE NUM_ARCH LIKE '%2014%'
    NUM_ARCH, j'imagine que c'est le numéro d'archive, LIKE %2014%, c'est à dire contient 2014.

    Ta requête cherche le nombre d'archive qui contiennent 2014 dans leur nom/numéro. Au choix, tu remplace 2014 par 2015, ou tu mets une variable de date, comme ce qui a été tenté dans la requête en commentaire.

    Le mieux pour ne plus avoir à y toucher, c'est bien évidemment la variable qui récupère l'année en cours (date("Y") devrait le faire).
    D'ailleurs, la requête en commentaire semble juste, selon ce qu'il y a dans $date mais il manque les % % pour dire que l'on cherche quelque chose contenant $date et non quelque chose égale à $date.

    Dernier point qui m'interpelle quand même dans la requête. Tu cherches toutes les archives qui contiennent 2015 et tu les nommes en fonction de ça. Mais si tu as plus de 2000 archives pour l'année dernière, tu auras surement une archive nommée arch-2014-2015. La requête te dira donc que tu as une archive qui contient 2015. Du coup, si dans la BDD, NUM_ARCH correspond au format ARCH-année-variable, il serait peut être intéressant de modifier la requête pour qu'elle recherche les archives contenant %-$date-%

    Bonne lecture
    Darkauron

  13. #13
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    La requête ne vient pas de moi et je la comprends pas beaucoup mais j'ai confiance ^^, j'ai repris un projet et je dois faire des améliorations.
    Quand tu ne comprends pas une requête SQL, quand tu ne sais même pas que c'est une base de données qui stocke tes infos pour conserver les données persistentes entre deux connexions, je doute un peu que tu puisses modifier (sans même parler d'améliorer !) le code de ton prédecesseur.

    As-tu accès à la base pour lancer des requêtes via une interface graphique ? et si oui, que te retourne cette requête, enfin quel format de nom ?
    si tu ne sais pas le format de nom de num_arch, tu ne dois pas y toucher faute d'écraser des archives.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT NUM_ARCH
    FROM POP_DM
    JOIN POP_PROJET ON POP_DM.ID_PROJET = POP_PROJET.ID_PROJET
    WHERE NUM_ARCH LIKE '%2014%'
    AND ID_SITE =ton identifiant de site
    order by NUM_ARCH
    limit 100;

  14. #14
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    Merci pour ton aide Darkauron!!

    voici la requête modifié selon ce que tu ma dit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $requete1 ="SELECT COUNT(*) AS NB 
    				FROM POP_DM
    				JOIN POP_PROJET ON POP_DM.ID_PROJET = POP_PROJET.ID_PROJET
    				WHERE NUM_ARCH LIKE '%-".$date."-%'
    				AND ID_SITE =".$site['ID_SITE'];
    Evidemment je récupère la date de l'année en cours avec c'est pour ça que j'avais mis ma nouvelle requête en commentaire.
    Sinon saurai tu comment je pourrai réinitialiser ma variable par rapport à ?

    Quand tu ne comprends pas une requête SQL, quand tu ne sais même pas que c'est une base de données qui stocke tes infos pour conserver les données persistentes entre deux connexions, je doute un peu que tu puisses modifier (sans même parler d'améliorer !) le code de ton prédecesseur.
    Eh bien je me débrouille pas si mal que ça car il y avais un problème pour le nommage des archives en 2015 et j'ai compris que c'était le 2014 qui posait problème. Et c'est pour ça que je l'ai remplacé par la variable $date. Pour l'instant je n'ai pas encore accès à la base de donnée.

  15. #15
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 107
    Points : 139
    Points
    139
    Par défaut
    Je ne comprend pas ta question.

    Vu que tu viens de changer ta requête, requête qui renseigne $list1["NB"], qui lui même renseigne $nb_c, $nb_c doit maintenant dépendre de l'année en cours.
    Après ta requête $requete1, c'est ce traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $statement1 = oci_parse($conn, $requete1);
    	oci_execute($statement1,OCI_COMMIT_ON_SUCCESS);
    	$list1 = oci_fetch_assoc($statement1);
    qui transfert l'information récupérée dans la base vers le champ $list1["NB"].

    As tu tester si la nouvelle requête fonctionne correctement ?

    Toutefois, je suis d'accord avec Dendrite. Même si tu réussis à comprendre approximativement le travail de ton prédécesseur, cela va être compliqué de le maintenir et l'améliorer

    Darkauron

  16. #16
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    C'est bon ça marche !! Merci pour votre aide maintenant ma variable se réinitialisera chaque année . Et la requête fonctionne très bien!

  17. #17
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Ouais, c'est vrai, tout le monde sait que le code, c'est de l'à peu près et un truc pour ceux qui ne se posent pas de questions et aiment faire des tours de magie en se vantant d'être trop forts.

    Tu as mis ce truc de ton prédecesseur en commentaires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /*$requete1 ="SELECT COUNT(*) AS NB 
    				FROM POP_DM
    				JOIN POP_PROJET ON POP_DM.ID_PROJET = POP_PROJET.ID_PROJET
    				WHERE NUM_ARCH LIKE '".$date."'
    				AND ID_SITE =".$site['ID_SITE'];*/
    Si tu n'as rien modifié, il y a comme un petit problème... vu que like sans % est égal à =, et la requête était donc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNT(*) AS NB 
    FROM POP_DM
    JOIN POP_PROJET ON POP_DM.ID_PROJET = POP_PROJET.ID_PROJET
    WHERE NUM_ARCH = '2014-12-01' /*pourquoi date ne serait pas... une date ?*/
    AND ID_SITE =12;
    auquel cas le num_arch de ta base n'est que le jour...

    ensuite, il se passe ça côté code, pas coté base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //si on est sur le 01/12/2014 et qu'il en récupère 54
    $nb_c='055';
    $num_arch='ARCH-2014-12-01-055';
    Ensuite, tu ne nous as pas montré le code d'insertion, donc on ne peut pas t'en dire plus.
    Alors, que tes requêtes like "%2014%" renvoie les trucs que tu veux, on est bien content pour toi, et oui, tu es super fortiche... mais bon... si c'est ensuite pour aller écraser tes tables n'importe comment parce que tu n'as aucune visibilité sur ta base... Mais bon, ça je l'ai déjà dit et tu t'en fous et tu as coché résolu. Au boulot, j'en ai connais des comme ça, ils arrivent, passent derrière le code d'un collègue qui a bien peaufiné son truc, et déchirent tout... enfin c'est ce qu'il croit, en général, il n'est plus là pour entendre les gens qui rigolent parce qu'il a tout bouzillé sans rien comprendre.

  18. #18
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2015
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2015
    Messages : 107
    Points : 139
    Points
    139
    Par défaut
    La requête qui été en commentaire été la sienne, et non l'ancienne. Et l'ancienne comportait bien des %. Et il s'agissait bien d'une année (2014) écrit en dur.

    Après, je suis d'accord sur le fait de ne pas modifier en ne comprenant que partiellement.

    Par contre, je reste étonné que personne (même la personne ayant écrit le code à la base) ne se soit dit que %2014% poserait "problème" les années suivantes d'une part pour l'évolution dans le temps, d'autre part pour la fiabilité des données. Malheureusement, on ne pousse pas tous la réflexion jusqu'au bout

  19. #19
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 120
    Points : 51
    Points
    51
    Par défaut
    Ouais, c'est vrai, tout le monde sait que le code, c'est de l'à peu près et un truc pour ceux qui ne se posent pas de questions et aiment faire des tours de magie en se vantant d'être trop forts.
    on est bien content pour toi, et oui, tu es super fortiche... mais bon... si c'est ensuite pour aller écraser tes tables n'importe comment parce que tu n'as aucune visibilité sur ta base... Mais bon, ça je l'ai déjà dit et tu t'en fous et tu as coché résolu. Au boulot, j'en ai connais des comme ça, ils arrivent, passent derrière le code d'un collègue qui a bien peaufiné son truc, et déchirent tout... enfin c'est ce qu'il croit, en général, il n'est plus là pour entendre les gens qui rigolent parce qu'il a tout bouzillé sans rien comprendre.
    Non mais tu as quelque chose contre moi ? Parce que me rabaisser et être condescendant c'est bien sympa mais moi je suis sur ce forum pour obtenir de l'aide et pas me faire envoyer boulet. Pour ta gouverne je suis pas un débile qui s'amuse à écraser tout le code d'une personne, je suis peut être pas spécialement un hardcore codeur mais j'essaie de comprendre se que je fais au moins(et j'ai été honnète en disant que je la comprenais pas), en plus ça fait quelque jour que je regarde tout son code pour savoir comment ça marche et donc c'est pour ça que j'avais pas modifié le code et que j'attendais que mes testes soient sur! Et puis comme je n'avais pas accès à la base de donnée c'était pas facile mais maintenant j'y ai accès et j'ai pu tester la requête (voir ci-dessous).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $requete1 ="SELECT COUNT(*) AS NB 
    				FROM POP_DM
    				JOIN POP_PROJET ON POP_DM.ID_PROJET = POP_PROJET.ID_PROJET
    				WHERE NUM_ARCH LIKE '%-".$date."-%'
    				AND ID_SITE =".$site['ID_SITE'];
    Ah et j'ai oublié que pour la variable $date je récupère que l'année et pas le jour et l'heure:


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

Discussions similaires

  1. executer une macro quand on change la valeur d'une cellule
    Par Benwad dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 23/02/2009, 18h54
  2. Remettre a zero une combo box
    Par mick_ban dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/07/2008, 17h29
  3. Remettre à zero une variable static
    Par Mchupakabra dans le forum Langage
    Réponses: 1
    Dernier message: 09/06/2008, 19h57
  4. [Forum] Envoyer une variable quand on clique sur un lien
    Par Eisy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 34
    Dernier message: 17/03/2006, 12h05
  5. remettre a zero une valeur auto-incrementée
    Par rte dans le forum Requêtes
    Réponses: 4
    Dernier message: 23/09/2004, 01h54

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