Formulaire avec champs obligatoires

Gilles12
Invité n'ayant pas de compte PHPfrance

21 févr. 2011, 19:19

Bonjour,
j'ai créé un formulaire simple avec envoi des données recueillies par mail. Pour vérifier quelques champs obligatoires, j'ai placé required devant mes noms de champs. Mais il semblerait que cela empèche les données de figurer dans mon mail. Ainsi, les champs sont bien obligatoires, mais je reçois le mail sans les données des champs obligatoires...
Qui a une idée?

Mon script :
<script>function checkrequired(which){
var pass=true
if (document.images){
for (i=0;i<which.length;i++){
var tempobj=which.elements
if (tempobj.name.substring(0,8)=="required"){
if (((tempobj.type=="text"||tempobj.type=="textarea")&&tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s"&&tempobj.selectedIndex==-1)){
pass=false
break
}
}
}
}
if (!pass){
alert("Certains champs de ce formulaire sont obligatoires, merci de bien vouloir les renseigner")
return false
}
else
return true
}
</script>

Mon code formulaire :
form method='post' action='inc_php/contact.inc.php' onSubmit="return checkrequired(this)" >
<table style="float:left; margin-top:20px;">
<tr><td><b>*Nom:</b></td><td><td><input type='text' size='50' name='requirednom' onchange="verif(this.value, 'nom')" id='nom' /></td><td><span id="error_nom"></span></td></td></tr>
<tr><td><b>E-mail:</b></td><td><td><input type='text' size='50' name='mail' onchange="verifmail(this.value, 'mail')" id='mail' /></td><td><span id="error_mail"></span></td></td></tr>
<tr><td><b>*Telephone:</b></td><td><td><input type='text' size='50' name='requiredtelephone' onchange="verif(this.value, 'telephone')" id='telephone' /></td><td><span id="error_telephone"></span></td></td></tr>
<tr><td><b>&nbsp;&nbsp;Objet:</b></td><td><td><input type='text' size='50' name='objet' onchange="verif(this.value, 'objet')" id='objet' /></td><td><span id="error_objet"></span></td></td></tr>
<tr style="text-align:top;"><td><b>&nbsp;&nbsp;Message:</b></td><td><td><TEXTAREA rows='10' onchange="verif(this.value, 'message')" cols='38' id="message" name='message'></TEXTAREA></td><td><span id="error_message"></span></td></td></tr>
<tr><td></td><td></td><td><input type='submit' value='Envoyer' /></td></tr>
</table>
</form>
<b>&nbsp;&nbsp;* Champs obligatoires</b>

et enfin mon petit php :
<?php

$nom = $_POST['nom'];
$mail = $_POST['mail'];
$telephone = $_POST['telephone'];
$sujet = $_POST['objet'];
$message="Un nouveau message est arrivé \n
Nom : $nom \n
Email : $mail \n
Telephone : $telephone \n
Message: $message";
$message .= $_POST['message'];


mail("[email protected]",$sujet,$message);
echo "Message envoyé! Redirection sur la page d'accueil";
echo '<meta http-equiv="refresh" content="1; url=../index.html" />';

?>

Merci de votre aide

Quel con!!!
Invité n'ayant pas de compte PHPfrance

21 févr. 2011, 19:43

Merci à ceux qui ont cherché, mais j'ai trouvé....
Un truc bête comme d'hab ;-)

Mammouth du PHP | 687 Messages

21 févr. 2011, 19:46

Bonsoir,

Je le laisse essayer ça :
<?php
$nom = $_POST['nom'];
$mail = $_POST['mail'];
$telephone = $_POST['telephone'];
$sujet = $_POST['objet'];
//-----------------------------------------------------------------------------------------

//---------------si les variables n'existe pas afficher message information----------------
    if (!$mail || !$nom || !$telephone || $_POST['hidden'])  // CONTROLE DE TES CHAMPS OBLIGATOIRES
  {
    echo "<h1> TAPE ICI TON MESSAGE D'ERREUR</h1>";
        echo "<br />[  <a href=\"javascript:history.back()\">Retour au formulaire</a>  ]</div><br />";
  	
    exit();
  }

//------------------------------------ Envoi du mail --------------------------------------
 $to = "[email protected]"; // TAPE TON MAIL ICI

 $header = "MIME-Version:1.0" . "\r\n" ;
 $header .= "Content-Type:text/html;charset=ISO-8859-1" . "\r\n";
 // more Header
 $header .= "From: $mail" . "\r\n" ;
 $header .= "<b>Nom :</b> $nom" . "<br>" ;
 $header .= "<b>Téléphone :</b> $telephone" . "<br><br>" ; 
	 

     if (@mail($to, $sujet, $message, $header))
    {
	echo "Message envoyé! Redirection sur la page d'accueil";
	echo '<meta http-equiv="refresh" content="1; url=../index.html" />';

      exit();	
    }

//-------------------------------- si echec de l'envoi ------------------------------------
     else
    {
    echo "<h1> TAPE ICI TON MESSAGE D'ERREUR</h1>";
    echo "<br />[  <a href=\"javascript:history.back()\">Retour au formulaire</a>  ]</div><br />";

      exit();
    }
  
?>
Pour l'installation c'est très simple:

Tu indiques dans ton formulaire (ton php est le code ci-dessus):
<form action="NOM_DU_PHP_QUI_RECUPERE_TES_CHAMPS_ET_ENVOIE_TON_MAIL.php" method="post">
Voila, de ce fait lorsque quelqu'un poste un message via le formulaire, ton PHP récupère les infos, contrôle si les champs obligatoires ont été remplis et envoie le message!
Bon courage.
:wink: