Expression regulière

Résolu
glodybiss Messages postés 509 Statut Membre -  
glodybiss Messages postés 509 Statut Membre -
Bonjour,

Je dois faire un système de matricule dans un formulaire que visiteur dois remplir, mais je n'en sais pas trop sur les expressions régulières.
Je m'explique, je dois faire en sorte qu'un membre s'enregistre dans la base des données qu'il puisse avoir son matricule à lui par exemple : BIG001, BIG002 ainsi de suite mais je ne sais pas quelle méthode utilisé pour éviter que l'utilisateur mette n'importe quoi du genre BLA001 au lieu du préfixe que j'ai prévu pour ma base des données (BIG).

Merci d'avance.


A voir également:

2 réponses

Bruce Willix Messages postés 13499 Statut Contributeur 2 594
 
Si ton matricule ne change pas (si c'est toujours BIG), tu définis le champ comme un champ numérique, et tu crées un masque d'encodage/d'affichage sous le format BIG000.

Tes users seront invités à choisir un matricule à six positions et avec trois chiffres, qui commencera toujours par BIG.
0
glodybiss Messages postés 509 Statut Membre 9
 
Bruce dans ce cas dans ma base des données je vais que la suite des chiffres et non le préfixe BIG ?
0
Bruce Willix Messages postés 13499 Statut Contributeur 2 594
 
Tu as oublié le verbe dans ta phrase, non ? Si tu pouvais expliquer ce que tu veux, j'en serais ravi :-)

Si tu utilises Access, ouvre la table en mode "Création", sélectionne ton champ et défini le comme nombre (entier éventuellement). En bas de la fenêtre, dans l'onglet "Général" la seconde propriété est le format. Tu écris "BIG"000 (guillemets compris) dans cette case.
0
glodybiss Messages postés 509 Statut Membre 9
 
Han! je te comprend maintenant mais dommage que j'utilise mysql et php.
0
Bruce Willix Messages postés 13499 Statut Contributeur 2 594
 
Ok, alors le format du champ se passe directement dans le code HTML. Dans les propriété du formalaire, utilises la balise "value"

<input type="text" name="time" value="BIG000" />


...et dans ton code php, tu mets une boucle de contrôle.

la syntaxe exacte dépend du code que tu as déjà écrit, mais l'esprit est celui là.
0
glodybiss Messages postés 509 Statut Membre 9
 
Ok, je vais essayé et je te donnerai la suite. Merci beaucoup.
0
Mihawk Messages postés 4753 Statut Contributeur 846
 
Hello,

Il faudrait faire une double vérification : Javascript et PHP.
Javascript : pour signaler de suite la faute à l'utilisateur.
PHP : parce que la vérification Javascript peut facilement être contournée.

Donc à la validation de ton formulaire, il faut que tu utilises la méthode onSubmit() (qui doit renvoyer true (formulaire exécuté ensuite) ou false (arrêt du traitement)). Dans cette méthode tu récupères ton champ et tu vérifie son format à l'aide d'une expression régulière (monchamp.match(ma regexp))

En PHP pareil avec la méthode preg_match().

Dans ton cas l'expression régulière serait : #^BIG\d{3}$#
Mihawk
"Tant qu'on ne fait pas, on ne sait pas."
0
glodybiss Messages postés 509 Statut Membre 9
 
Merci Mihawk, j'ai vite compris l'expression régulière mais pour faire le script en php avec cette expression je ne sais pas si je vais m'en sortir, bon que tu as dis "Tant qu'on ne fait pas, on ne sait pas". je vais essayé et je te donnerai la suite très bientôt. Merci une fois de plus.
0
Mihawk Messages postés 4753 Statut Contributeur 846
 
Sous PHP, c'est on ne peut plus simple :

<?php
   if (isset($_POST['monChamp']) && preg_match("#^BIG\d{3}$#", $_POST['monChamp'])){
      // On continue le traitement
   } else {
      // Cas ou le POST n'existe pas ou si le champ ne respecte pas le format
   }
?>
0
glodybiss Messages postés 509 Statut Membre 9
 
Merci infiniment Mihawk pour ton aide merci beaucoup.
0
Mihawk Messages postés 4753 Statut Contributeur 846
 
Tant mieux si tu as réussi :-)
Passe le sujet en résolu si c'est OK.
0
glodybiss Messages postés 509 Statut Membre 9
 
Oui, c'est réussi thanks encore.
0