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

PHP & Base de données Discussion :

[Conception] Ajouter des "0" devant un nombre


Sujet :

PHP & Base de données

  1. #1
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut [Conception] Ajouter des "0" devant un nombre
    Bonjour,

    Voici la structure de ma base :
    Code SQL : 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
    21
    22
    23
    24
    -- Base de données: `dbprotect`
    -- 
    -- Structure de la table `commande`
    -- 
    CREATE TABLE `commande` (
      `id_commande` int(11) NOT NULL auto_increment,
      `num_commande` varchar(20) NOT NULL default '',
      `donneur_ordre` varchar(32) NOT NULL default '',
      `date_commande` varchar(10) NOT NULL default '',
      `marque` varchar(32) NOT NULL default '',
      `division` varchar(32) NOT NULL default '',
      `adresse` varchar(64) NOT NULL default '',
      `code_postal` int(5) NOT NULL default '0',
      `ville` varchar(32) NOT NULL default '',
      `raison_commande` char(3) NOT NULL default '',
      `motif_commande` varchar(64) NOT NULL default '',
      `service` varchar(32) NOT NULL default '',
      `num_client` int(8) NOT NULL default '0',
      `num_client_livre` int(8) NOT NULL default '0',
      `attention_de_client` varchar(32) NOT NULL default '',
      `telephone` varchar(32) NOT NULL default '',
      `status` varchar(32) NOT NULL default '',
      PRIMARY KEY  (`id_commande`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

    Aperçu d'un exemple de num_commande : 01001400-ACCD-000001
    "01001400" correspond à la clé "donneur_ordre"
    "AC" correspond à la clé "motif_commande"
    "CD" correspond à la clé "service"
    "000001" correspond à un numéro unique de commande qui est incrémenté à chaque enregistrement.


    je voudrais savoir comment générer le numéro unique de commande qui doit avoir une longueur de 6 caractères maxi ? (avec les zéros)

    merci pour votre aide
    xender

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Le plus simple je pense c'est d'avoir un champ auto-incrémenté (id_commande ?) que tu prends comme référence pour construire ta chaîne (où tu pourras ajouter des zéros sans problème).

  3. #3
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    okay mais comment je fais pour construire ma chaine?

  4. #4
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Un truc dans ce genre là peut-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $str = "" . $id;
    while(strlen($str) < 6)
       $str = "0" . $str;
    C'est une idée hein j'ai pas testé mais bon...

  5. #5
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    super merci!!

    comment je fais pour savoir le dernier id?
    quel requète sql?

    merci pour ton aide

  6. #6
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Dis-donc il faut réfléchir un peu aussi.

    SELECT id_commande FROM commande ORDER BY id_commande DESC

    Et tu regardes le premier résultat, tu l'incrémentes et après tu fais le code précédent ou un truc qui ressemble.

  7. #7
    Membre chevronné
    Avatar de Bidouille
    Inscrit en
    Mars 2003
    Messages
    1 281
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 1 281
    Points : 1 999
    Points
    1 999
    Par défaut
    sprintf permet de faire cela. Fais une recherche sur le forum, ce sujet a été abordé au moins 50 fois.

  8. #8
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    super merci j'ai trouvé une solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $id_commande = $row["id_commande"] +1;
            if(strLen($id_commande) < 6){
            for($i=0;$i<(10-(strLen($id_commande)));$i++){
                $id_commande = '0'.$id_commande;
                }
            }
            else{
            $id_commande=$id_commande;
            }
    merci encore pour votre aide !
    A+
    Xender

  9. #9
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Sinon il y a la fonction str_pad qui est là pour ça: http://fr2.php.net/manual/fr/function.str-pad.php

  10. #10
    Membre du Club Avatar de xender
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 93
    Points : 44
    Points
    44
    Par défaut
    a ba voilà encore mieux !!!

    super merci beaucoup

  11. #11
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par GregPeck Voir le message
    Sinon il y a la fonction str_pad qui est là pour ça: http://fr2.php.net/manual/fr/function.str-pad.php
    Génial, apres une recherche c'est exactement ce qu'il me faut. J'ai donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_pad($valeur+1, 2, '0', STR_PAD_LEFT)
    qui me transforme 2 en 02

  12. #12
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    Sinon simplement ajouter l'option ZEROFILL au champs concerné et mysql va s'occuper de tout tout seul :

    http://dev.mysql.com/doc/refman/5.0/...ric-types.html

    http://stackoverflow.com/questions/5...ofill-in-mysql

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Conception] Ajouter des stats sur une classe métier
    Par Shivan dans le forum Général Java
    Réponses: 8
    Dernier message: 27/01/2009, 15h45
  2. [Conception] Ajout des produits dans un panier
    Par ghyosmik dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/09/2006, 11h17

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