Changement d'année compteur à 0
Slylia
Messages postés
58
Date d'inscription
Statut
Membre
Dernière intervention
-
Slylia Messages postés 58 Date d'inscription Statut Membre Dernière intervention -
Slylia Messages postés 58 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'ai créé un compteur qui fonctionnait sous le format année-numéro_de_commande.
Comme nous arrivons à la fin de l'année je souhaiterai que mon compteur change et que le numéro de commande soit remis à 0.
Mon code actuel donne :
Comment faire pour que le numéro de commande se remette à 0 en fonction du chagement d'année ?
Je suis sûre que c'est tout simple mais sur le coup je ne vois pas comment faire.
J'ai créé un compteur qui fonctionnait sous le format année-numéro_de_commande.
Comme nous arrivons à la fin de l'année je souhaiterai que mon compteur change et que le numéro de commande soit remis à 0.
Mon code actuel donne :
<td> N° COMMANDE : </td> <td style="width:80%"> <?php $req_COM_Id = ("SELECT MAX(COM_Id) FROM commande"); $aff_COM_Id = mysql_query($req_COM_Id, $connect) or die($req_COM_Id . " - " . mysql_error()); $affiche_COM_Id=mysql_result($aff_COM_Id,0); $affiche_COM_Id = $affiche_COM_Id + 1; $annee = substr (date('y'),-2); ?> <input type="text" readonly name="COM_Code" style="width:100%" value="<?php echo $annee."-".$affiche_COM_Id ; ?>"> <?php //} ?> </td>
Comment faire pour que le numéro de commande se remette à 0 en fonction du chagement d'année ?
Je suis sûre que c'est tout simple mais sur le coup je ne vois pas comment faire.
A voir également:
- Changement d'année compteur à 0
- Compteur électrique - Guide
- Changement dns - Guide
- Compteur contractions - Télécharger - Santé & Bien-être
- Remettre a 0 un pc - Guide
- Comment ralentir un compteur linky forum - Accueil - Objets connectés
2 réponses
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
Je n'arrive pas à comprendre la quète avec le ("SELECT ISNULL(MAX(COM_Id), 0) peux-tu me l'expliquer ?
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
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 ?