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
Configuration: Windows XP
Firefox 3.0.3

11 réponses

  1. mouf13 Messages postés 151 Date d'inscription   Statut Membre Dernière intervention   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
  2. 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
  3. mouf13 Messages postés 151 Date d'inscription   Statut Membre Dernière intervention   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
  4. Alain_42 Messages postés 5413 Statut Membre 904
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mouf13 Messages postés 151 Date d'inscription   Statut Membre Dernière intervention   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
  7. 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
  8. mouf13 Messages postés 151 Date d'inscription   Statut Membre Dernière intervention   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
  9. 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
  10. Alain_42 Messages postés 5413 Statut Membre 904
     
    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
  11. PIx Wilz Messages postés 667 Statut Membre 91
     
    Affaire resolu , j'ai mis un include apres chaque erreur ;)
    0
  12. Alain_42 Messages postés 5413 Statut Membre 904
     
    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