mysql base de données

Petit nouveau ! | 3 Messages

22 oct. 2007, 12:26

Bonjour,
J'ai crée une base de donnée mysql regroupant les nombres de la forme 0XXXXXXX 1XXXXXXX ...9XXXXXXX (huit chiffres) et qui représentent les comptes relatifs à la gestion comptable où le premier chiffre 0,1,...9 représentent les classes comptables: le plan comptable contient 10 classes, chaque classe contient un certain nombre de comptes et chaque compte est défini par ses chiffres de début ainsi les comptes 01 qui s'écrit 01000000, 0123 qui s'ecrit 01230000 appartiennent tous à la classe 0 de même les nombres 1, 11, 111, 1111, 12, 13, 19 (10000000, 11000000, 11100000, 11110000, 12000000 etc ) appartiennent tous à la classe 1. un compte qui commence par 4 appartient à la classe 4.
Problème:Ma base est créée mais les comptes de la classe 0 environ 120 comptes se confondent avec les autres par ex 01 se confond avec 1, 0123 avec 123 etc automatiquement ma base ne contient aucun compte commencant par 0 Merci de m'aider

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

22 oct. 2007, 12:30

Salut,

Regarde du coté de zerofill (option)

EDIT : pas de double post :non:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

22 oct. 2007, 12:32

Tu étais dans le bon forum mais pas dans le bon sujet.

Le problème ici c'est que tu as dû choisir un type de colonne numérique alors que tes données ne sont pas à proprement parler des nombres (autrement, il serait normal de retirer les zéros en debut de nombre). MySQL propose une option ZEROFILL, qui permet de conserver les zéros en début de nombre, regarde dans phpMyAdmin. Il faudra également spécifier la largeur de la colonne, 9 dans l'exemple, pour que le bon nombre de zéros soit ajoutés.

Sinon, tu as la possibilité d'utiliser un champs texte, CHAR(9) par exemple.

Petit nouveau ! | 3 Messages

22 oct. 2007, 13:25

Bonjour , je m'excuses pour le double post. J'avais posté mon méssage en tant qu'invité et je ne peux l'éditer.
Merci pour votre réponse rapide.
J'ai éssayé zerofill , j'ai un varchar de 10 mais alors j'ai des comptes qui n'existent plus ex: le numéro de classe qui s'ecrivait 1191 s'ecrit maintenant 0000001191 qui ne correspond à aucune classe par contre le code compte ou compte s'ecrit 0011910000 alors qu'il s'ecrivait 11910000.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

22 oct. 2007, 13:30

Si les numéro de compte n'ont pas tous le même format (9 chiffres) alors il ne te reste plus d'autre choix que de passer par un champs texte, VARCHAR(9) comme l'indiquait Hubert.

Il n'y aura pas opération de calcul sur ces champs donc ça ne pose pas de souci.


Le zerofill est mieux avec un type numérique.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Petit nouveau ! | 3 Messages

22 oct. 2007, 14:03

Oui effectivement la classe est considérée comme un numéro (Numero_class) qui est en fait le début du numéro de compte et le code ou comte proprement dit s'écrit classexxxx ex:
insert into CLASSE_PLAN_COMPTABLE values (1,135,"Provisions réglementées",3,13500000);
insert into CLASSE_PLAN_COMPTABLE values (1,1351,"Provisions pour amortissements dérogatoires",4,13510000);
....
ex de ce qui ne marche pas:
' insert into CLASSE_PLAN_COMPTABLE values (1,011,"Réouverture des comptes de financement permanent",3,01100000);
insert into CLASSE_PLAN_COMPTABLE values (1,0111,"Réouverture des comptes des capitaux propres",4,01110000)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

22 oct. 2007, 14:37

même en varchar sans zerofill ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

22 oct. 2007, 17:15

OUI j'ai mis varchar à 9 et à 8 même problème. Je devrais peut être chercher du coté js je sais pas introduire une exception pour la dernière classe

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

22 oct. 2007, 19:41

Le souci vient d'ailleurs... ... ... non pas de mars :roll:

d'après la requête proposée

Code : Tout sélectionner

insert into CLASSE_PLAN_COMPTABLE values (1,0111,"Réouverture des comptes des capitaux propres",4,01110000)
la dernière valeur donc celle qui nous intéresse (ainsi que la 2ème) sont des entiers car pas de quotes pour encadrer une éventuelle chaine de caractères (Varchar)
Ce qui me fais douter sur le type de champ que tu utilises (pour les 2 valeurs) :-k

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

22 oct. 2007, 19:53

Ok je revise tout, Je vous tiens au courant . Merci pour votre aide si vous avez une idée à me soumettre.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

22 oct. 2007, 20:27

Essaie avec CHAR(9), pas VARCHAR. Si ça ne fonctionne pas, poste le schéma de ta table sous la forme d'une commande CREATE TABLE.