Ajouter une condition à un formulaire

Répondre
Mandes
le 27/10/2011 à 08:52
Mandes
Bonjour à tous,

Mon petit formulaire fonctionne très bien mais j'aimerai intégrer la fonction "strlen" dans mon code (je ne suis pas certain que ce soit la fonction idéale pour faire ce que je veux faire, à vous de me dire svp...). Cette fonction doit interdire l'envoi du formulaire si le visiteur n'a pas saisi 5 chiffres dans le champ "code postal" (genre "alert vous n'avez pas saisi 5 chiffres"). 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";

}

?>






-------------------------------------
CODE DE 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>
LupusMic
le 30/10/2011 à 17:03
LupusMic
La fonction strlen ne va que mesurer la longueur de la chaîne. Si tu veux inspecter un peu plus, tu as toute une palette d'outils te permettant de déterminer si l'utilisateur a correctement saisi les données que tu attends.

Tu as les fonctions filter_var, preg_match ou encore is_int.

Maintenant, il faut que la vérification ait une incidence sur le traitement des données et l'affichage. Dans le code que tu as fournit, tout ce que tu fais, c'est détercter si l'utilisateur a saisi le nombre de caractères attendus, et d'en informer l'utilisateur.

Je tiens à préciser que toutes les données soumises via un formulaire doivent être validées côté serveur. Le JavaScript, c'est pour améliorer l'expérience utilisateur. D'ailleurs, la Regex qui valide ton adresse e-mail est fausse.

Au fait, un code postal ce n'est pas forcément 5 caractères numériques. Même en France.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Mandes
le 30/10/2011 à 17:10
Mandes
Merci pour ta réponse, c'est sympa. Ce serait quoi par ex la bonne regex ? Et puis comment faire pour valider tout ce fourbi coté serveur ? Merci encore. Cdt, Mandes
LupusMic
le 30/10/2011 à 17:59
LupusMic
La regex qui valide pleinement la syntaxe d'une adresse est très complexe. Car les différentes RFC qui la définissent sont complexes. Fais un check minimal côté client, et utilise filter_var côté serveur.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Mandes
le 30/10/2011 à 18:31
Mandes
Merci mais... Pas compris grand chose... Y'a bien un script tout propre, tout fait quelque part, non ? ;-)
LupusMic
le 01/11/2011 à 00:39
LupusMic
Non, sinon on ne payerai pas à 500€/jour et ça ne recruterai pas à tour de bras des développeurs PHP dans tout les sens ;)
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours