Problème vérification format champ

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.
Configuration: Windows XP
Firefox 3.0.10

6 réponses

  1. Merci pour votre réponse, je vais tester votre code.
    0
    1. 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
      1. 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
    2. 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
      1. ben si l'internaute choisit son pays, c'est soit une variable de session soit une variuable postée en $_POST ou $_GET
        0
    3. Oki je vais tester tout ça.
      0
      1. 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