A voir également:
- Je recheche un script pour champ obligatoire
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Tinder photo obligatoire - Accueil - Utilitaires
- Le nom du champ de tableau croisé dynamique n'est pas valide - Forum Excel
11 réponses
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';
}
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';
}
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");
?>
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");
?>
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...
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...
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
?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
non c'est faux !
il y a aura un notice si $_POST['nom'] n'existe pas en voulant faire un empty dessus
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 :'(
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 :'(
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...
<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...
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 :)
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 :)
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";
}
?>
Voila un petit script que tu dois nommer OBLIGATOIREMENT en .php
en un seul script on fait tout
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é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é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
?>