A voir également:
- Vérifier les champs d'un formulaire php
- Alert php ✓ - Forum PHP
- Verifier un lien - Guide
- Formulaire de réclamation facebook - Guide
- Alias du formulaire - Forum Programmation
- Header php - Astuces et Solutions
20 réponses
Une autre idée me vient à l'esprit (vu que tu as dit qu'on pouvait faire la verif en asp):
1) Tu remets la meme page en "action" de ton formulaire:
2) Tu rajoutes un champ hidden à ton formulaire pour savoir si il a déja été validé une fois:
3) Tu fais une test en php
Voila, ca t'evite le javascript qui, il faut l'admettre n'est pas tres fiable (il suffit de recopier ta page en enlevant le javascript pour pouvoir faire un submit avec un champ vide...).
Remarque: J'ai utilisé $champ1, $flag etc... par flemme et par habitude mais sur certains serveurs apache (le serveur qui fait marcher le php, comme IIS pour asp) il faut utiliser:
1) Tu remets la meme page en "action" de ton formulaire:
<form ..... action="formulaire.php">
2) Tu rajoutes un champ hidden à ton formulaire pour savoir si il a déja été validé une fois:
<input type="hidden" name="flag" value="1">
3) Tu fais une test en php
/* On met $empty à 1 si un champ est vide*/
if($champ1="" || champ2="" || ...)
$empty=1;
/* Si un champ est vide et qu'on a deja envoye le formulaire, afficher une erreur */
if ($flag && $empty)
echo("<b>Veuillez remplir tous les champs</b>");
Voila, ca t'evite le javascript qui, il faut l'admettre n'est pas tres fiable (il suffit de recopier ta page en enlevant le javascript pour pouvoir faire un submit avec un champ vide...).
Remarque: J'ai utilisé $champ1, $flag etc... par flemme et par habitude mais sur certains serveurs apache (le serveur qui fait marcher le php, comme IIS pour asp) il faut utiliser:
$_POST($flag)si t'es en post,$_GET($flag)si t'es en get.
Te décourage pas,
Eddy
voila une ptite fonction javascript qui devrait résoudre ton soucis
elle est construite a partir d'un ptit script dont tu trouvera toutes les infos sur http://myphpzone.free.fr
Rajouter dans ton form l'event
elle est construite a partir d'un ptit script dont tu trouvera toutes les infos sur http://myphpzone.free.fr
<script language='JavaScript'>
valider_formulaire(thisForm)
{
if(thisForm.usager.value == '')
{
alert('Le champ usager doit être rempli');
thisForm.usager.focus();
return false;
}
if(thisForm.mdp.value == '')
{
alert('Le champ mdp doit être rempli');
thisForm.mdp.focus();
return false;
}
return true;
}
</script>
Rajouter dans ton form l'event
<FORM .....onSubmit="valider_formulaire(this)">
olfajabri
Messages postés
1
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
21 février 2012
21 févr. 2012 à 11:23
21 févr. 2012 à 11:23
bonjour ,
voici
le code que j'essaye
<html>
<head>
<script language='JavaScript'>
valider_formulaire(thisForm)
{
if(thisForm.usager.value == '')
{
alert('Le champ usager doit être rempli');
thisForm.usager.focus();
return false;
}
if(thisForm.mdp.value == '')
{
alert('Le champ mdp doit être rempli');
thisForm.mdp.focus();
return false;
}
return true;
}
</script>
</head>
<body>
<form action="admin.php" onSubmit="valider_formulaire(this)">
<p>Nom d'usager :
<input name="usager" type="text" id="usager" size="30">
<br>
Mot de passe :
<input name="mdp" type="text" id="mdp" size="30">
</p>
Envoyer ce fichier :
<input name="userfile" type="file" value="">
<p>
<input name="connecter" type="submit" id="connecter" value="Se connecter">
</p>
</form>
</body>
</html>
mais rien se passe càd lorsque si je ne remplis pas l'un de deux champs ,alors la page admin.php s'affiche
voici
le code que j'essaye
<html>
<head>
<script language='JavaScript'>
valider_formulaire(thisForm)
{
if(thisForm.usager.value == '')
{
alert('Le champ usager doit être rempli');
thisForm.usager.focus();
return false;
}
if(thisForm.mdp.value == '')
{
alert('Le champ mdp doit être rempli');
thisForm.mdp.focus();
return false;
}
return true;
}
</script>
</head>
<body>
<form action="admin.php" onSubmit="valider_formulaire(this)">
<p>Nom d'usager :
<input name="usager" type="text" id="usager" size="30">
<br>
Mot de passe :
<input name="mdp" type="text" id="mdp" size="30">
</p>
Envoyer ce fichier :
<input name="userfile" type="file" value="">
<p>
<input name="connecter" type="submit" id="connecter" value="Se connecter">
</p>
</form>
</body>
</html>
mais rien se passe càd lorsque si je ne remplis pas l'un de deux champs ,alors la page admin.php s'affiche
MARCHE PAS!!! ARGH!!!! (me pette la tete contre le mur)
dans le : /*Ta gestion normale du formulaire, la page que t'avais avant quoi*/
a cette endroit je mets un echo du formulaire?
(chuis poche, ca va mal!!!!)
dans le : /*Ta gestion normale du formulaire, la page que t'avais avant quoi*/
a cette endroit je mets un echo du formulaire?
(chuis poche, ca va mal!!!!)
/*Ta gestion normale du formulaire, la page que t'avais avant quoi*/
a cette endroit je mets un echo du formulaire?
Non car ce cas correspond au cas ou l'utilisateur a correctement rempli le formulaire donc ici tu mets le code qui exploite le formulaire. Par exemple si t'as recupere le nom de l'utilisateur et que tu l'as mis dans la variable nom tu peux mettre:
Eddy
a cette endroit je mets un echo du formulaire?
Non car ce cas correspond au cas ou l'utilisateur a correctement rempli le formulaire donc ici tu mets le code qui exploite le formulaire. Par exemple si t'as recupere le nom de l'utilisateur et que tu l'as mis dans la variable nom tu peux mettre:
else
{
echo "Bonjour $nom";
}
?>
Eddy
vaas
Messages postés
2
Date d'inscription
samedi 5 février 2005
Statut
Membre
Dernière intervention
28 juin 2007
4
28 juin 2007 à 15:28
28 juin 2007 à 15:28
Salut à tous.
Le code que Ludd à déposer est correct et fonctionne bien par contre il nous envoi au code php même si le message d'alerte est affiché.
comment faire pour rester sur la page et aussi garder les informations déjà entrées?
Merci
Le code que Ludd à déposer est correct et fonctionne bien par contre il nous envoi au code php même si le message d'alerte est affiché.
comment faire pour rester sur la page et aussi garder les informations déjà entrées?
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
xloadx
Messages postés
28
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
10 septembre 2011
7
14 nov. 2009 à 16:39
14 nov. 2009 à 16:39
Bon voilà un bon petit script (JAVASCRIPT) qui pourra servir à d'autres:
1 - intégrez dans le formulaire l'argument onSubmit='valid_form(this)'
2 - Ajouter le script suivant:
<script>
function valid_form(thisForm)
{
for(i=0;i<=(thisForm.length)-1;i++)
{
if(thisForm[i].value == '')
{
thisForm[i].style.background='red';
thisForm[i].focus();
return false;
}
else
{
thisForm[i].style.background='white';
}
}
return true;
}
</script>
Petite erreur corrigée, le script est valide ^^
1 - intégrez dans le formulaire l'argument onSubmit='valid_form(this)'
2 - Ajouter le script suivant:
<script>
function valid_form(thisForm)
{
for(i=0;i<=(thisForm.length)-1;i++)
{
if(thisForm[i].value == '')
{
thisForm[i].style.background='red';
thisForm[i].focus();
return false;
}
else
{
thisForm[i].style.background='white';
}
}
return true;
}
</script>
Petite erreur corrigée, le script est valide ^^
voici un Bout de code qui contient un form qui est valider et soumis seulement si la fonction soumForm renvoie true.
<script> /*------------------------------------------------- validerInputTxt valider le texte contenu dans l'input de l'appelant parametre appelant : celui qui appele la méthode ( this de l'élement ) retour : vrai si valide sinon faux ---------------------------------------------------*/ function validerInputTxt( Appelant ){ var expReguliere = new RegExp( Appelant.getAttribute( "exp" ) ); if( expReguliere.test( Appelant.value ) ) { Appelant.style.background = "url( image/okSign.gif ) no-repeat right center "; return true; } Appelant.style.background = "url( image/errorSign.gif ) no-repeat right center "; return false; } /*------------------------------------------------- validerConfMotPasse valider le texte contenu dans l'input de confirmation de mot de passe de l'appelant parametre appelant : celui qui appele la méthode ( this de l'élement ) retour : vrai si valide sinon faux ---------------------------------------------------*/ function validerConfMotPasse( Appelant ){ if(document.getElementById("idMotpasse").value == Appelant.value ){ Appelant.style.background = "url( image/okSign.gif ) no-repeat right center "; return true; } Appelant.style.background = "url( image/errorSign.gif ) no-repeat right center "; return false; } /*------------------------------------------------- soumForm valider tous les champs du formulaire d'inscription parametre appelant : celui qui appele la méthode ( this de l'élement ) retour : vrai si valide sinon faux ---------------------------------------------------*/ function soumForm( Appelant ){ var expReguliere = new RegExp( document.getElementById("idNom").getAttribute("exp") ); var tabInput = Appelant.getElementsByTagName( "input" ); for(var i =0 ; i < tab.length ; i ++){ // SI c'est un input qui a un id ET cette id n'est PAS idConfirmmotpasse ET le texte de l'input est PAS valide if(document.getElementById( tab[i].id ) != "" && document.getElementById( tab[i].id )!= "idConfirmmotpasse" && ! validerInputTxt( document.getElementById( tab[i].id ) ) ){ alert(" Le champ : "+tab[i].name+" est invalide." ); return false; // SINON SI c'est l'input de confirmation de mot de passe ET que le mot de passe est PAS valide }else if(document.getElementById( tab[i].id ) == "idConfirmmotpasse" && validerConfMotPasse( document.getElementById( tab[i].id ) ) ){ alert(" Le champ : "+tab[i].name+" est invalide." ); return false; } }// fin for return true; }</script> <form action="index.php?bla" method="get" id="formInscription" onsubmit="return soumForm(this)"> <h3>Informations membres</h3> <fieldset> <label class="field-nomutilisateur">Nom d'utilisateur *<input id="idNomutilisateur" type="text" name="nom utilisateur" maxlength="48" value="" onblur="validerInputTxt(this);" exp="^(\w+|\w+[\-]*\w+)$" /></label> <label class="field-motpasse">Mot de passe ( 8 caractères ) *<input id="idMotpasse" type="password" name="mot passe" maxlength="8" value="" onblur="validerInputTxt(this);" exp="^\w{8}$" /></label> </fieldset> <label class="field-motpasse">Confirmer votre mot de passe *<input id="idConfirmmotpasse" type="password" name="Confirmer votre mot de passe" maxlength="8" value="" onblur="validerConfMotPasse(this);" /></label> <h3>Informations personnelles</h3> <fieldset> <label class="field-prenom">Prénom *<input id="idPrenom" type="text" name="prenom" maxlength="74" value="" onblur="validerInputTxt(this);" exp="^(\w+|\w+[\w*\s*[\-]*\w*]*)$" /></label> <label class="field-nom">Nom *<input id="idNom" type="text" name="nom" maxlength="74" value="<?php if(isset($_GET["nom"])){echo($_GET["nom"]);}?>" onblur="validerInputTxt(this);" exp="^(\w+|\w+[\w*\s*[\-]*\w*]*)$" /></label> <label class="field-noCivique">Adresse *<input id="idNoCivique" type="text" name="noCivique" maxlength="24" value="" onblur="validerInputTxt(this);" exp="^[1-9](\d*|\d*[\-]?\w*)$" /></label> <label class="field-rue">Rue *<input id="idRue" type="text" name="rue" maxlength="99" value="" onblur="validerInputTxt(this);" exp="^(\w+|\w+[\w*\s*[\-]*\w*]*)$" /></label> <label class="field-ville">Ville *<input id="idVille" type="text" name="ville" maxlength="99" value="" onblur="validerInputTxt(this);" exp="^(\w+|\w+[\w*\s*[\-]*\w*]*)$"/></label> <label class="field-province">Prov. *<select id="idProvince" name="province"> <option value="Alberta" >AB</option> <option value="Colombie-Britannique" >BC</option> <option value="Manitoba" >MB</option> <option value="Nouveau-Brunswick" >NB</option> <option value="Terre-Neuve-et-Labrador" >NL</option> <option value="Territoires du Nord-Ouest" >NT</option> <option value="Nouvelle-Écosse" >NS</option> <option value="Nunavut" >NU</option> <option value="Ontario" >ON</option> <option value="Île-du-Prince-Édouard" >PE</option> <option value="Québec" selected="selected">QC</option> <option value="Saskatchewan" >SK</option> <option value="Yukon" >YT</option> </select></label> <label class="field-codePostal">Code postal *<input id="idCodePostal" type="text" name="codePostal" maxlength="7" value="" onblur="validerInputTxt(this);" exp="^([^\d\W_])\d([^\d\W_])[ ]?\d([^\d\W_])\d$" /></label><br style="clear: left;" /> <label class="field-email">Courriel *<input id="idCourriel" type="text" name="courriel" maxlength="99" value="" onblur="validerInputTxt(this);" exp="^([a-zA-Z0-9]+(([\.\-\_]?[a-zA-Z0-9]+)+)?)\@(([a-zA-Z0-9]+[\.\-\_])+[a-zA-Z]{2,4})$" /></label> <label class="field-phone">Téléphone<input id="idPhone" type="text" name="phone" maxlength="20" value="" onblur="validerInputTxt(this);" exp="^(\d{3}[\. -]?){2}\d{4}$" /></label> </fieldset> <fieldset> <label>Cliquez soumetre !</label> <input id="idBtnSubm" type="submit" name="submit" value="Soumettre" /> <input type="hidden" value="inscription" name="onglet" /> <input type="hidden" name="submitted" value="TRUE" /> </fieldset> </form>
Salut,
note: je crée mes page dans dreamweaver. Si j'affiche cette page, rien ne se passe! le formulaire ne s'affiche pas! la page reste blanch et je ne sais meme pas si elle est télécharger vraiment! Y a-t-il un moyen de savoir ou peut etre nos erreurs???
Desole si ca te parait evident mais ta page est elle sur une machine disposant d'un serveur apache? Si ce n'est pas le cas, ton code php ne pourra pas etre exécuté.
Sinon il me semble que (comme 99% des utilisateurs de php au début;), tu confonds le coté serveur et le coté client: si tu veux tester que les champs sont remplis, tu dois le faire juste avant l'envoi du formulaire. Or a cet instant la page est deja chargée chez l'utilisateur, donc le test ne peut se faire que coté client (la meilleure solution est donc sans doute un javascript).
Eddy
note: je crée mes page dans dreamweaver. Si j'affiche cette page, rien ne se passe! le formulaire ne s'affiche pas! la page reste blanch et je ne sais meme pas si elle est télécharger vraiment! Y a-t-il un moyen de savoir ou peut etre nos erreurs???
Desole si ca te parait evident mais ta page est elle sur une machine disposant d'un serveur apache? Si ce n'est pas le cas, ton code php ne pourra pas etre exécuté.
Sinon il me semble que (comme 99% des utilisateurs de php au début;), tu confonds le coté serveur et le coté client: si tu veux tester que les champs sont remplis, tu dois le faire juste avant l'envoi du formulaire. Or a cet instant la page est deja chargée chez l'utilisateur, donc le test ne peut se faire que coté client (la meilleure solution est donc sans doute un javascript).
Eddy
Ecoute je commence a faire du php alors je comprend pas trop encore toute la logique derrière tout ça... j'ai appris l'asp alors je suis un peu melangée...
donc ma question est vraiment stupide: c quoi un serveur apache!!!!
hum... jme sens vraiment épais.... '-_-
l'affaire c'est que en asp on peut verifier si les champs des formulaires sont vide alors jme suis dis que en php aussi on pouvait! merde, jhais le javascript!!!
donc ma question est vraiment stupide: c quoi un serveur apache!!!!
hum... jme sens vraiment épais.... '-_-
l'affaire c'est que en asp on peut verifier si les champs des formulaires sont vide alors jme suis dis que en php aussi on pouvait! merde, jhais le javascript!!!
Ton script me semble imcpmplet que se passe t-il dans le cas ou tt est renseigné (les champs) il manque un
//envoie le formulairee
else thisForm.submit()
//envoie le formulairee
else thisForm.submit()
lorsque le bouton est clicker est-ce que la page se reload?
ok maintenant je peux savoir par true ou false si mes formulaires sont rempli.... qu'est-ce que je fais maintenant avec cette valeur? Je veux verifier dans ma base de donner pour voir si tout les donner dans le formulaire sont bon.
bordel je suis découragé!!!
ok maintenant je peux savoir par true ou false si mes formulaires sont rempli.... qu'est-ce que je fais maintenant avec cette valeur? Je veux verifier dans ma base de donner pour voir si tout les donner dans le formulaire sont bon.
bordel je suis découragé!!!
Le problème du script JavaScript est que l'on peut le désactiver.
Cela ne pose pas trop de problème au niveau de l'utilisateur mais cela ouvre des failles de sécuritées au niveau de ton code si tu ne fais pas une deuxième vérification avec php.
Cela ne pose pas trop de problème au niveau de l'utilisateur mais cela ouvre des failles de sécuritées au niveau de ton code si tu ne fais pas une deuxième vérification avec php.
@omar :
l'évent onSubmit intercepte la validation du formulaire. Si tu retourne true il poursuit. Si tu retourne false il ne valide pas le formulaire.
@D_d :
Soit la fonction retourne true et ta page est reloader à toi de faire ton traitement dans l'intervalle. ta vérif bdd koi ^^
Soit elle te retourne false dans ce cas ta page est pas chargée et cela t'affiche un message.
Test tu verras par toi-même, c'est easy à mettre en place :)
onSubmit="valider_formulaire(this)">
l'évent onSubmit intercepte la validation du formulaire. Si tu retourne true il poursuit. Si tu retourne false il ne valide pas le formulaire.
@D_d :
Soit la fonction retourne true et ta page est reloader à toi de faire ton traitement dans l'intervalle. ta vérif bdd koi ^^
Soit elle te retourne false dans ce cas ta page est pas chargée et cela t'affiche un message.
Test tu verras par toi-même, c'est easy à mettre en place :)
le script ne fonctionne pas.... meme si la valeur est a false il va a la page designer dans l'action dans le form! y a-til un genre de de ligne de code en javascript qui redirecte la page?
ce que tu ma donne je le fous ou? au debut de la page?
voila ton script au complet avec la solution que je te proposai.
fais un copier coller de l'ensemble et mets le dans un fichier. tu n'as plus qu'a tester.
fais un copier coller de l'ensemble et mets le dans un fichier. tu n'as plus qu'a tester.
<?
if( isset($_POST) && $_POST["connecter"] == "Se connecter" ) {
$nom = $_POST["usager"];
$mdp = $_POST["mdp"];
}
//... code qui verifie si le mot de passe et lusager correspond, puis upload le fichier choisi
?>
<html>
<head>
<title>Formulaire</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<SCRIPT language='JavaScript'>
function valider_formulaire(thisForm){
if(thisForm.usager.value == ''){
alert('Le champ usager doit être rempli');
thisForm.usager.focus();
return false;
}
if(thisForm.mdp.value == '') {
alert('Le champ mdp doit être rempli');
thisForm.mdp.focus();
return false;
}
return true;
}
</SCRIPT>
</head>
<body>
<form name="form1" method="post" enctype="multipart/form-data" action="formulaire.php" onSubmit="valider_formulaire(this)">
<p>Nom d'usager :
<input name="usager" type="text" id="usager" size="30">
<br>
Mot de passe :
<input name="mdp" type="text" id="mdp" size="30">
</p>
Envoyer ce fichier :
<input name="userfile" type="file" value="">
<p>
<input name="connecter" type="submit" id="connecter" value="Se connecter">
</p>
</form>
</body>
</html>
J'ai trouver un tutoriel qui ressemble assez a ta solution (ya juste un couple de difference minime) et ca marche!!! MERCI MERCI MERCI!!!! :D au moins un problement de régler!
hop! j'arrête de t'achaler! =^-^=
D_d.
hop! j'arrête de t'achaler! =^-^=
D_d.
bonjour
comment fait on pour conserver les champs déjà complétés lorqu'il est signalé qu'un champ n'est pas rempli ? (avec ce code)
comment fait on pour conserver les champs déjà complétés lorqu'il est signalé qu'un champ n'est pas rempli ? (avec ce code)
Avant le script de vérification du formulaire tu déclare des variables qui seront les valeurs par défaut de chaque champs du formulaire.
P.ex. : un formulaire avec 2 champs : nom et prénom.
Au tout début de la page/du code tu déclare deux variables vides :
<?php
$nom_value = '';
$prenom_value = "";
?>
Plus loin tu place ce code qui, lors de rechargement de la page, teste si un formulaire a été envoyé et attribue les valeurs aux variables :
if ($_POST['nom'])
{
$nom_value = $_POST['nom'];
} /* idem pour ]_POST['prenom'];
Plus loin encore, dans le formulaire, tu attribue comme valeur à tes inputs les valeurs qui seront donc soit vide (par défaut) ou contenant les valeurs du formulaire :
echo '<input type="text" name="nom" value="'.$nom_value.'">
Charles "Jeanjean", webmaster débutant
P.ex. : un formulaire avec 2 champs : nom et prénom.
Au tout début de la page/du code tu déclare deux variables vides :
<?php
$nom_value = '';
$prenom_value = "";
?>
Plus loin tu place ce code qui, lors de rechargement de la page, teste si un formulaire a été envoyé et attribue les valeurs aux variables :
if ($_POST['nom'])
{
$nom_value = $_POST['nom'];
} /* idem pour ]_POST['prenom'];
Plus loin encore, dans le formulaire, tu attribue comme valeur à tes inputs les valeurs qui seront donc soit vide (par défaut) ou contenant les valeurs du formulaire :
echo '<input type="text" name="nom" value="'.$nom_value.'">
Charles "Jeanjean", webmaster débutant