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

Requêtes MySQL Discussion :

Créer un numéro incrémenté personnalisé


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 51
    Par défaut Créer un numéro incrémenté personnalisé
    Bonjour,
    j'ai créer une base de données avec mysql dans laquelle j'ai une table Comm (Numcom, idCli,) qui reçois des informations envoyé via un formulaire. un numéro de commande est générer à chaque nouvel envoie d'un formulaire. je voudrais que ce numéro soit un mélange cohérent de chiffre et de lettres comme par exemple 3 premières lettres du nom du client suivi de l'année en cours et de six chiffres (ex SAM2009001010). l'envoi du formulaire doit donner la possibilité d'imprimé la facture qui en résulte. Comment faire pour avoir ce résultat? Merci pour l'aide

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    C'est le boulot du logiciel de formater le numéro de commande.
    Il faut définir les règles d'incrémentation du numéro à 6 chiffres :
    - redémarrage à zéro chaque année ?
    - continu ?

    Que se passera t-il quand on arrivera à la millionième commande ?

    Ensuite vient le problème e la gestion de la série de numéros. Le temps d'aller interroger la table pour connaître quel est le dernier numéro utilisé afion d'en générer un nouveau et une autre commande est enregistrée qui prend ce nouveau numéro.
    Il faut donc créer une table contenant la série des numéros utilisés.
    Bref, des problèmes pour pas grand chose à mon avis !

    Et aussi pour l'attribution des lettres. Le risque n'est pas nul d'avoir deux clients ayant les mêmes 3 premières lettres passant commande la même année. A quoi sert alors l'identification de la commande selon les initiales du client ?

    A noter qu'il est préférable d'ajouter à la table un vrai identifiant autoincrémenté par le SGBD de type entier, non nul, non signé.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 51
    Par défaut
    merci pour le conseil mais j'aimerais quand avir une idée de comment je peut mettre cela en place quitte à définir toutes règles pour que cela soit efficace

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 50
    Par défaut
    Perso, je mettrai un champ auto-incrémenté comme décrit par CinePhil qui va identifier de manière unique chaque enregistrement. Ensuite, rien n'empêche de faire un deuxième champ (CHAR 13) avec un index UNIQUE qui résulte du calcul que tu décris, ce qui en PHP doit donner à peu près:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $id_commande=substr($nom,0,3).date('Y').str_pad(mysql_insert_id(),6,'0',STR_PAD_LEFT);
    Puis faire l'UPDATE de l'enregistrement dans MySQL.

    Au moins, à la création d'un nouvel enregistrement, tu n'as pas à te soucier de savoir quel est le dernier nombre utilisé, c'est MySQL qui gère ça.

Discussions similaires

  1. créer un numero incrémenter avec remise a 0 annuel
    Par p'tite Sandrine dans le forum Access
    Réponses: 17
    Dernier message: 29/01/2007, 10h17
  2. Créer un numéro de série unique et propre
    Par php_de_travers dans le forum Langage
    Réponses: 2
    Dernier message: 11/01/2007, 19h37
  3. [MySQL] obtenir dernier numéro incrémenté
    Par Mitaka dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/01/2006, 14h16
  4. numéro à incrémenter
    Par student007 dans le forum Access
    Réponses: 10
    Dernier message: 26/12/2005, 11h03
  5. créer un numéro de série
    Par progima dans le forum MFC
    Réponses: 4
    Dernier message: 25/10/2005, 13h27

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