Php: verifier qu'un formulaire est rempli

Fermé
D_d. - 16 juil. 2003 à 15:39
 Loony - 6 janv. 2013 à 19:52
Bonjour!
Je voudrais vérifier que le formulaire a été rempli au complet et sil nest pas rempli au complet un message saffiche pour avertir qu'il faut qu'il remplisse tout les champs... mais je n'ai vraiment aucune idée comment faire! j'essais toute sorte de chose, mais je n'y arrive pas.
Voici ce que j'ai comme code dans ma page:

<?php
if (($_POST["nom"])&&($_POST["mdp"])&&($_POST["userfile"])) {
$nom = $_POST["nom"];
$mdp = $_POST["mdp"];
$userfile = $_POST["userfile"];
/*
... code qui verifie si le mot de passe et lusager correspond, puis upload le fichier choisi
*/
} else {

}
?>
<html>
<head>
<title>Formulaire</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form name="form1" method="post" enctype="multipart/form-data" action="formulaire.php">
<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>
<?php
if ($_GET['error']) {
print 'vous devez remplir tous les champs svp';
}
?>
</body>
</html>

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???

Merci de m'aider! Je suis littéralement bloquer....

D_d.
A voir également:

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:

<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
21
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


<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)">
5
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
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
0
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!!!!)
4
/*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:

else
{
echo "Bonjour $nom";
}
?>


Eddy
0
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
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
4
Bonjour, après des heures a chercher aussi, je te donne la réponse.

Il faut juste changer :

onSubmit="valider_formulaire(this)"

en

onSubmit="return valider_formulaire(this)"

Je ne sais pas si elle te servira, mais peut être qu'elle servira a quelqu'un d'autre :)

cordialement,

Snakynette
0
ça m'a servi :-)

Merchi !
0

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
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 ^^
4
Salut comment adapter ce code pour les bouton Radio? car pour c est le bouton submit et pas le radio qui se colorient en rouge si je met ce code :/
0
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 &#42;<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 ) &#42;<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 &#42;<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 &#42;<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 &#42;<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 &#42;<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 &#42;<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 &#42;<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. &#42;<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 &#42;<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 &#42;<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>
3
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
2
khalil
2
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!!!
1
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()
1
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é!!!
1
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.
1
dans <form ..... action="(EST CE QUE JE LAISSE LADDRESSE 'fomulaire.php' LA?)" >
0
@omar :
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 :)
0
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?
0
ce que tu ma donne je le fous ou? au debut de la page?
0
Oui. En fait j'ai pas été complet, tu dois faire ca au debut de ta page:


/*Le code que je t'ai mis*/

else /*le else du if($empty && $flag)*/
{
/*Ta gestion normale du formulaire, la page que t'avais avant quoi*/
}


Eddy
0
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.

<?

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>
0
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.
0
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)
0
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
0
Anyway! merci beaucoup pour ton aide.... mais à la place je vais aller me chercher des tutoriels puis essayer de démêler tout ça... =^-^= mais merci quand meme!
-1