générer un nombre en fonctions de certains éléments.

Mammouth du PHP | 702 Messages

14 mars 2012, 18:46

Bonjour à tous, je voudrais créer une fonction qui génère un numéro selon une structure bien définie, à savoir année en cours (sur les 2 derniers chiffres), un code que j'obtiens par la fonction get et un chiffre qui varie et s'autoincrémente en fonction du dernier numéro généré pour la même année et le même code. exemple année[12]nombre libre au cas ou[00]$_GET[1566] et 6223<-- numéro qui s'autoincrémente en fonction du dernier enregistrement de la base de donnée pour le même code. Je ne sais pas du tout comment procéder. D'avance merci si vous avez des tuyaux.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

14 mars 2012, 19:16

Salut,

Il faut faire une fonction SQL Perso qui va le générer.
Le numéro peux être geré dans une séquence ou dans une table (avec un update dans la fonction à chaque appel). À
Fonction prend un paramètre (le nombre fournis dans l'url sa présence ou nom est géré en php) attention de bien vérifier dans la fonction que le code sera valide (qu'il n'existe pas dans la base).
Après c'est une simple concaténation.

Tuto sur les fonctions en SQL => http://sqlpro.developpez.com/cours/sqlaz/techniques/#L7 (le reste aussi est intéressant ;) )

Au final ta requête sera du style insert into table values(mafonction(27),'valeur 1' etc etc);

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 702 Messages

15 mars 2012, 08:47

y'a un soucis complémentaire. c'est que chaque noùmbre doit et devra partir de 0 exemple si le $_GET renvoit 1566 alors le premier numéro sera 120015660001 si c'est un 1567 idem. seulement si on récupère la même continuité dans le GET alors on incrémente par rapport au dernier numéro.

Mammouth du PHP | 702 Messages

15 mars 2012, 09:06

j'ai fait ceic. c'est simple et ça marche niquel.
<?php  echo date('y').'00'.$_GET['code_client'].'' ?>
maintenant ce que je souhaiterais c'est vraiment incrémenter le dernier enregistrement qui possède ce code et cette année par +1... la je suis perdu.

Mammouth du PHP | 702 Messages

15 mars 2012, 09:16

la deuxieme partie est en get, mais il faut savoir que les numéros générés sont attribués à un enregistrement de la table. je ne les génère pas pour ne pas les enregistrer.

Pour le début j'ai fait cela. c'est simple, pratique et efficace.

<?php echo date('y').'00'.$_GET['code_client'].'' ?>


Le soucis qui m'oppose maintenant est la fin. comment récupérer le dernier enregistrement qui a les même paramètres? (récupérer uniquement les 4 derniers chiffres de ce numéro et l'incrémenter de +1 ? je crois que les % s’avéreront utile si je fais une requête avec LIKE?

j'ai pu voir ça aussi:
? Remplace un seul caractère
* Remplace zéro ou plusieurs caractères
Je présumes que cela servira aussi, mais je ne sais pas du tout comment les exploiter pour retrouver le dernier enregistrement et incrémenter de +1...

ViPHP
ViPHP | 2577 Messages

15 mars 2012, 09:53

Le plus sur est d'avoir une table qui gère les numéros en fonction de l'année et du client. Il faut ensuite faire une procédure stockée qui recherche met à jour le numéro et retourne le numéro à utilisé. Il doit être possible dans une procédure stockée de faire la maj et de lire le numéro en étant sur que les 2 opération sont faites sans interruption et donc ne pas avoir de doublon.
Je crois que mySQL supporte les procédures stockées. Dans le PHP ca s'utilise avec un query et un fetch. Dans mySQL voir "CREATE FUNCTION".

Mammouth du PHP | 702 Messages

15 mars 2012, 10:51

je vais potasser tout cela, mais pour l'heure ça reste vraiment superflu.