Rechercher : dans
Par :

Php: verifier qu'un formulaire est rempli

Dernière réponse le 28 oct 2009 à 02:06:07 D_d., le 16 jui 2003 à 15:39:54 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « php: verifier qu'un formulaire est rempli » dans :
[PHP] Vérifier le domaine d'une adresse mail VoirDans une adresse email, on trouve deux parties: utilisateur@domaine La partie domaine définit un ensemble de machines associées dans lequel on trouvera généralement un serveur qui permet d'envoyer des mails. Dans ce domaine il y a des utilisateurs....
Vérifier le format d'une date en PHP VoirIl existe plusieurs méthodes pour verifier le format d'une date en PHP, vous pouvez par exemple découper la chaîne puis tester les valeurs de chaque élément. Plus simplement nous utiliserons les expressions régulières. Pour valider une date au...
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
Télécharger Atomic Mail Verifier VoirLa vérification de la validité d’une adresse email par les programmes spécialisés est souvent limitée à la vérification de l’adresse SMTP. Atomic Mail Verifier est un programme avancé dans la vérification des adresses mails non valides....
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...

1

eddy, le 16 jui 2003 à 15:45:34

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

Répondre à eddy

2

D_d., le 16 jui 2003 à 15:52:13

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

Répondre à D_d.

3

ludd, le 16 jui 2003 à 15:52:48
  • +4

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)">

Répondre à ludd

4

D_d., le 16 jui 2003 à 16:01:50

Dans <form ..... action="(EST CE QUE JE LAISSE LADDRESSE 'fomulaire.php' LA?)" >

Répondre à D_d.

5

omar, le 16 jui 2003 à 16:05:29

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()

Répondre à omar

6

D_d., le 16 jui 2003 à 16:05:57

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é!!!

Répondre à D_d.

7

ludd, le 16 jui 2003 à 16:26:28

@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 :)

Répondre à ludd

8

D_d., le 16 jui 2003 à 17:14:10

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?

Répondre à D_d.

9

Eddy, le 16 jui 2003 à 17:16:36
  • +1

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

Répondre à Eddy

10

D_d., le 16 jui 2003 à 17:21:20

Ce que tu ma donne je le fous ou? au debut de la page?

Répondre à D_d.

11

Eddy, le 16 jui 2003 à 17:25:03
  • +1

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

Répondre à Eddy

12

D_d., le 16 jui 2003 à 17:34:05

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!!!!)

Répondre à D_d.

15

eddy, le 16 jui 2003 à 17:42:19

/*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

Répondre à eddy

13

D_d., le 16 jui 2003 à 17:39:28

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!

Répondre à D_d.

14

ludd, le 16 jui 2003 à 17:41:42

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>

Répondre à ludd

16

D_d., le 16 jui 2003 à 17:56:54

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.

Répondre à D_d.

17

isa, le 8 oct 2003 à 14:38:14

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)

Répondre à isa

18

Jeanjean, le 24 jan 2007 à 09:33:09

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

Répondre à Jeanjean

19

vaas, le 28 jun 2007 à 15:28:06

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

Répondre à vaas

21

Snakynette, le 11 mai 2009 à 20:51:04

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

Répondre à Snakynette

20

a5tr0, le 2 mar 2009 à 06:02:57
  • +5

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>

Répondre à a5tr0

22

 eddy, le 28 oct 2009 à 02:06:07

Bonjour,


Je suis débutant et je n'arrive pas a faire fonctionner mon formulaire newsletter. Pouvez vous me donner un coup de main sur ce problème de premier choix.

Je ne reçois pas l' Email de confirmation

Pouvez-vous adapter <?php……?> avec <form>……</form>


Le lien de ma page: http://www.cijoint.fr/cjlink.php?file=cj200910/cijyw5NMrK.txt


<head>

<?php if($_POST['action'] == "formok")
{
$e_mail = $_POST['email'];
if($e_mail == ""|| $e_mail == "e-mail")
{
$txt = " votre e-mail";
}
else
{
$destinataire= "bwba@hotmail.fr";
$objet = "Demande d'inscription";
$headers = "From: bwba@hotmail.fr \n\r";
$headers.= "Content-Type: text/html; charset=utf-8";
$headers .= "MIME-Version: 1.0 ";
$msg = "Nous vous informons d'une demande d'inscription suivant : ". $e_mail ."";
$msg = nl2br($msg);
mail($destinataire, $objet, $msg, $headers);
$msg2= "
Nous avons bien pris en compte votre demande d'inscription ? la newsletter.
Pour vous d?sinscrire, contactez nous

";
mail($e_mail, $objet, $msg2, $headers);
$txt = "Vous avez un message";
}
}
?>
</head>





<style type="text/css">
body {
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size:60%;
margin:50px;
color:#666666;}
.fieldset {
width:300px;
border: 0px solid red;
}
.fieldset label {
text-align:right;
width:70px;
float:left;
padding:0.2em;
margin:0;
margin-top:0.3em;
}
.fieldset .nobr {display:none;} .fieldset .textfield {
margin:3px;
height:20px;
width:200px;
border:solid 1px #8caf10;
background: transparent url("http://") no-repeat;
}
.fieldset .textarea {
margin:3px;
height:165px;
width:200px;
border:solid 0 #fff;
}
.submit {
margin:3px;
height:20px;
border:solid 1px #8caf10;
width:80px;
font:1.1em Verdana, Arial, Helvetica, sans-serif;
color:#000000;
text-transform:uppercase;
background: transparent url("http://") no-repeat;
}
}
</style>




<body>

<form action="" method="post">
<fieldset class="fieldset"><br>
<span class="" style="direction: ltr; text-align: left;"><label
for="email"></label></span> <br class="nobr">
<input name="email" class="textfield" id="email"
type="text"> <span class=""
style="direction: ltr; text-align: left;"><br>
<span class="" style="direction: ltr; text-align: left;">
<br class="nobr">
<br>
<label for="submit"> </label><br
class="nobr">
<input name="submit" class="submit" id="submit"
value="envoyer" type="submit"></span></span></fieldset>
</form>

</body>

Répondre à eddy