Envoyer tableau dans un mail via un formulaire

Fermé
wotanido Messages postés 3 Date d'inscription jeudi 28 novembre 2013 Statut Membre Dernière intervention 2 décembre 2013 - Modifié par pijaku le 2/12/2013 à 09:06
wotanido Messages postés 3 Date d'inscription jeudi 28 novembre 2013 Statut Membre Dernière intervention 2 décembre 2013 - 2 déc. 2013 à 14:08
Bonjour,

Je suis tout nouveau dans le code et je souhaite créer un formulaire que les utilisateurs remplissent et dont la réponse m'est envoyée par mail. Réponse une fois reçu que je copie collerai dans un xls qui me permet de gérer mes réservations (plusieurs sources: net/ téléphone/ visites réelles), modifier mon excel serait compliqué et peu ergonomique.

J'ai donc réussi a adapter un code trouvé sur internet a mon activité. Le mail que je reçois est malheureusement difficilement exploitable. Quelqu'un aurait il une idée de comment adapter mon code pour que mes différentes variables se collent directement dans les colonnes de mon excel.

Si j'ai bien compris le corps de mon mail est crée par :

$message_final .= "$key : ".strip_tags($value)."\n";

Ce qui me donnait une réponse du genre
Objet : Ce script
Nom : XXX

....

malgré mes efforts je ne trouve pas de solution qui me permette d'avoir une reponse exploitable par excel.


Merci beaucoup


Voici le code adapté de celui trouvé sur http://dev.ppan.net/ :

<?php
error_reporting (E_ERROR | E_WARNING | E_PARSE);

$destinataire = "info@s.com";

$pageName = "Formulaire de réservation";
$entete = "[reservation via formulaire]";
# envoi en copie carbone (option: vide)
$email_cc = "";
# envoi en copie cachée (option: vide)
$email_bcc = "";
$cssform = "webdev_form.css";
# nom du répertoire pour upload des pièces jointes

$rep = "upload/"; // ne pas oublier le slash /
# taille max de la [/contents/178-usages-de-la-messagerie pièce jointe] (multiple de 1024)
$taillemax = 5120000;


$date = array(
     0 => 'Choisissez',
"15/06/2014" => '15 juin',
"16/06/2014" => '16 juin',

);
$programme = array(
    0 => 'Choisissez',
 "Bapteme" => 'Bapteme',
    2 => 'Mariage',

);
$voiture = array(
 0 => 'Choisissez',
    "Porsche" => 'Porsche',
 "Ferrari" => 'Ferrari'
);

if(isset($_GET['mailOK'])) echo "Votre message a été envoyé";


$erreur = false;
$message = false;
$focus = 0;


if (!empty($_POST)) {

# vérification des champs requis (Nom, Objet, Message, Email ou Tel)
 
 if (empty($_POST['date'])) {
  $erreur = "Merci de renseigner la Date";
  $focus = 2;
 }
 if (empty($_POST['Nom'])) {
  $erreur = "Merci de renseigner votre Nom";
  $focus = 3;
 }
  if (empty($_POST['PrenomA'])) {
  $erreur = "Merci de renseigner Prénom Acheteur";
  $focus = 8;
 }
 if (empty($_POST['NomP'])) {
  $erreur = "Merci de renseigner le nom du Pilote";
  $focus = 9;
 }
 if (empty($_POST['PrenomP'])) {
  $erreur = "Merci de renseigner Prénom Pilote";
  $focus = 10;
 }
 if (empty($_POST['MailP'])) {
  $erreur = "Merci de renseigner le Mail Pilote";
  $focus = 11;
 }
 if (empty($_POST['TelP'])) {
  $erreur = "Merci de renseigner le Téléphone du Pilote";
  $focus = 12;
 }
 if (empty($_POST['voiture'])) {
  $erreur = "Merci de renseigner la Voiture";
  $focus = 16;
 }
 if (empty($_POST['programme'])) {
  $erreur = "Merci de renseigner le Programme";
  $focus = 17;
 }

 if (empty($_POST['Email']) && empty($_POST['Tel'])) {
  $erreur = "Saisir email et/ou téléphone SVP";
  $focus = 4;
 }
 # vérification de l'email non vide
 elseif (!empty($_POST['Email'])) {
  if(!preg_match(''^[[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-_.]?[[:alnum:]])*\.([a-z]{2,4})$'',$_POST['Email'])) {
   $erreur = "Email non conforme";
   $_POST['Email'] = "";
   $focus = 5;
  }
 # vérification du téléphone (sans espaces)
 } elseif (!is_numeric(str_replace(" ","",$_POST['Tel']))) {
  $erreur = "Téléphone non conforme";
  $_POST['Tel'] = "";
  $focus = 6;
 }
 
 
 $piecejointe = "";
 if(!$erreur && strlen($_FILES['Fichier']['name'])) {
  $fichier = $_FILES['Fichier'];
  # upload du fichier sur le serveur
  $temp = $fichier['tmp_name'];
  $name = $fichier['name'];
  $size = $fichier['size'];
  $destination = $rep.$name;
  if($size > $taillemax)
   $erreur = "Taille du fichier $name > ".(int)($taillemax/102400)." Ko";
  elseif(!@is_uploaded_file($temp))
   $erreur = "Téléchargement du fichier $name impossible";
  elseif(!@move_uploaded_file($temp, $destination))
   $erreur = "Problème de transfert du fichier $name";
  if($erreur) $focus = 7;
  else {
   # lecture du type de fichier
   if(!function_exists('mime_content_type')) {
    function mime_content_type($fichier) {
     # ajouter autant de combinaisons que souhaitées
     $mime = array(
     '.gif' => 'image/gif',
     '.jpg' => 'image/jpeg',
     '.psd' => 'image/x-xwd',
     '.png' => 'image/png',
     '.txt' => 'text/plain',
     '.doc' => 'application/msword',
     '.xls' => 'application/vnd.ms-excel',
     'jpeg' => 'image/jpeg',
     );
     # par défaut
     if(!$type = $mime[strrchr($fichier,'.')]) $type = "application/octet-stream";
     return $type;
    }
   }
   /*
    pour utiliser mime_content_type()
    éditer le fichier php.ini et enlever le commentaire sur :
    extension=php_mime_magic.dll
    sous Windows ajouter ces 2 lignes :
    mime_magic.debug = On
    mime_magic.magicfile = "c:\chemin_du_fichier\magic.mime"
    NB : fonction non activée chez OVH
   */
   $mimetype = mime_content_type($destination);
   # lecture et conversion du fichier
   if($openf = @fopen($destination, "rb")) {
    $fichier = fread($openf, filesize($destination));
    @fclose($openf);
    # encodage norme RFC 2045
    $piecejointe = chunk_split(base64_encode($fichier));
   } else {
    $erreur = "Problème de lecture du fichier $name";
    $focus = 7;
   }
  }
 
 }
 # pas d'erreur donc on continue
 if(!$erreur) {

  # traitement du tableau $_POST qui contient les paires name => value
  $message_final = "";
  
  # formatage du message de confirmation affiché (option)
 
  $final_mail = $_POST['Email'];
  if(empty($_POST['Email'])) {
   $final_mail = $destinataire;
   $message_final .= "\nNe pas répondre par mail : email absent.\n";
  }
  foreach($_POST as $key => $value) {
   # la boucle passe les champs vides ou non désirés
   # pour passer d'autres champs les séparer par |
  
   $message_final .= "".strip_tags($value)."\n";
  }
  # en-têtes
  $headers = "From: ".$final_mail;
  if(strlen($email_cc))
   $headers .= "\nCC: ".$email_cc;
  if(strlen($email_bcc))
   $headers .= "\nBCC: ".$email_bcc;
 
  # si pièce jointe on ajoute l'en-tête spécifique avec séparateurs
  if(strlen($piecejointe)) {
   $boundary = "/-------".md5(uniqid(rand()))."-------/"; // séparateur
   $headers .= "\nMIME-Version: 1.0\nContent-Type: multipart/mixed; boundary=\"$boundary\"\n";
   $message_final =
    "This is a multi-part message in MIME format.\n--$boundary\n".
    "Content-Type: text/plain; charset=ISO-8859-1\n".
    "Content-Transfer-Encoding: 7bit\n\n".
    "$message_final\n\n--$boundary\n".
    "Content-Type: $mimetype; name=\"$name\"\n".
    "Content-Transfer-Encoding: base64\n".
    "Content-Disposition: attachment; filename=\"$name\"\n\n".
    "$piecejointe\n--".
    $boundary."--\n";
  }

  # envoi du mail
  if (@mail($destinataire, stripslashes($objet), stripslashes($message_final), $headers)) {
   @unlink($destination); // suppression de la pièce jointe
   @header("Location: ".$pageconfirme."?mailOK=1");
   exit;
   } else {
   $pageName = "Echec !";
   $erreur = "Echec de l'envoi ! Merci d'essayer encore";
   }

 } else {

  $pageName = "Erreur de saisie !";

 } // if(!$erreur)

} // if ($_POST)
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><? echo $pageName?></title>
<meta name="author" content="P">
<meta name="generator" content="">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="<? echo $cssform?>" type="text/css" rel="stylesheet">
</head>
<body>
 <div>
<?  if (!$erreur) { ?>
    <h4>Contact</h4>
    <p>Merci de renseigner l'ensemble des champs marqués d'un astérisque </p>
<?  } else { ?>
    <p class="alerte"><? echo $erreur?></p>
<?  } ?>
    <hr>
    <form name="formulaire" action="<? echo $_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data">



</p>
           <?  if (is_array($date)) { ?>
    <label for="date">Date Souhaitée*</label><select name='date' <? if($focus == 2) echo "class=\"focus\"";?> id="date">
<?
foreach($date as $key => $val) {
    echo "      <option value='$key'";
    // vérifier si une des entrées a été choisie
    if($key == $_POST['date']) echo " selected";
    echo ">$val\n";
}
?>
    </select>
<?  } else { ?>
    <label for="date">date</label><input id="date" <? if($focus == 2) echo "class=\"focus\"";?> name="date" maxlength="60" value="<? echo htmlentities($_POST['Objet'], ENT_QUOTES)?>">
<?  } ?> 

  </p>
            <label for="nom">Nom Acheteur*</label><input id="nom" <? if($focus == 3) echo "class=\"focus\"";?> name="Nom" maxlength="30" value="<? echo htmlentities($_POST['Nom'], ENT_QUOTES)?>">
    </p>
</p>
            <label for="PrenomA">Prénom Acheteur*</label><input id="PrenomA" <? if($focus == 8) echo "class=\"focus\"";?> name="PrenomA" maxlength="30" value="<? echo htmlentities($_POST['PrenomA'], ENT_QUOTES)?>">
    </p>
             </p>
          <label for="email">Mail Acheteur</label><input id="email" <? if($focus == 5 || $focus == 4) echo "class=\"focus\"";?> name="Email" maxlength="60" value="<? echo htmlentities($_POST['Email'], ENT_QUOTES)?>">
    </p>
             </p>
            <label for="tel">Téléphone Acheteur</label><input id="tel" <? if($focus == 6 || $focus == 4) echo "class=\"focus\"";?> name="Tel" maxlength="20" value="<? echo htmlentities($_POST['Tel'])?>">
    </p>
              </p>
            <label for="NomP">Nom Pilote*</label><input id="NomP" <? if($focus == 9) echo "class=\"focus\"";?> name="NomP" maxlength="30" value="<? echo htmlentities($_POST['NomP'], ENT_QUOTES)?>">
    </p>
</p>
            <label for="PrenomP">Prénom Pilote*</label><input id="PrenomP" <? if($focus == 10) echo "class=\"focus\"";?> name="PrenomP" maxlength="30" value="<? echo htmlentities($_POST['PrenomP'], ENT_QUOTES)?>">
    </p>
             </p>
            <label for="MailP">Mail Pilote*</label><input id="MailP" <? if($focus == 11) echo "class=\"focus\"";?> name="MailP" maxlength="60" value="<? echo htmlentities($_POST['MailP'], ENT_QUOTES)?>">
    </p>
             </p>
            <label for="TelP">Telephone Pilote*</label><input id="TelP" <? if($focus == 12) echo "class=\"focus\"";?> name="TelP" maxlength="30" value="<? echo htmlentities($_POST['TelP'], ENT_QUOTES)?>">
    </p>
    </p>
            <label for="CodeB">Code bon</label><input id="CodeB" <? if($focus == 13) echo "class=\"focus\"";?> name="CodeB" maxlength="30" value="<? echo htmlentities($_POST['CodeB'], ENT_QUOTES)?>">
    </p>
             <label for="CodeS">Code sécurité</label><input id="CodeS" <? if($focus == 14) echo "class=\"focus\"";?> name="CodeS" maxlength="30" value="<? echo htmlentities($_POST['CodeS'], ENT_QUOTES)?>">
    </p>
              </p>
             <label for="ref">Référence</label><input id="ref" <? if($focus == 15) echo "class=\"focus\"";?> name="ref" maxlength="30" value="<? echo htmlentities($_POST['ref'], ENT_QUOTES)?>">
    </p>        
  </p>
           <?  if (is_array($voiture)) { ?>
    <label for="voiture">Voiture*</label><select name='voiture' <? if($focus == 16) echo "class=\"focus\"";?> id="voiture">
<?
foreach($voiture as $key => $val) {
    echo "      <option value='$key'";
    // vérifier si une des entrées a été choisie
    if($key == $_POST['voiture']) echo " selected";
    echo ">$val\n";
}
?>
    </select>
<?  } else { ?>
    <label for="voiture">Voiture*</label><input id="voiture" <? if($focus == 16) echo "class=\"focus\"";?> name="voiture" maxlength="60" value="<? echo htmlentities($_POST['voiture'], ENT_QUOTES)?>">
<?  } ?> 
</p>
</p>
           <?  if (is_array($programme)) { ?>
    <label for="programme">Programme*</label><select name='programme' <? if($focus == 17) echo "class=\"focus\"";?> id="programme">
<?
foreach($programme as $key => $val) {
    echo "      <option value='$key'";
    // vérifier si une des entrées a été choisie
    if($key == $_POST['programme']) echo " selected";
    echo ">$val\n";
}
?>
    </select>
<?  } else { ?>
    <label for="programme">Programme*</label><input id="programme" <? if($focus == 17) echo "class=\"focus\"";?> name="programme" maxlength="60" value="<? echo htmlentities($_POST['programme'], ENT_QUOTES)?>">
<?  } ?> 
</p>
    <p>
    <label for="message">Message</label><textarea <? if($focus == 1) echo "class=\"focus\"";?> id="message" name="Message"><? echo htmlentities(stripslashes($_POST['Message']))?></textarea>
    </p>
<?  if (file_exists($rep)) { ?>
    <p>
    <label for="fichier">Pièce jointe</label><input type="hidden" name="MAX_FILE_SIZE" value="<? echo $taillemax?>"><input type="file" id="fichier" <? if($focus == 7) echo "class=\"focus\"";?> name="Fichier" size="35">
    </p>
    <p>
    <label> </label>NB : taille du fichier inférieure à <?= (int)($taillemax/1024)?> Ko
    </p>
<?  } ?>
    <p>
    <label> </label><input id="submit" type="submit" value="Envoyer"> <a href="./">Accueil</a>
    </p>
    </form>
 </div>
</body>
</html>
A voir également:

4 réponses

mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 340
29 nov. 2013 à 12:30
Bonjour,

STOP aux listings à rallonge.....

Bon, ceci dit, ma remarque purement personnelle...

Vous voulez envoyer la saisie d'un FORM dans un fichier xls? C'ets bien ça?

Mais quelle mauvaise idée!

Pourquoi vous n'enregistrez pas le contenu de ce FORM en base de données? ce serait pas plus cohérent?

Vous gérerez certainement bien plus facilement VOTRE base de données que vos multiples fichiers Excell.

Excell est un tableur, pas un gestionnaire de données.

Bon, moi j'dis ça.... C'est vous qui voyez.

A+
0
wotanido Messages postés 3 Date d'inscription jeudi 28 novembre 2013 Statut Membre Dernière intervention 2 décembre 2013
29 nov. 2013 à 13:58
Bonjour,

Il serait plus simple de créer cette base de donnée je n'en doute pas mais je n'ai malheuresement pas les connaissances suffisantes pour cela et surtout pour l'exploiter par la suite... sur excel nous avons pu créer les fonctions nécessaires a la création des plannings, ce que je n'arriverais pas a reproduire ici.

Merci
0
Xavierdu34 Messages postés 216 Date d'inscription lundi 2 décembre 2013 Statut Membre Dernière intervention 10 octobre 2016 21
Modifié par Xavierdu34 le 2/12/2013 à 07:51
tu peux utiliser fputcsv pour faire une sortie en csv qui est directement compatible avec excel ...

voici un exemple d'utilisation :
<?php
$fp = fopen('file.csv', 'w');

foreach ($list as $key => $fields) {
$array = array($key, $fields);
    fputcsv($fp, $array);
}

fclose($fp);
?>


plus d'infos ici : https://www.php.net/manual/fr/function.fputcsv.php
0
wotanido Messages postés 3 Date d'inscription jeudi 28 novembre 2013 Statut Membre Dernière intervention 2 décembre 2013
2 déc. 2013 à 14:08
Merci de ton aide,

Je m'arrache les cheveux depuis ce matin....malheuresement je suis vraiment débutant et
impossible d'arriver a envoyer le csv... je n'arrive pas a gérer les 2 pieces jointes en fait. Que dois je changer dans mon code pour que les deux PJ se gerent?


Merci
0