Le premier 0 d'un code postal

Eléphanteau du PHP | 21 Messages

06 juin 2007, 09:46

bonjour, quand je consulte ma base je remarque que tout les codes postaux (rentrés par formulaire) commençant par 0 n'ont plus le 1er 0.
Comment faire pour les garder?

Eléphant du PHP | 396 Messages

06 juin 2007, 09:51

Quel est le type de ton champs?
Si il est de type entier c'est normal, passe le en type char

Eléphanteau du PHP | 21 Messages

06 juin 2007, 09:57

oui il est entier, mais il n'y a aucun moyen de garder le type entier et le 1er 0 a part changer de type? :s
Modifié en dernier par manzzz le 06 juin 2007, 10:02, modifié 1 fois.

Eléphant du PHP | 396 Messages

06 juin 2007, 10:02

Ben tu peux modifier ça au moment de l'affichage à la limite.
Par exemple tu comptes le nombre de caractères de ta chaine et si il est inférieur à 5 (?) c'est qu'il manque le 0 du début donc tu le rajoutes.
Mais ça serait plus simple de passer le champs en type chaîne.
De plus, je ne sais pas si ça te concerne mais le code postal de la Corse est different des continentaux me semble :)

Eléphanteau du PHP | 21 Messages

06 juin 2007, 10:08

merci :) ^^

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 juin 2007, 12:07

C'est un problème de modélisation de ta base.

Un code postal n'est pas un entier mais une chaine de caractère. Comme cela a été soulevé, l'exemple de la Corse le prouve puisque c'est "2Axxx" ou "2Bxxx"

Ce n'est pas parce qu'un champ n'est composé que de chiffres qu'il s'agit d'un entier ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 693 Messages

06 juin 2007, 12:57

J'en metterai pas main main à couper, Zeus. Il me semble justement que l'ensemble des codes postales de la Corse commence par 20.

un petit tour par la te convaincra

ViPHP
ViPHP | 5924 Messages

06 juin 2007, 13:02

Même si c'est le cas, ca n'en reste pas moins une chaine. Il faut donc utiliser un champ CHAR(5) dans la base de données (ici, CHAR est plus intéressant que VARCHAR puisque l'on sait que les chaines ont toutes les même taille).