Changement d'année compteur à 0
Fermé
Slylia
Messages postés
58
Date d'inscription
jeudi 27 mai 2010
Statut
Membre
Dernière intervention
4 février 2011
-
Modifié par Slylia le 21/12/2010 à 16:58
Slylia Messages postés 58 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 4 février 2011 - 21 déc. 2010 à 17:41
Slylia Messages postés 58 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 4 février 2011 - 21 déc. 2010 à 17:41
A voir également:
- Changement d'année compteur à 0
- Cette photo n’a pas été prise cette année. trouvez la date, l'heure et avec quel modèle d'appareil photo elle a été prise. ✓ - Forum Graphisme
- Not in a hypervisor partition (hvp=0) (verr_nem_not_available). - Forum VirtualBox
- Si #n/a alors 0 - Forum Bureautique
- Acpi\int33a0\0 ✓ - Forum Pilotes (drivers)
- Void(0) ✓ - Forum Internet / Réseaux sociaux
2 réponses
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 009
21 déc. 2010 à 17:06
21 déc. 2010 à 17:06
Bonjour,
Il faut modifier ta requête SQL pour ne prendre que le max pour l'année en cours. Pour ça, il faut que l'année en question soit stockée dans ta base. Ça peut être un champ à part entière, une date de commande, ou peut-être un COM_Code comme on le voit dans ton code. La requête devra être un peu adaptée suivant le cas de figure.
Par exemple, si ton COM_Code (annee-Id) est enrigstré en base, tu peux faire comme ça :
Xavier
Il faut modifier ta requête SQL pour ne prendre que le max pour l'année en cours. Pour ça, il faut que l'année en question soit stockée dans ta base. Ça peut être un champ à part entière, une date de commande, ou peut-être un COM_Code comme on le voit dans ton code. La requête devra être un peu adaptée suivant le cas de figure.
Par exemple, si ton COM_Code (annee-Id) est enrigstré en base, tu peux faire comme ça :
$annee = substr (date('y'),-2);
$req_COM_Id = ("SELECT ISNULL(MAX(COM_Id), 0) FROM commande WHERE COM_Code LIKE '$annee%'");
Xavier
Slylia
Messages postés
58
Date d'inscription
jeudi 27 mai 2010
Statut
Membre
Dernière intervention
4 février 2011
1
21 déc. 2010 à 17:13
21 déc. 2010 à 17:13
Je n'arrive pas à comprendre la quète avec le ("SELECT ISNULL(MAX(COM_Id), 0) peux-tu me l'expliquer ?
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 009
21 déc. 2010 à 17:29
21 déc. 2010 à 17:29
Le point important, c'est le WHERE qui impose de ne rechercher que sur une année précise.
Sauf que si cette année ne comporte pas encore de commande, la requête MAX(COM_Id) renverra NULL.
Pour éviter cela, la fonction ISNULL(A, B) renvoie B si A vaut NULL, A sinon. Comme ça tu es sûr d'avoir une valeur numérique en sortie.
Au passage, le code tel que je te l'ai donné te donnera comme premier COM_Id de l'année la valeur 1. Si tu veux commencer à 0, il faut remplacer ISNULL(..., 0) par ISNULL(..., -1)
Xavier
Sauf que si cette année ne comporte pas encore de commande, la requête MAX(COM_Id) renverra NULL.
Pour éviter cela, la fonction ISNULL(A, B) renvoie B si A vaut NULL, A sinon. Comme ça tu es sûr d'avoir une valeur numérique en sortie.
Au passage, le code tel que je te l'ai donné te donnera comme premier COM_Id de l'année la valeur 1. Si tu veux commencer à 0, il faut remplacer ISNULL(..., 0) par ISNULL(..., -1)
Xavier
Slylia
Messages postés
58
Date d'inscription
jeudi 27 mai 2010
Statut
Membre
Dernière intervention
4 février 2011
1
21 déc. 2010 à 17:41
21 déc. 2010 à 17:41
Je t'avoue que j'ai un peu de mal à savoir dans quel ordre je dois faire les choses.
Comme on arrive à la fin de l'année, il faut qu'au 1er janvier 2010 le nouveau COM_Num soit 11-001.
Voila la structure de ma table commande :
CREATE TABLE IF NOT EXISTS 'commande' (
'COM_Id' int(11) NOT NULL AUTO_INCREMENT,
'COM_Code' varchar(15) NOT NULL,
'COM_Date' date NOT NULL,
'COM_FRS_Id' int(11) NOT NULL,
'COM_LAB_Id' int(11) NOT NULL,
'COM_DEM_Id' int(11) NOT NULL,
'COM_Inactive' text NOT NULL,
'COM_Rec' binary(1) NOT NULL COMMENT 'Commande dans fichier ou non',
'COM_Commentaire' text NOT NULL,
PRIMARY KEY ('COM_Id'),
UNIQUE KEY 'COM_Code' ('COM_Code')
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=283 ;
Pour structurer mon algorithme il faut que je cherche l'année actuelle et que je fasse une boucle pour augmenter de 1 à chaque nouvelle commande ?
Comme on arrive à la fin de l'année, il faut qu'au 1er janvier 2010 le nouveau COM_Num soit 11-001.
Voila la structure de ma table commande :
CREATE TABLE IF NOT EXISTS 'commande' (
'COM_Id' int(11) NOT NULL AUTO_INCREMENT,
'COM_Code' varchar(15) NOT NULL,
'COM_Date' date NOT NULL,
'COM_FRS_Id' int(11) NOT NULL,
'COM_LAB_Id' int(11) NOT NULL,
'COM_DEM_Id' int(11) NOT NULL,
'COM_Inactive' text NOT NULL,
'COM_Rec' binary(1) NOT NULL COMMENT 'Commande dans fichier ou non',
'COM_Commentaire' text NOT NULL,
PRIMARY KEY ('COM_Id'),
UNIQUE KEY 'COM_Code' ('COM_Code')
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=283 ;
Pour structurer mon algorithme il faut que je cherche l'année actuelle et que je fasse une boucle pour augmenter de 1 à chaque nouvelle commande ?