Auteur
gordie
#
267 Posts
Hello, je voudrais vérifier qu'un champs "téléphone" de formulaire;
et un autre "code postal";

-soient constitués uniquement de chiffres
-uniquemen de 4 chiffres pour le code postal.

Comment puis-je faire ? J'ai cherché dans la doc, mais je m'embrouille avec les is_numeric, et les autres..

^
Corinne S.
#
2506 Posts
Coucou Smiley cligne

Pour ma vérification de code postal, j'utilise ceci :

if (!eregi("^[0-9]{5}$",$cp)){ // le code postal n'est pas valide
     $msg_err="Votre code postal n'est pas valide";
}


En gros :
!eregi => si le champs ne contient pas
[0-9] => des chiffres
{5} => 5 au minimum et 5 au maximum ... donc 5
^ => commencer
$ => finir

Traduction :
Si le contenu du champs ne commence pas et ne finis pas (donc est égal) à 5 chiffres,
alors la variable erreur reçoit : "Votre code postal n'est pas valide" comme contenu.

Et voilà...
Il ne te resque qu'à simplifier pour avoir une suite numérique de la taile que tu le souhaites
Smiley ravi

<edit> Un code postal est composé de 5 chiffres ... non ?!? Smiley rolleyes </edit>
Modifié par Cygnus (08 Dec 2006 - 13:23)

Il n'est pas nécessaire d'espérer pour entreprendre, ni de réussir pour persévérer.

^
koala64
#
Modérateur
4162 Posts
ça dépend où... Smiley ravi

^
Tony Monast
#
Fusionnez à froid!
Modérateur
4320 Posts
Cygnus a écrit :

Un code postal est composé de 5 chiffres ... non ?!? Smiley rolleyes


Cela dépend où. Au Québec, il est composé de lettres et de chiffres, 6 en tout. Par exemple : J9Z 4X9. Pour les numéros de téléphone, c'est par exemple 1 819 555-5555. Je pense qu'il faut être prudent lorsqu'on valide ce type de données, encore plus lorsque le site est disponible au publique : donc internationnal. C'est plutôt frustant d'essayer de s'abonner et que le champ n'accepte pas notre code postal ou numéro de téléphone, quand ceux-ci sont pourtant réels et bien formattés.
Modifié par Tony Monast (08 Dec 2006 - 14:41)

Développeur Web

^
Julien Royer
#
Modérateur
4318 Posts
Tony Monast a écrit :
Je pense qu'il faut être prudent lorsqu'on valide ce type de données, encore plus lorsque le site est disponible au publique : donc internationnal.
Tout à fait d'accord. Il vaut mieux être trop laxiste que trop strict dans ce cas-là (rien de plus frustrant non plus que de voir son nom tronqué parce que le développeur a décidé qu'il était trop long Smiley smile ).

“Life is full of misery, loneliness, and suffering—and it’s all over much too soon.”

^
Corinne S.
#
2506 Posts
koala64 a écrit :
ça dépend où... Smiley ravi

Ooops ...
Bon, j'ai rien dit !
Smiley lol

Il n'est pas nécessaire d'espérer pour entreprendre, ni de réussir pour persévérer.

^
Bison
#
Les regex... expreg.com
267 Posts
gordie a écrit :
Comment puis-je faire ?

Exemple
if(ctype_digit($code_postal) && strlen($code_postal)==4)


Benjamin Franklin a dit :
Tu me dis, j'oublie, tu m'enseignes, je me souviens, tu m'impliques, j'apprends.
Pour info... la prochaine édition de PHP5 Avancé === nouvelle regex.

^
GeorgesM
#
458 Posts
Bonjour.

On ne le dis pas assez souvent, mais les codes postaux européens sont normalisés:
Un code postal, en europe, est composé de deux lettres suivies d'un tiret, et de cinq chiffres.

Pour la france : fr-12345, l'allemagne de-65432, etc...

Une regex stricte donnerait :

/[a-zA-Z]{2}-[0-9]{5}/


Peut-être un selecteur de regex en, fonction du pays...

^
Bison
#
Les regex... expreg.com
267 Posts
GeorgesM a écrit :
On ne le dis pas assez souvent, mais les codes postaux européens sont normalisés:

Donnes le lien vers ces infos ?
Suis curieux de voir pour la Belgique ?
Modifié par Bison (11 Dec 2006 - 14:12)

Benjamin Franklin a dit :
Tu me dis, j'oublie, tu m'enseignes, je me souviens, tu m'impliques, j'apprends.
Pour info... la prochaine édition de PHP5 Avancé === nouvelle regex.

^
GeorgesM
#
458 Posts
Le lien:

http://www.iso.org/iso/fr/prods-services/iso3166ma/10faq/frequently-asked-questions.html#Q16


...Le texte...

a écrit :

16: Les codes ISO 3166-1 sont-ils utilisés dans l'adressage postal (sur les enveloppes, etc.) ?
R: Non. L'ISO 3166-1 n'est en général pas utilisé dans l'adressage postal tel que le connaît l'utilisateur courant, c'est-à-dire celui qui écrit l'adresse sur une lettre. (Toutefois, pour la communication au sein des organisations postales et entre elles, l'ISO 3166-1 est largement utilisé à différentes fins.) Les seuls pays au monde qui ont un accord officiel concernant l'inclusion d'un code du pays avant le code postal sont les membres de la Conférence Européenne des Administrations Postales et des Télécommunications (CEPT). Leur code ne coïncide avec l'ISO 3166-1 que dans un petit nombre de cas. Pour une information complète sur l'adressage postal, veuillez consulter les pages du site Web de L'Union Postale Universelle concernant les codes postaux.


Pourquoi, la Belgique ?
Modifié par GeorgesM (12 Dec 2006 - 22:24)

^
Bison
#
Les regex... expreg.com
267 Posts
GeorgesM a écrit :
Pourquoi, la Belgique ?

Parce qu'en la Belgique (ou au Luxembourg) un code postal n'a que 4 chiffres et pas 5.

La notation que j'utilise lorsque j'envoie un courrier à l'étranger c'est :
F-75000 pour la France par exemple
ou
L-1234 pour le Luxembourg
ou
NL-12.... pour la Hollande 4 chiffres (parfois 2 lettres)

bref, pas selon la norme que tu donnes Smiley ohwell

Benjamin Franklin a dit :
Tu me dis, j'oublie, tu m'enseignes, je me souviens, tu m'impliques, j'apprends.
Pour info... la prochaine édition de PHP5 Avancé === nouvelle regex.

^
Hubert Roksor
#
21 Posts
Pour info, ereg() va être déplacé vers PECL --et donc potentiellement désactivé par défaut-- dans PHP 6.0, et pareil pour ctype. (référence PHP Release Management Wiki)

Si vous voulez vérifier qu'une chaîne est exclusivement composée de 5 chiffre utilisez preg_match:
preg_match('#^[0-9]{5}$#', $cp)

Modifié par Hubert Roksor (15 Dec 2006 - 03:50)

^
QuentinC
#
Étudiant qui bosse ... ou pas
5461 Posts
Attention, les suisse non plus on ne fait pas dans la norme : 4 chiffres aussi chez nous

L'accessibilité, c'est aussi savoir rester simple et ne pas compliquer plus que nécessaire.
Luttons pour une utilisation saine, raisonnée et non abusive de javascript et d'AJAX.

^
GeorgesM
#
458 Posts
Bison a écrit :

...
bref, pas selon la norme que tu donnes Smiley ohwell


Désolé. J'étais persuadé que la norme était passée. J'utilisais ce format pour les correspondances internationales il y a quinze ans sur conseil de mes interlocuteurs allemands, qui faisaient de même.

De toute façon un code pays à une seul lettre, ça ne tient pas la route. Mais bon.

un code postal fait donc généralement entre 4 et 6 chiffres, éventuellement précédés par une lettre (majuscule) et un tiret, et éventuellement suivi d'un tiret et d'un suffixe de trois chiffres.
ex : etats-unis, brésil : 22162–101

^
Bison
#
Les regex... expreg.com
267 Posts
Hubert Roksor a écrit :
Pour info, ereg() va être déplacé vers PECL --et donc potentiellement désactivé par défaut-- dans PHP 6.0, et pareil pour ctype. (référence PHP Release Management Wiki)

Si vous voulez vérifier qu'une chaîne est exclusivement composée de 5 chiffre utilisez preg_match:
preg_match('#^[0-9]{5}$#', $cp)


Pour ereg, c'est une bonne chose car dépréciée depuis belle lurette.(fonction très lente et limitée)
Par contre en ce qui concerne ctype, je n'en vois pas l'intérêt au contraire Smiley ohwell

Benjamin Franklin a dit :
Tu me dis, j'oublie, tu m'enseignes, je me souviens, tu m'impliques, j'apprends.
Pour info... la prochaine édition de PHP5 Avancé === nouvelle regex.

^
dlagree
#
1 Posts
Famille code postal, le cousin Grand Breton :

Royaume-Uni : (voir Codes postaux britanniques) le (postcode) peut se présenter sous plusieurs formes : LC CLL, LLC CLL, LCC CLL, ou LLCC CLL avec encore d'autres variantes possibles. La première lettre indique la ville, la zone ou le quartier de Londres du correspondant.

Pour se cultiver sur le sujet, voici une adresse intéressante > http://fr.wikipedia.org/wiki/Code_postal

^