8791 sujets

Développement web côté serveur, CMS

Bonjour à toutes et à tous,

Je souhaite, via php (mais pas via javascript), déclencher une alerte dès qu'un champ obligatoire n'est pas complété et que l'internaute clique sur Envoyer.

Je suis allée sur plusieurs forums pour trouver des solutions car je suis encore débutante au niveau du php. Je les ai testées mais cela ne fonctionne pas.
Les messages d'alerte apparaissent dans le corps de l'e-mail envoyé par le formulaire sauf pour la dernière solution testée, malgré le fait que je n'ai pas renseigné les champs obligatoires. Ils sont vides et l'e-mail est tout de même envoyé ! Smiley bawling

Les solutions testées :
http://www.6ma.fr/tuto/faire+formulaire+php+html+css+sur+3-179
http://forum.webrankinfo.com/formulaire-aide-pour-champs-obligatoire-t42612.html
http://forum.alsacreations.com/topic.php?fid=1&tid=51529&s=champs+obligatoire

Voici le code de ma page cible.php :

<?php 
    define('MAIL_DESTINATAIRE','adresse@adresse.fr'); // remplacer par votre email 
    define('MAIL_SUJET','Demande information et/ou devis'); 
 
    $interets = $_POST['interets']; 
    $sqlinterets = ''; 
    for ($i=0; $i<count($interets); $i++) { 
        $sqlinterets .= $interets[$i]; 
        $sqlinterets .= ', '; 
    } 
     
    $titre     = (isset($_POST['titre']))     ? $_POST['titre']     : ''; 
    $nomprenom     = (isset($_POST['nomprenom']))     ? $_POST['nomprenom']     : ''; 
    $email   = (isset($_POST['email']))   ? $_POST['email']   : ''; 
    $tel     = (isset($_POST['tel']))     ? $_POST['tel']     : ''; 
    $message = (isset($_POST['message'])) ? $_POST['message'] : ''; 

	// les variables 
                    $error = 0; 
                    $msgError = '';                             
                    // verification des données 
                    $nomprenom = trim(stripslashes($_POST['nomprenom'])); 
                    $nomprenom = htmlspecialchars($nomprenom); 
                    $tel = trim(stripslashes($_POST['tel'])); 
                    $tel = htmlspecialchars($tel);                   
                    $message = trim(stripslashes($_POST['message'])); 
                    $message = htmlspecialchars($message);                             
                     
                    if ( empty($nomprenom) ) 
                    { 
                        $error = 1; 
                        $msgError .= '<h3>Veuillez renseigner votre nom et prénom..</h3>'; 
                    } 
                    if ( empty($tel) ) 
                        { 
                            $error = 1; 
                            $msgError .= '<h3>Veuillez renseigner votre numéro de téléphone.</h3>'; 
                        } 
                    if ( empty($message) ) 
                        { 
                            $error = 1; 
                            $msgError .= '<h3>Veuillez renseigner votre demande.</h3>'; 
                        }                             
                     
                    // recherche par expression rationnelle insensible à la casse 
                    // verification format de l'adresse mail 
                    elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$", $email)) 
                    {  
                        $error = 1; 
                        $msgError .= '<p>Veuillez saisir un e-mail valide.</p>'; 
                    } 

     //Préparation de l'entête du mail: 
    $mail_entete = "MIME-Version: 1.0\r\n"; 
    $mail_entete .= "From: {$_POST['nomprenom']} " 
                 ."<{$_POST['email']}>\r\n"; 
    $mail_entete .= 'Reply-To: '.$_POST['email']."\r\n"; 
    $mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"'; 
    $mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n"; 
    $mail_entete .= 'X-Mailer   HP/' . phpversion()."\r\n"; 
 
    // préparation du corps du mail 
    $mail_corps = "Message de : $titre $nomprenom\n"; 
    $mail_corps .= "Le contacter : $tel $email\n"; 
    $mail_corps .= "Sa demande : $message\n\n\n"; 
 
     
    // envoi du mail 
    if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) { 
      //Le mail est bien expédié 
      //echo $msg_ok; 
    } else { 
      //Le mail n'a pas été expédié 
      echo 'Une erreur est survenue lors de l\'envoi du formulaire par e-mail'; 
    }
 
?>


Je n'ai pas mis la partie HTML de cette page sinon le php ne s'affiche pas (d'où la modification de ce post). Et j'ai mis des balises HTML car avec les balises php, le code ne s'affiche pas Smiley confused
Comme il y a encore des choses qui m'échappent au niveau du php, je pense que j'ai dû mettre des éléments au mauvais endroit, ou bien oublié des signes quelque part, bref je suis un peu perdue.

En vous remerciant pour votre aide,
Modifié par mama5 (27 Feb 2011 - 00:17)
Tu stockes si il y a une erreur ($error = 1;) mais tu ne fais rien de cette variable, tu envoies le mail quoi qu'il arrive.

Tu dois utiliser une condition (if ($error == 1)) et envoyer ou non le mail en conséquence.