Aide pour faire un form 2 mail PHP [Résolu]

bmael 67 Messages postés vendredi 13 février 2009Date d'inscription 19 septembre 2015 Dernière intervention - 25 sept. 2013 à 12:04 - Dernière réponse : jordane45 21627 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 16 juillet 2018 Dernière intervention
- 2 oct. 2013 à 09:56
Bonjour à tous,

J'ai créé un formulaire ici : http://eikona.fr/ASC/contactez-nous.html

J'essaie de poster les données du formulaire mais je ne reçois pas les infos des checkbox.
Je ne connais rien au PHP ce qui fait que je suis bloqué.

Merci de bien vouloir jeter un oeil sur mon code :
<?php
$msg_erreur = "Merci de remplir les champs Nom - Prénom - Téléphone - Email</br></br>";
$msg_ok = "Votre demande a bien été prise en compte !";
/*$message = $msg_erreur;*/
define('MAIL_DESTINATAIRE','mon_mail@eikona.fr'); // remplacer par votre email
define('MAIL_SUJET','Prise de contact : '.$_POST['prenom'].' '.$_POST['nom'].'');
 
// vérification des champs
if (empty($_POST['email'])) 
$message .= "Merci de nous fournir une adresse e-mail valide.<br/>";
 
// si un champ est vide, on affiche le message d'erreur et on stoppe le script
if (empty($_POST['prenom']) or empty($_POST['nom']) or empty($_POST['email']) or empty($_POST['tel'])) {
   echo $msg_erreur;;
   echo'<form>
  <input type="button" value="Retour" onclick="history.go(-1)">
</form>';
}else{
 
// sinon c'est ok => on continue
foreach($_POST as $index => $valeur) {
  $$index = $valeur;
}
 
$interet = $_POST['interet'];
$sqlinteret = '';
for ($i=0; $i<count($interet); $i++)
{
$sqlinteret .= $interet[$i];
$sqlinteret .= ', ';
}
 
//Préparation de l'entête du mail:
$mail_entete  = "MIME-Version: 1.0rn";
$mail_entete .= "From: {$_POST['mail']} ";
$mail_entete .= 'Reply-To: '.$_POST['email']."rn";
$mail_entete .= 'Content-Type: text/plain; charset="UTF8"';
$mail_entete .= "rnContent-Transfer-Encoding: 8bitrn";
$mail_entete .= 'X-Mailer:PHP/' . phpversion()."rn";

// préparation du corps du mail

$mail_corps  = "Message provenant de la page CONTACTEZ-NOUS du site a-sc.fr  
";
$mail_corps .= "
";
$mail_corps .= "COORDONNEES :
";
$mail_corps .= "--------------------------------------
";
$mail_corps .= "
";
$mail_corps .= "{$_POST['prenom']} {$_POST['nom']}
";
$mail_corps .= "Société : {$_POST['societe']}
";
$mail_corps .= "E-mail : {$_POST['email']}
";
$mail_corps .= "Téléphone : {$_POST['tel']}
";
$mail_corps .= "
";
$mail_corps .= "CENTRES D'INTERET :
";
$mail_corps .= "--------------------------------------
";
$mail_corps .= "
";
$mail_corps .= "{$sqlinteret}
";
$mail_corps .= "AUTRE : {$_POST['autre']}
";
 
// envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {
  //Le mail est bien expédié
  echo $msg_ok;
  echo'</br></br>';
  echo'<form>
  <input type="button" value="Retour" onclick="history.go(-1)">
</form>';
} else {
  //Le mail n'a pas été expédié
  echo "Une erreur est survenue lors de l'envoi du formulaire par email";
}
}
 
?>

Les checkbox ont pour nom "interet".
Voici le formulaire html :
<h4>ENTRER VOS COORDONNÉES</h4>
<label for="societe">Société : <input id="societe" type="text" name="societe" value="" size="80" maxlength="80" /></label>
<label for="nom">Votre nom : <input id="nom" type="text" name="nom" value="" size="80" maxlength="80" /></label>
<label for="prenom">Votre prénom : <input id="prenom" type="text" name="prenom" value="" size="80" maxlength="80" /></label>
<label for="tel">Un N° de téléphone : <input id="tel" type="tel" name="tel" value="" size="80" maxlength="80" /></label>
<label for="email">Votre email : <input id="email" type="email" name="email" value="" size="80" maxlength="80" /></label>
<h4>VOUS ÊTES PARTICULIÉREMENT INTÉRESSÉ(E) PAR :</h4>
<label><input type="checkbox" name="interet" value="Accueil" /> Accueil</label>
<label><input type="checkbox" name="interet" value="Evénementiel" /> Événementiel</label>
<label><input type="checkbox" name="interet" value="Services Clients" /> Services Clients</label>
<label><input type="checkbox" name="interet" value="Assistance" /> Assistance Services Généraux</label>
<label><input type="checkbox" name="interet" value="Télévente" /> Télévente</label>
<label><input type="checkbox" name="interet" value="Helpdesk" /> Helpdesk</label>
<label><input type="checkbox" name="interet" value="Audit" /> Audit et formation</label>
<label><input type="checkbox" name="interet" value="Appels mystères" /> Appels, visites mystères</label>
<label><input type="checkbox" name="interet" value="Etude NPS" /> Étude NPS (Net Promoter Score)</label>
<label><input type="checkbox" name="interet" value="Autre" /> Autre, merci de préciser (200 caractères) : </label>
<textarea style="width: 320px" name="autre" rows="5" cols="60"></textarea>
<p><input style="width: 120px;" type="submit" value="ENVOYER" />
Afficher la suite 

Votre réponse

15 réponses

jordane45 21627 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 16 juillet 2018 Dernière intervention - 25 sept. 2013 à 13:43
0
Merci
Bonjour,

Pour les CheckBox, commence par leur donner une nom suivi de "[]"
exemple: name="interet[]"

et dans ton PHP par exemple
<?php
if(!empty($_POST['interet'])) {
    foreach($_POST[''interet''] as $check) {
            echo $check;                         
    }

?>

Commenter la réponse de jordane45
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscriptionModérateurStatut 9 mars 2018 Dernière intervention - 25 sept. 2013 à 19:28
0
Merci
<?php
/*
function strToIp($sip){
  $aip = explode('.', $sip);
  $ip  = $aip[3] | ($aip[2]<<8) | ($aip[1]<<16) | ($aip[0]<<24);
  unset($aip);
  return $ip;  
}

function printParams(){
  if((strToIp($_SERVER['SERVER_ADDR'])>>8) !== (strToIp($_SERVER['REMOTE_ADDR'])>>8)) return null;

  print('<pre>');
  switch($_SERVER['REQUEST_METHOD']){
    case 'GET':
      print('GET => ');
      print_r($_GET);
    break;
    case 'POST':
      print('POST => ');
      print_r($_POST);
    break;
  }
  print('</pre>');
}
*/
function getParam($p, $default=null){
  switch($_SERVER['REQUEST_METHOD']){
    case 'GET':
      $return = isset($_GET[$p]) ? $_GET[$p] : $default;
    break;
    case 'POST':
      $return = isset($_POST[$p]) ? $_POST[$p] : $default;
    break;
  }
  if(isset($return)){
    if(is_string($return)) return addslashes($return);
    return $return;
  }
}
?>
<!DOCTYPE html>
<html>
<head>
<style>
label{
  display:inline-block;
  min-width:140px;
}
input[type="text"]:focus,
input[type="tel"]:focus,
input[type="email"]:focus{
  outline:4px solid #07c;
  font-weight:bold;
  color:#07c;
}
p{
  clear:both;
  margin-left:24px;
}
#checkboxs input[type="checkbox"],
#checkboxs label{
  float:left;
  height:20px;
  line-height:20px;
}
#checkboxs input[type="checkbox"]{
  clear:left;
  margin-right:8px;
}
#checkboxs label{
  clear:right;
}
textarea{
  margin-left:24px;
}
</style>
</head>
<body>
<?php
/*
printParams();
*/
?>
<form action="testword.php" method="post">
  <h4>ENTRER VOS COORDONNÉES</h4>
  <p>
    <label for="societe">Société :</label> 
    <input type="text" id="societe" name="societe" value="<?php echo getParam('societe');?>" size="36" maxlength="36" />
  </p>
  <p>
    <label for="nom">Votre nom :</label> 
    <input type="text" id="nom" name="nom" value="<?php echo getParam('nom');?>" size="36" maxlength="36" />
  </p>
  <p>
    <label for="prenom">Votre prénom :</label> 
    <input type="text" id="prenom" name="prenom" value="<?php echo getParam('prenom');?>" size="36" maxlength="36" />
  </p>
  <p>
    <label for="tel">Un N° de téléphone :</label> 
    <input type="tel" id="tel" name="tel" value="<?php echo getParam('tel');?>" size="10" maxlength="10" />
  </p>
  <p>
    <label for="email">Votre email :</label> 
    <input type="email" id="email" name="email" value="<?php echo getParam('email');?>" size="36" maxlength="36" />
  </p>
  <h4>VOUS ÊTES PARTICULIÉREMENT INTÉRESSÉ(E) PAR :</h4>
  <p id="checkboxs">
    <?php $interets = getParam('interet', array()); ?>
    <input type="checkbox" name="interet[]" <?php echo in_array('100', $interets)? 'checked="true" ':'';?>value="100" /><label> Accueil</label>
    <input type="checkbox" name="interet[]" <?php echo in_array('110', $interets)? 'checked="true" ':'';?>value="110" /><label> Événementiel</label>
    <input type="checkbox" name="interet[]" <?php echo in_array('120', $interets)? 'checked="true" ':'';?>value="120" /><label> Services Clients</label>
    <input type="checkbox" name="interet[]" <?php echo in_array('130', $interets)? 'checked="true" ':'';?>value="130" /><label> Assistance Services Généraux</label>
    <input type="checkbox" name="interet[]" <?php echo in_array('140', $interets)? 'checked="true" ':'';?>value="140" /><label> Télévente</label>
    <input type="checkbox" name="interet[]" <?php echo in_array('150', $interets)? 'checked="true" ':'';?>value="150" /><label> Helpdesk</label>
    <input type="checkbox" name="interet[]" <?php echo in_array('160', $interets)? 'checked="true" ':'';?>value="160" /><label> Audit et formation</label>
    <input type="checkbox" name="interet[]" <?php echo in_array('170', $interets)? 'checked="true" ':'';?>value="170" /><label> Appels, visites mystères</label>
    <input type="checkbox" name="interet[]" <?php echo in_array('180', $interets)? 'checked="true" ':'';?>value="180" /><label> Étude NPS (Net Promoter Score)</label>
    <input type="checkbox" name="interet[]" <?php echo in_array('900', $interets)? 'checked="true" ':'';?>value="900" /><label> Autre, merci de préciser (200 caractères) :</label>
  </p>
  <p>  
    <textarea style="width: 320px" name="autre" rows="5" cols="60"><?php echo getParam('societe');?></textarea>
  </p>
  <p>
    <input style="width: 120px;" type="submit" value="ENVOYER" />
  </p>
</form>
</body>
</html>


jordane45 21627 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 16 juillet 2018 Dernière intervention - 25 sept. 2013 à 19:54
Salut f0xi.
Dis voir... hormis lui avoir refait son html tu ne lui explique pas ce qu'il devait modifier ?
Commenter la réponse de f0xi
bmael 67 Messages postés vendredi 13 février 2009Date d'inscription 19 septembre 2015 Dernière intervention - Modifié par bmael le 26/09/2013 à 09:02
0
Merci
Bonjour et merci pour vos réponses. ;)
Jordane45, j'ai bien ajouté les crochets dans le nom des checkbox.
Ensuite j'ai inséré le code que tu m'as donné dans le php mais comme je le disais je ne connais rien au php alors comme ça ne marchait pas et que ça générait des erreurs, j'ai fais différents essais en adaptant le code php.
<?php
$msg_erreur = "Merci de remplir les champs Nom - Prénom - Téléphone - Email</br></br>";
$msg_ok = "Votre demande a bien été prise en compte !";
/*$message = $msg_erreur;*/
define('MAIL_DESTINATAIRE','bmael@eikona.fr'); // remplacer par votre email
define('MAIL_SUJET','Prise de contact : '.$_POST['prenom'].' '.$_POST['nom'].'');
 
// vérification des champs
if (empty($_POST['email'])) 
$message .= "Merci de nous fournir une adresse e-mail valide.<br/>";
 
// si un champ est vide, on affiche le message d'erreur et on stoppe le script
if (empty($_POST['prenom']) or empty($_POST['nom']) or empty($_POST['email']) or empty($_POST['tel'])) {
   echo $msg_erreur;;
   echo'<form>
  <input type="button" value="Retour" onclick="history.go(-1)">
</form>';
}else{
 
// sinon c'est ok => on continue
foreach($_POST as $index => $valeur) {
  $$index = $valeur;
}
 
if(empty($_POST['interet'])) {
    foreach($_POST['interet'] as $check) {
            echo $check;                         
    }

}
 
//Préparation de l'entête du mail:
$mail_entete  = "MIME-Version: 1.0rn";
$mail_entete .= "From: {$_POST['mail']} ";
$mail_entete .= 'Reply-To: '.$_POST['email']."rn";
$mail_entete .= 'Content-Type: text/plain; charset="UTF8"';
$mail_entete .= "rnContent-Transfer-Encoding: 8bitrn";
$mail_entete .= 'X-Mailer:PHP/' . phpversion()."rn";

// préparation du corps du mail

$mail_corps  = "Message provenant de la page CONTACTEZ-NOUS du site ASC 
";
$mail_corps .= "
";
$mail_corps .= "COORDONNEES :
";
$mail_corps .= "--------------------------------------
";
$mail_corps .= "
";
$mail_corps .= "{$_POST['prenom']} {$_POST['nom']}
";
$mail_corps .= "Société : {$_POST['societe']}
";
$mail_corps .= "E-mail : {$_POST['email']}
";
$mail_corps .= "Téléphone : {$_POST['tel']}
";
$mail_corps .= "
";
$mail_corps .= "CENTRES D'INTERET :
";
$mail_corps .= "--------------------------------------
";
$mail_corps .= "
";
$mail_corps .= "{$sqlinteret}
";
$mail_corps .= "AUTRE : {$_POST['autre']}
";
 
// envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {
  //Le mail est bien expédié
  echo $msg_ok;
  echo'</br></br>';
  echo'<form>
  <input type="button" value="Retour" onclick="history.go(-1)">
</form>';
} else {
  //Le mail n'a pas été expédié
  echo "Une erreur est survenue lors de l'envoi du formulaire par email";
}
}
 
?>

Vraiment je n'y arrive pas. C'est du chinois pour moi.
Sinon, F0xy, c'est gentil mais je suis sur Joomla, et je ne penses pas avoir la possibilité d'ajouter du php en haut de ma page HTML à moins de mettre ce code sur le fichier index.php de mon template.
Désolé d'être aussi nul :(
Commenter la réponse de bmael
jordane45 21627 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 16 juillet 2018 Dernière intervention - 26 sept. 2013 à 09:24
0
Merci
Il n'y as pas de souci. il faut bien commencer un jour.
Je vais essayer de regarder ton code plus en détail dans la journée.

Sinon, pour le code de F0xi, tu peux insérer la "partie qui est au dessus du HTML" dans ta page PHP.
function getParam($p, $default=null){
  switch($_SERVER['REQUEST_METHOD']){
    case 'GET':
      $return = isset($_GET[$p]) ? $_GET[$p] : $default;
    break;
    case 'POST':
      $return = isset($_POST[$p]) ? $_POST[$p] : $default;
    break;
  }
  if(isset($return)){
    if(is_string($return)) return addslashes($return);
    return $return;
  }
}



Cette fonction te permets de récupérer (et donc de les "tester" en même temps ) les valeurs de tes variables passées par ton formulaire via la méthode POST ou GET.

Pendant tes tests, tu peux essayer de voir ce que contient ta variable $_POST en utilisant un Print_r
Echo "Contenu de ma variable POST : <br>";
Print_r($_POST);


Ca te permettra de voir si ton formulaire renvoie bien les informations voulues.


par contre, pourquoi avoir changé le test du NOT EMPTY en EMPTY dans le code que je t'avais donné ?
Sinon, tu peux utiliser ISSET
if(isset($_POST['interet'])) {
    foreach($_POST['interet'] as $check=>$valeur) {
            echo $check."   => ".$valeur."<br>" ;                         
    }

}


Commenter la réponse de jordane45
bmael 67 Messages postés vendredi 13 février 2009Date d'inscription 19 septembre 2015 Dernière intervention - 1 oct. 2013 à 15:58
0
Merci
Bonjour,
Je refais surface.
J'ai bien essayé le formulaire de f0xi, mais en ligne ça donne ça :

http://www.eikona.fr/OLD/ecran.png

Je n'ai toujours pas réussi a récupérer les checkboxes.
Mais je ne désespère pas d'y arriver un jour ! ;)
bmael 67 Messages postés vendredi 13 février 2009Date d'inscription 19 septembre 2015 Dernière intervention - 1 oct. 2013 à 20:51
J'ai viré le "n" qui ne servait donc à rien et ça marche. Par contre j'ai bien essayé de mettre des <br> mais ça ne marche pas.
if(!empty($_POST["interet"])) {
      for ($i = 0; $i < count($_POST["interet"]); $i++) 
      $message = $message.$_POST["interet"][$i]." - "; 
      }

Si je mets "<br>" j'ai Option1<br>Option2<br>etc... mais pas de saut de ligne. Si je ne mets pas de guillemets, j'ai des erreurs.
jordane45 21627 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 16 juillet 2018 Dernière intervention - 2 oct. 2013 à 00:21
- déjà, préfère les <br> au </br>

ensuite :
         for ($i = 0; $i < count($_POST["interet"]); $i++) 
                        $message .= "<br>".$_POST["interet"][$i]." - "; 
                        }


Ta variable $message est une "string" contenant les valeurs de tes checkBox ET les balises <br>.
Les retours à la lignes se manifestent uniquement lors de l'affichage dans une page "HTML".
Donc, pour que ton mail puisse "utiliser" les br pour faire des retours à la ligne, il faut que ta variable $mail_corps soit constituée comme une page html
$mail_corps="<html><head><title>mail</title></head>
<body>

 //  Tes INFOS //

</body>
</html>



http://php.net/manual/fr/function.mail.php
-> voir paragraphe 4
jordane45 21627 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 16 juillet 2018 Dernière intervention - 2 oct. 2013 à 00:23
PS : Ta première question semble être résolue....
donc pense à passer ce sujet en RESOLU (lien en haut sous le titre de ta question).

Merci.
bmael 67 Messages postés vendredi 13 février 2009Date d'inscription 19 septembre 2015 Dernière intervention - 2 oct. 2013 à 09:43
Merci pour tout.
Je commence à capter des choses. ;)
jordane45 21627 Messages postés mercredi 22 octobre 2003Date d'inscriptionContributeurStatut 16 juillet 2018 Dernière intervention - 2 oct. 2013 à 09:56
:-)
Commenter la réponse de bmael

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.