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 :

numéro séquentiel qui redémarre à 0 tous les mois


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut numéro séquentiel qui redémarre à 0 tous les mois
    tout le monde !

    Voila tout est dans le tire, je cherche a créer un numéro séquentiel qui se redémarre à 0 tous les mois.
    J'utilise cette méthode pour récupérer le mois en cours :
    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mois_creation = ($date->get('MM'));
    A coté de cela, j'ai une variable qui sera enregistrée en base et qui sera incrémentée chaque fois que je fais une nouvelle création.
    cependant, cette incrémentation devra reprendre à 0 à chaque fois que l'on change de mois.

    de votre aide !!
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour,

    avec ca :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo date('d', time()-86400);

    tu récupères le numéro du jour -1. A toi ensuite de faire ton incrémentation éventuelle

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Merci de ta réponse Madfrix

    Le numéro du jour -1 ?? c'est à dire ??

    pour être sur de bien comprendre :
    Pourquoi récupérer le numéro du jour moins 1 ??

    mon code doit être comme ceci :
    mois incrémentation => l'incrémentation étant indépendante du mois

    je m'explique : exemple :
    Durant mon mois de janvier j'ai incrémenté 50 fois ma partie incrémentation au 31 janvier à 23h59 j'ai 50fiches mon numéro sera :
    01050

    maintenant à le premier février mon numéro sera devenu
    02000 et avec mon incrémentation cela donnera 02001.

    c'est assez tordu à expliquer ...

    Merci !
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  4. #4
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Non autant pour moi j'avais pas saisi je croyais qu'a chaque 1er du mois tu repartais de 0 d'où ma récupération du numéro du jour - 1 jour (1j->0; 2j->1 etc)

    Mais à partir du moment ou tu récupères le numéro de ton mois, qu'est ce qui t'empêche de mettre au point ton algo ?

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    ba, je ne sais absolument pas comment m'y prendre ...
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  6. #6
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    te donne le numéro du mois avec les 0 éventuels [01-12]

    Une fois que tu l'as ce numéro, tu concatènes ton nombre d'incrémentation à ce numéro. Ce nombre d'incrémentations est stocké en base ?

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Mon numéro sera comme celui ci au final. c'est un ensemble de fonctions qui me créent des nombres que je concatène en chaine de caractère pour arriver à ce résultat

    =>XXXMM001

    en fait, ce qu'il faudrait que je fasse, c'est récupérer les chiffres MM, du dernier enregistrement, les comparer avec le mois actuel et voir s'il sont identique.
    2 solutions :

    => si ils sont identiques alors on récupère les 3 derniers chiffres qu'on incrémente

    => si ils sont différents, alors on redémarre les 3 derniers chiffres à 000 qui seront directement incrémentés pour faire 001.

    oui, mais voila ... Le dire c'est bien, le faire c'est mieux ...
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  8. #8
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    function incremente($sequence){
     
    	$mois = date('n');
    	$x = substr($sequence, 0, 3);
    	$m = (int)substr($sequence, 3, 2);
    	$i = (int)substr($sequence, -3);
     
    	if($mois == $m)
    		return $x.str_pad($mois, 2, 0, STR_PAD_LEFT).str_pad($i+1, 3, 0, STR_PAD_LEFT);
     
    	$next_mois = ($mois == 12) ? '01' : str_pad($mois+1, 2, 0, STR_PAD_LEFT);
     
    	return $x.$next_mois.'000';
     
    }
     
    $sequence = 'XXX08001';


    Il te reste plus qu'à envoyer tes séquences dans la fonction

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Merci beaucoup Madfrix !!!
    je vais voir si cela convient !!
    qu'est ce que tu apelles séquence ?? la récupération de mon numéro précédent ??

    autre chose :
    A delete dsl
    j'ai peur de pas avoir tout bien saisi la ...
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  10. #10
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Citation Envoyé par cyrux Voir le message
    j'ai peur de pas avoir tout bien saisi la ...
    j'avais juste fais un double post que j'ai effacé ensuite

    Oui la séquence c'est bien le dernier numéro que tu donnes à la fonction et elle t'en génère un nouveau

  11. #11
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Je vais peu être en demander beaucoup, mais je n'aime pas me servir de quelque chose que je ne comprends pas très bien ...

    Serait il possible que tu expliques brièvement ton code s'il te plait ?

    encore !
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  12. #12
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    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
    16
    17
    18
    19
    20
     
    function incremente($sequence){
     
            // Récupères le mois en cours sans les zéros (1 à 12)
    	$mois = date('n');
            // Récupéres les 3 premières lettres de ta séquence
    	$x = substr($sequence, 0, 3);
            // Récupères le mois et l'incrément et le caste en int donc perte des 0
    	$m = (int)substr($sequence, 3, 2);
    	$i = (int)substr($sequence, -3);
     
            // Si le mois en cours = le mois de la dernière séquence, on retourne la chaine avec le mois complété par un eventuel 0 à gauche et l'incrément +1 complété avec des eventuels 0 à gauche
    	if($mois == $m)
    		return $x.str_pad($mois, 2, 0, STR_PAD_LEFT).str_pad($i+1, 3, 0, STR_PAD_LEFT);
            // Sinon meme procédure mais on incrémente le mois au lieu de l'incrément
    	$next_mois = ($mois == 12) ? '01' : str_pad($mois+1, 2, 0, STR_PAD_LEFT);
     
    	return $x.$next_mois.'000';
     
    }

  13. #13
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Comment dire ... ROYAL !!
    T'ES UN AS MON AMI !!!!

    C'est fonctionnel et en plus, j'ai compris !!!!
    d'ailleurs y'a quelques fonctions que je connaissais pas qui vont me resservir ....


    !!!
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  14. #14
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    J'ai quelques erreurs avec la fonction...

    Elle me renvoit XXX09000 et en paramêtre je lui ai passé XXX08058 pour tester ?? bizarre.

    pourtant j'ai refais l'algo et ligne après ligne c'est exactement ce qu'il faut ...

    j'ai regardé les fonctions pour récupérer les données et les formater et elles aussi sont bonnes ...
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  15. #15
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    De mon côté ca donne bien XXX08059, es tu sur de toi ? Peut être à tu déréglé l'heure de ton serveur...

  16. #16
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Merci de ton aide Madfrix !!

    Sur de moi, oui, car j'ai été jusqu'à copier coller ta fonction telle qu'elle mais j'ai le même résultat en retour ...

    Autre chose, les 3 premiers caractères, notés XXX pour l'exemple ne sont pas des XXX en réalité, mais bien d'autre parties du code,

    les 2 premiers sont le résultat d'un calcul
    le 3 ème est une lettre

    ta fonction reste quand même fonctionnelle ??

    Déréglé l'heure de mon serveur ?? (je suis sur un apache installé d'un wamp, tout ce qu'il y a de plus classique )
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  17. #17
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour,

    Citation Envoyé par cyrux Voir le message
    ta fonction reste quand même fonctionnelle ??
    Oui. Il faut juste que ce soit toujours de longueur 3 caractères pour le substr.

    Ton problème subsiste t-il toujours ? Si oui, peux tu me donner des exemples d'appels/retours ?

  18. #18
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Oui mon problème persiste toujours ... malheureusement !

    Quel type d'appels retours souhaites tu ?? des exemples au hasard ??

    Merci de ton aide !
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  19. #19
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Oui me dire ce que tu obtiens comme retour pour telle ou telle valeur passée en argument.

    Me montrer aussi le code de la fonction si tu l'a changée

  20. #20
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Quand je rentre cette valeur :
    XXX08056
    il me retourne cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Call to a member function setLabel() on a non-object in C:\wamp\www\XXXXXXX\application\controllers\IndexController.php on line 463
    la ligne concernée est celle ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $form->submit->setLabel('Etape suivante =>');
    quand je rentre cette valeur :
    XXX06056
    il me retourne ceci :
    XXX09000

    quand je rentre cette valeur :
    XXX03012
    il me retourne ceci :
    XXX09000

    Peu importe la valeur, c'est toujours la même réponse !!
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

Discussions similaires

  1. [ZF 1.10] numéro séquentiel qui redémarre à 0 tous les mois
    Par cyrux dans le forum Zend Framework
    Réponses: 0
    Dernier message: 11/08/2010, 10h01
  2. [MySQL] Variable qui s'actualise tous les jours
    Par zathuros dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 03/11/2008, 13h22
  3. Réponses: 5
    Dernier message: 10/07/2008, 13h50
  4. Réponses: 4
    Dernier message: 25/06/2008, 14h57
  5. Réponses: 2
    Dernier message: 25/09/2006, 13h04

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