Je recheche un script pour champ obligatoire

PIx Wilz Messages postés 667 Statut Membre -  
Alain_42 Messages postés 5413 Statut Membre -
Bonjour,

Voila , je recherche un script qui vérifie si les champs sont bien remplis et non pas vide.
J'ai trouvé du java mais je prefere que ce soit du php .
Merci
A voir également:

11 réponses

mouf13 Messages postés 146 Statut Membre 17
 
les 2 fonctions nécessaires sont isset et empty

si le champs n'existe pas ou qu'il est vide on stop l'execution du script

if(!isset($monchamp) || empty($monchamp)) {
return false;
}

tu peux aussi faire une redirection avec un header et un code erreur que tu pourra interpreter sur ton formulaire.

header('location:monformulaire.php?error=1');

et sur ton form

if(isset($_REQUEST['error']) && !empty($_REQUEST['error'])) {
echo 'il y a une erreur';
}
0
PIx Wilz Messages postés 667 Statut Membre 91
 
Il m'envoie pas d'erreur pourtant j'ai laisse un champ vide , voici mon script :

index.html :
<html>
<head>
<form name="formulaire" method="POST" action="mail.php">
<table>
<tr>
<td>Nom:<td/>
<td><input type="text" name="nom"><td/>
</tr>
<tr>
<td>Prénom:<td/>
<td><input type="text" name="prenom"><td/>
</tr>
<tr>
<td>Commentaire:<td/>
<td><TEXTAREA name="com"></TEXTAREA><td/>
</tr>
</table>
<input type="submit" value="Valider" onClick="ControleVide()">

</form>
</body>
</html>

mail.php :
<?php
if(!isset($nom) || empty($nom)) {
return false;
}
header('location:index.php?error=1');
if(isset($_REQUEST['error']) && !empty($_REQUEST['error'])) {
echo 'il y a une erreur';

$n = $_POST['nom'];
$p = $_POST['prenom'];
$c = $_POST['com'];
mail("mon_adresse","Nouveau commentaire","Nom: $n\nPrénom: $p\nCommentaire: $c");

?>
0
mouf13 Messages postés 146 Statut Membre 17
 
oula :)

1.
if(!isset($nom) || empty($nom)) {
return false;
}

A quel moment la variable $nom est déclarée ? a priori nulpart.
$_REQUEST['nom'] devrait mieux fonctionner...

2. le header n'est pas au bon endroit il ne doit etre appelé que si la condition est respecté à savoir soit un champs vide soit un champs inexistant

3.
if(isset($_REQUEST['error']) && !empty($_REQUEST['error'])) {
echo 'il y a une erreur';
accolade non fermé + morceau de code pas sur la bonne page...

4. essaies de comprendre ce que tu codes...
0
Alain_42 Messages postés 5413 Statut Membre 894
 
index.html :  que tu dois renommer en index.php
<html>
<head>
<form name="formulaire" method="POST" action="mail.php">
<table>
<tr>
<td>Nom:<td/>
<td><input type="text" name="nom"><td/>
</tr>
<tr>
<td>Prénom:<td/>
<td><input type="text" name="prenom"><td/>
</tr>
<tr>
<td>Commentaire:<td/>
<td><TEXTAREA name="com"></TEXTAREA><td/>
</tr>
</table>
<input type="submit" value="Valider" onClick="ControleVide()">
<?php
//message d'erreur eventuel
if(isset($_GET['error']) && !empty($_GET['error'])) {
echo '<font clor="red">Vous devez remplir tous les champs</font>'; 
}
?>
</form>

</body>
</html> 


mail.php :
<?php
//il faut reuperer les valeurs depuis la variable globale $_POST

if( empty($_POST['nom']) || empty($_POST['prenom'])) { //empty suffit ça verifie à la fois si isset et si vide
//return false; //return c'est pour un retour de fonction, si tu veux quiter un script il faut faire exit(), mais dans ce cas le header n'aura aucun effet

header('location:index.php?error=1');//si il manque un champ on reaffiche la page du formulaire avec un message d'erreur

}


$n = $_POST['nom'];
$p = $_POST['prenom'];
$c = $_POST['com'];
mail("mon_adresse","Nouveau commentaire","Nom: $n\nPrénom: $p\nCommentaire: $c");
//pour la fonction mail vas voir sur Google il te manque les $headers  contenant le returnPath, le from: etc... sinonn ton hebergeur ne vas pas l'expédier

?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mouf13 Messages postés 146 Statut Membre 17
 
if( empty($_POST['nom']) || empty($_POST['prenom'])) { //empty suffit ça verifie à la fois si isset et si vide

non c'est faux !

il y a aura un notice si $_POST['nom'] n'existe pas en voulant faire un empty dessus
0
PIx Wilz Messages postés 667 Statut Membre 91
 
Merci pour vos reponses mais ca ne marche toujours pas .
j'ai fais un test en faisant expres d'oublier un champs mais il n'affiche pas de message et envoie la formulaire dans ma boite email avec le champs vide :'(
0
mouf13 Messages postés 146 Statut Membre 17
 
index.php :
<html>
<head></head>
<body>
<?php
if(isset($_GET['error']) && !empty($_GET['error'])) {
echo '<font clor="red">Vous devez remplir tous les champs</font>';
}
?>
<form name="formulaire" method="POST" action="mail.php">
<table>
<tr>
<td>Nom:<td/>
<td><input type="text" name="nom"><td/>
</tr>
<tr>
<td>Prénom:<td/>
<td><input type="text" name="prenom"><td/>
</tr>
<tr>
<td>Commentaire:<td/>
<td><TEXTAREA name="com"></TEXTAREA><td/>
</tr>
</table>
<input type="submit" value="Valider" onClick="ControleVide()">
<?php
//message d'erreur eventuel
?>
</form>

</body>
</html>

mail.php :

mail.php :
<?php
//il faut reuperer les valeurs depuis la variable globale $_POST

if(!isset($_POST['nom'] || empty($_POST['nom'])) {
header('location:index.php?error=1');
exit;
}
$n = $_POST['nom'];
$p = $_POST['prenom'];
$c = $_POST['com'];
mail("mon_adresse","Nouveau commentaire","Nom: $n\nPrénom: $p\nCommentaire: $c");

pour infos $_REQUEST equivaut a $_GET ou $_POST...
0
PIx Wilz Messages postés 667 Statut Membre 91
 
J'ai fais un nouveau et tres simple :

index.html :
<form method="post" action="verification.php">
Votre prénom: <input type="text" name="prenom"><br>
Votre nom: <input type="text" name="nom"><br>
<input type="submit" value="Envoyer">

verification.php :

<?PHP
if($_POST['prenom']=="") {echo "Erreur, veuillez inscrire un prénom SVP";}
elseif($_POST['nom']=="") { echo "Erreur, veuillez inscrire un nom SVP";}
else {
//Exécution de la requête
echo "Votre requête ici";
}
?>

J'ai teste et ca marche mais je voudrais lorsqu'il y'a une erreur , il revient sur index.html ( avec header ) et qu'il rempli le champs manquant :)
0
Alain_42 Messages postés 5413 Statut Membre 894
 
verification.php :

<?PHP
if($_POST['prenom']=="") {
	echo "Erreur, veuillez inscrire un prénom SVP";
	//tu pourait mettre ton header(location:index.html  ici
}elseif($_POST['nom']=="") {
	echo "Erreur, veuillez inscrire un nom SVP";
	// et ici
	//mais le Pb c'est que ça va charger de suite la page index.html et l'utilisateur n'aura pas le temps de lire le message d'erreur
}
else {
//Exécution de la requête
echo "Votre requête ici";
}
?> 
0
PIx Wilz Messages postés 667 Statut Membre 91
 
Affaire resolu , j'ai mis un include apres chaque erreur ;)
0
Alain_42 Messages postés 5413 Statut Membre 894
 
Voila un petit script que tu dois nommer OBLIGATOIREMENT en .php

en un seul script on fait tout

<?php
//ici on va faire le traitement lors de l'envoi du formulaire
//le fichier s'appelle lui même tu dois donc le nommer index.php
//init variables de travail
$msg_erreur=""; 
$sasies_ok=0;
//recup eventuelle des champs postés par la methode ternaire
//si la valeur a été postée on la charge dans la variable sinon on charge la var a vide
$nom=isset($_POST['nom'])? $_POST['nom'] : "";
$prenom=isset($_POST['prenom'])? $_POST['prenom'] : "";
//ainsi si un seul des deux a été saisi il sera réaffiché dans le formulaire

if(isset($_POST['envoyer'])){
	//on verifie que le formulaire a été posté donc cette partie ne servira pas lors du premier affichage de la page
	
	//verif des champs:
	if($_POST['prenom']=="") {
		$sasies_ok=0;
		$msg_erreur= "Erreur, veuillez inscrire un pr&eacute;nom SVP";
	}elseif($_POST['nom']=="") {
	$sasies_ok=0;
		$msg_erreur= "Erreur, veuillez inscrire un nom SVP";
	}else{
	$sasies_ok=1;
	//c'est tout bon tu fais ton envoi de mail ici
	echo "Tout OK";
	
	}
}

if($sasies_ok==0){
//on va afficher le formulaire la première fois car $saisie_ok et initialisé à 0 et si il y a une erreur ensuite
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
Votre pr&eacute;nom: <input type="text" name="prenom" value="<?php echo $prenom; ?>" /><br />
Votre nom: <input type="text" name="nom" value="<?php echo $nom; ?>" /><br />
<?php
//message d'erreur eventuel en rouge au dessus du bouton
if($msg_erreur!=""){ echo '<font color="red">'.$msg_erreur.'</font><br />';}

?>
<input name="envoyer" type="submit" value="Envoyer">
</form>

<?php

} //fin du if 
?>
0