Je recheche un script pour champ obligatoire
PIx Wilz
Messages postés
667
Statut
Membre
-
Alain_42 Messages postés 5413 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
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
Configuration: Windows XP Firefox 3.0.3
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';
} -
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");
?> -
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... -
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 -
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 :'( -
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... -
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 :) -
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"; } ?> -
Affaire resolu , j'ai mis un include apres chaque erreur ;)
-
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é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 ?>