Rendre champs de saisi obligatoires

Utilisateur anonyme -  
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Savez vous comment faire pour que les champs "NOM" "EMAIL" et "OBJET" "MESSAGE" soient obligatoire à la saisie ? Si quelqu'un pourrait me donner le code en ajoutant cette fonction ca serai top comme ca je peux le copier coller directement

Merci d'avance

Voici le code :

<?php

if (isset($_POST['nom']))
{

$nom = $_POST["nom"];
$email = $_POST["email"];
$objet = $_POST["objet"];
$message = $_POST["message"];

$myFile = "demandes.txt";

$fh = fopen($myFile, 'a+') or die("can't open file");

$stringData = " Nom :".$nom.
" ;Email :".$email.
" ;Objet : ".$objet.
" ;Message :".$message.
" ;Ip :".$_SERVER['REMOTE_ADDR'].
" ;Date :".date("F j, Y, g:i a")."\n";

fwrite($fh, $stringData);
fclose($fh);

//for email notification

$Name = "xxxxxxxx formulaire"; //senders name
$email = "no-reply@XXXXXXX"; //senders e-mail adress
$recipient = "contact@XXXXXXXXXX"; //recipient
$mail_body = $stringData;
$subject = "Contact MonIxxxx"; //subject
$header = "From: ". $nom . " <" . $email . ">\r\n"; //optional headerfields

mail($recipient, $subject, $mail_body, $header); //mail command
$message="Votre message a bien été envoyé. Nous y répondrons dès que possible";

}

?>

2 réponses

notobe Messages postés 2222 Statut Membre 213
 
Il faut utiliser la fonction empty
http://www.manuelphp.com/php/function.empty.php
0
avion-f16 Messages postés 20368 Date d'inscription   Statut Contributeur Dernière intervention   4 510
 
Salut.

En plus de la réponse de notobe, utilise aussi la fonction trim() afin de retirer les espaces en début et fin de chaine, sinon il suffira de mettre un espace et empty() retournera false.

Pour la vérification du formulaire, je te propose de créer deux variables : $nbErreurs et $msgErreurs. Il suffira d'incrémenter $nbErreurs et d'ajouter du texte à $msgErreurs à chaque erreur.

Exemple avec un simple formulaire (Nom, email et message) :
<?php
$emailSyntaxPattern = "#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#i";

if(isset($_POST['nom']) && isset($_POST['email']) && isset($_POST['msg'])) {
    $msgErreurs = '';
    $nbErreurs = 0;

    $nom = trim($_POST['nom']);
    $email = trim($_POST['email']);
    $msg = trim($_POST['msg']);
    
    if(empty($nom)) {
        $nbErreurs++;
        $msgErreurs .= 'Le champ « Nom » est vide<br/>';
    }

    if(!preg_match($emailSyntaxPattern, $email)) {
        $nbErrreurs++;
        $msgErreurs .= 'La syntaxe de l\'adresse email est invalide<br/>';
    }

    if(empty($msg)) {
        $nbErreurs++;
        $msgErreurs .= 'Le champ « Message » est vide';
    }

    if($nbErreurs > 0) {
        include 'views/contact/error.php';
    } else {
        // Envoie du formulaire par email

        include 'views/contact/success.php';
    }
} else {
    include 'views/contact/form.php';
}
?>
Dans /views/contact/error.php, tu pourras utiliser les deux variables pour le message d'erreur.
0