Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/04/2006, 11h36   #1
Candidat au titre de Membre du Club
 
Avatar de xender
 
Inscription : décembre 2004
Messages : 92
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 92
Points : 13
Points : 13
Par défaut [Conception] Ajouter des "0" devant un nombre

Bonjour,

Voici la structure de ma base :
Code :
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
xender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 11h48   #2
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
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).
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 12h03   #3
Candidat au titre de Membre du Club
 
Avatar de xender
 
Inscription : décembre 2004
Messages : 92
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 92
Points : 13
Points : 13
okay mais comment je fais pour construire ma chaine?
xender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 12h10   #4
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Un truc dans ce genre là peut-être :
Code :
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...
Amara est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/04/2006, 12h28   #5
Candidat au titre de Membre du Club
 
Avatar de xender
 
Inscription : décembre 2004
Messages : 92
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 92
Points : 13
Points : 13
super merci!!

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

merci pour ton aide
xender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 12h30   #6
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
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.
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 14h41   #7
Membre Expert
 
Avatar de Bidouille
 
Inscription : mars 2003
Messages : 1 158
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 1 158
Points : 1 054
Points : 1 054
sprintf permet de faire cela. Fais une recherche sur le forum, ce sujet a été abordé au moins 50 fois.
__________________
Rédacteur PHP / Delphi ADO / Novell / OpenOffice.org

Inutile de m'envoyer vos questions par MP, je ne réponds que par le forum.
Bidouille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 15h42   #8
Candidat au titre de Membre du Club
 
Avatar de xender
 
Inscription : décembre 2004
Messages : 92
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 92
Points : 13
Points : 13
super merci j'ai trouvé une solution :

Code :
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
xender est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 26/04/2006, 15h50   #9
Membre éprouvé
 
Avatar de GregPeck
 
Inscription : novembre 2005
Messages : 530
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 530
Points : 464
Points : 464
Sinon il y a la fonction str_pad qui est là pour ça: http://fr2.php.net/manual/fr/function.str-pad.php
GregPeck est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/04/2006, 16h13   #10
Candidat au titre de Membre du Club
 
Avatar de xender
 
Inscription : décembre 2004
Messages : 92
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 92
Points : 13
Points : 13
a ba voilà encore mieux !!!

super merci beaucoup
xender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 16h14   #11
Invité régulier
 
Homme
Inscription : novembre 2009
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2009
Messages : 15
Points : 8
Points : 8
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 :
str_pad($valeur+1, 2, '0', STR_PAD_LEFT)
qui me transforme 2 en 02
LegGohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 16h19   #12
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
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
grunk est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h43.


 
 
 
 
Partenaires

Hébergement Web