Problème vérification format champ

Xtream -  
 Shad69 -
Bonjour,

Je viens vous demander votre aide, ayant quelques problèmes dans mon formulaire.

1. D'abord, j'ai fais une liste de sélection de plusieurs pays. Or, cette liste est très longue !

Je ne me vois pas faire :

if(eregi("pays",$champ))
{
if(!ereg("(France|Espagne|Italie|Grèce|Allemagne|Lituanie|Turquie|Finlande|...|...)",$valeur))
{
$errors[]="$valeur n'est pas un pays valide.";
}
}
... pour 50 pays ! Auriez-vous une solution svp ?

2. Ensuite, l'internaute doit rentrer sa date de naissance. J'ai testé le code suivant, en indiquant une date invalide, mais après génération du script, il ne m'indique aucune erreur ! Je ne comprends pas....

if(eregi("dateNaissance",$champ))
{
if(!ereg("^([0-9]{2})/([0-9]{2})/([0-9]{4})$",$valeur, $date) and checkdate( $date[2], $date[1], $date[3] ) and $date[3] >= 1900)
{
$errors[] = "$valeur n'est pas une date valide.";
}
}

Exemple : dateNaissance = 53-487198.
resultat = RIEN !

3. Enfin, j'ai fait exactement le même test que précédemment, mais cette fois si avec le champ "prenom" et le champ "nom", en indiquant un prénom et un nom invalides. Après génération, PHP m'indique bien une erreur au niveau du prénom, mais pas au niveau du nom ! Voici mon code :

if(eregi("prenom",$champ) and eregi("nom",$champ))
{
if (!ereg("^[A-Za-z' -]{1,50}$",$valeur))
{
$errors[] = "$valeur n'est pas valide.";
}
}

Exemple : - prenom = Mathilde95'(*
resultat = Mathilde95'(* n'est pas valide.
- nom = Durant78- _£
resultat = RIEN !

Je vous remercie d'avance pour les réponses que vous m'apporterez.
A voir également:

6 réponses

NookZ Messages postés 2376 Statut Membre 514
 
1/Soit vous avez votre liste en base dans quel cas vous faites une requête, soit vous stocké votre liste dans un tableau et vous faites un http://www.manuelphp.com/php/function.array-search.php

2/Voici la bonne expression je pense, j'ai testé avec
http://www.annuaire-info.com/outil-referencement/expression-reguliere/
^([0-9]{2})(\/)([0-9]{2})(\/)([0-9]{4})$
0
D_AmOn
 
Merci pour votre réponse, je vais tester votre code.
0
Shad69
 
Je souhaite utiliser la fonction array search, mais je ne vois pas comment faire, une fois mon array établie...

$nomPays = array(1=> "France (Metropole)",
"France (Dom-Tom)",
"Algerie",
"Andorre",
"Belgique",
"Benin",
"Burkina Faso",
"Burundi",
"Cambodge",
"Cameroun",
"Canada"
"Centrafrique",
"Comores",
"Congo (Brazzaville)",
"Congo (Kinshasa)",
"Cote d'Ivoire",
"Djibouti",
"Gabon",
"Guinee (Conakry)",
"Guinee (Equatoriale)",
"Haiti",
"Laos",
"Liban");

Je pense faire ceci :

if(!array_search('$nomPays', $pays))
{
return 'paysfalse';
}
else
{
return 'ok';
}

Pourriez-vous m'éclaircir svp ?
0
NookZ Messages postés 2376 Statut Membre 514
 
Je pense que vous avez fait une erreur sur l'ordre des paramètres. Vous devez avoir en premier l'élément recherché et en deuxième la variable contenant le tableau.
0
Shad69
 
donc plutôt ça ?

if(!array_search(' ', $nompays))
{
return 'paysfalse';
}
else
{
return 'ok';
}

Par contre, je ne vois pas exactement quoi mettre pour l'élément recherché. En effet, c'est l'internaute qui choisira son pays, je ne le connais pas.
0
NookZ Messages postés 2376 Statut Membre 514
 
ben si l'internaute choisit son pays, c'est soit une variable de session soit une variuable postée en $_POST ou $_GET
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Shad69
 
Oki je vais tester tout ça.
0
Shad69
 
Désolé de ne répondre que maintenant, j'étais parti en vacances !!

J'ai réussi a réglé mon problème, je te remercie pour tes réponses !
0