Bonjour à tous,

Ma question est je pense plutôt simple mais je bloque complet...
Mon petit formulaire fonctionne très bien mais j'aimerai intégrer la fonction "strlen" dans mon code. Cette fonction doit interdire l'envoi du formulaire si le visiteur n'a pas saisi 5 chiffres dans le champ "code postal". J'ai trouvé le bout de code ci-dessous mais je ne vois pas comment l'intégrer... Merci pour vos conseils éclairés. Bonne journée à tous.

<?php 
if(strlen($codepostal) < 5)
{
  echo "Merci de saisir un code postal valide";
}
else
{
  echo "code postal valide";
}
?>



MON FORMULAIRE :

<script language="javascript" type="text/javascript"> 
function validation() 
{ 
	 	
        var nom = document.formulaire.nom.value; 
        if (nom.search(/^[_a-z0-9-]+(.[_a-z0-9-]+)*[^._-]@[a-z0-9-]+(.[a-z0-9]{2,4})*$/) == -1)
        { 
            alert ('Saisissez une adresse email valide svp. Merci.'); 
            document.formulaire.nom.focus(); 
            return false; 
        } 
       	if(document.formulaire.codepostal.value == "") 
		{ 
        alert ('Saisissez un code postal valide svp. Merci.'); 
        document.formulaire.codepostal.focus(); 
        return false; 
    	}			
 
else {return true;}
}
</script> 

<script language="javascript"> 
function filter_numeric(param_field) 
{ 
  var s = param_field.value; 
  var lg = s.length; 
  if (lg < 1) 
     return true; 
  var lastchar = s.charAt(lg - 1); 
  if (lastchar < "0" || lastchar > "9" ) { 
     alert("Saisissez un code postal valide svp. Merci." ); 
     param_field.value = s.substring(0, lg - 1); 
     param_field.focus();  
     return false; 
  } 
  return true; 
} 
</script>

<form action="add.php" method="post" name="formulaire" onsubmit="return validation();"> 

<input id="nom" 
       name="nom" 
       type="text" 
       value="">

<input id="codepostal" 
       name="code postal" 
       type="text" 
       value=""
       onKeyUp="javascript:filter_numeric(this);"
       maxlength="5">

<input type="image" class="lettrine" alt="Envoyer" width="41" height="17" src="bouton.png">

</form>
strlen étant en php cela ne s'exécutera qu'une fois le formulaire reçu puisque interprété côté serveur. si tu souhaite faire le test avant l'envoi il faut donc le faire en javascript. tu peut par exemple utiliser une expression régulière ou la fonction isNumeric pour vérifier qu'il s'agit d'un nombre et tout bonnement un length de ton element de formulaire pour connaître la taille.
Modifié par Ripper51 (26 Oct 2011 - 17:25)
Salut,

Après avoir fait pas mal de recherches sur is numeric et lenght je ne trouve rien que je puisse associer à mon script pour que cela fonctionne... Je désespère un peu mais bon... Merci quand même.
Salut,

Si tu veux faire la vérification en PHP, utilise plutôt un preg_match, ça te permettra de vérifier que la personne rentre bien cinq chiffres. Une rapide recherche sur Google te donne des codes tout fait pour ça.

La fonction strlen te donnera juste la longueur de la chaîne de caractères, donc si elle rentre XXXXX, ça sera validé.
Modifié par LeMuTaLisKFoU (27 Oct 2011 - 10:40)
Rhalala j'enrage... j'ai essayé :

if (preg_match('`[0-9]{5}`',$document.formulaire.codepostal))
{ 
            alert ('Saisissez un code postal valide svp. Merci.'); 
            document.formulaire.codepostal.focus(); 
            return false; 
        } 


je l'ai placé immédiatement après :

alert ('Saisissez un code postal valide svp. Merci.'); 

        document.formulaire.codepostal.focus(); 

        return false; 

    	}


Mais rien n'y fait... Smiley bawling
Modifié par Mandes (27 Oct 2011 - 11:55)
Je voudrai faire ça en javascript... J'ai suivi ton lien... Mais pas simple... Je suis paumé de chez paumé... Merci à toi.
si je suis ton raisonnement :

pour obtenir le nombre de caractères saisis
var nb_caracteres = document.formulaire.codepostal.lenght

pour savoir s'il s'agit d'un numérique ou non
isNumeric(document.formulaire.codepostal.value) va alors retourner true ou false suivant les données saisies.
Merci pour ton aide mais je voudrai simplement rajouter une alerte javascript en cas de saisie de moins de 5 caractères sur "codepostal". J'ai déjà une fonction en place qui vérifie s'il s'agit ou non d'un numérique. Voili voilou, pas simple cette histoire... Je fini par me demander si c'est possible...
Modifié par Mandes (27 Oct 2011 - 17:06)