18 Novembre 2017 à 03:48:29

Auteur Sujet: Formulaire PHP et envoi par email  (Lu 24738 fois)

adeline

  • Nouveau membre
  • *
  • Messages: 4
  • Points gagnés: 0
    • Voir le profil
Re : Formulaire PHP et envoi par email
« Réponse #30 le: 22 Avril 2013 à 10:02:29 »
Bonjour,
merci d'avoir répondu si rapidement,

Je viens de trouver une énormité dans mon code.. (j'ai honte de ne pas l'avoir vu avant) la syntaxe n'est pas la meme entre les attributs name="" et le nom des variables que j'essaie d'insérer dans la base. C'est corrigé, mais j'ai toujours la meme erreur.. et j'ai vérifié dans la base, le nombre de champs correspond bien au nombre de valeurs à insérer et la syntaxe est bonne.

voici mon code (traitement.php) :

<?php
// Parametres mysql à remplacer par les vôtres
define('DB_SERVER''mysql51-45.pro'); // serveur mysql
define('DB_SERVER_USERNAME''lescabanapyrene'); // nom d'utilisateur
define('DB_SERVER_PASSWORD''admin1234'); // mot de passe
define('DB_DATABASE''lescabanapyrene'); // nom de la base

// parametres email à remplacer par les vôtes
define('MAIL_DESTINATAIRE','di.linne89@hotmail.fr'); // remplacer par votre email
define('MAIL_SUJET','Commande de Bon Cadeaux');

$msg_erreur "Erreur. Les champs suivants doivent être obligatoirement remplis:
<br/><br/>"
;
$msg_ok "Votre demande a bien été prise en compte.";
$message $msg_erreur;

// Connexion au serveur mysql
$connect mysql_connect(DB_SERVERDB_SERVER_USERNAME,
DB_SERVER_PASSWORD)
or die(
'Impossible de se connecter : ' mysql_error());
// sélection de la base de données
mysql_select_db(DB_DATABASE$connect);


// vérification des champs
if (empty($_POST['nom']))
  
$message .= "Votre nom<br/>";
if (empty(
$_POST['adresse']))
  
$message .= "Votre adresse<br/>";
if (empty(
$_POST['cp']))
  
$message .= "Votre code postal<br/>";
if (empty(
$_POST['ville']))
  
$message .= "Votre ville<br/>";
if (empty(
$_POST['tel']))
  
$message .= "Votre téléphone<br/>";
if (empty(
$_POST['mail']))
  
$message .= "Votre e-mail<br/>";
 
// si un champ est vide, on affiche le message d'erreur
if (strlen($message) > strlen($msg_erreur)) {
 
  echo 
$message;
 
// sinon c'est ok
} else {
 
  foreach(
$_POST as $index => $valeur) {
    $
$index stripslashes(trim($valeur));
  }

// on liste les produits en ligne  
$produit $_POST['produit'];
$sqlproduit '';
for (
$i=0$i<count($produit); $i++)
{
$sqlproduit .= $produit[$i];
$sqlproduit .= ', ';
}

// on liste les cabanes  
$cabane $_POST['cabane'];
$sqlcabane '';
for (
$i=0$i<count($cabane); $i++)
{
$sqlcabane .= $cabane[$i];
$sqlcabane .= ', ';
}

// on liste les options en ligne  
$options $_POST['options'];
$sqloptions '';
for (
$i=0$i<count($options); $i++)
{
$sqloptions .= $options[$i];
$sqloptions .= ', ';
}


//Préparation de l'entête du mail
$mail_entete "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['nom']} "
."<{$_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:PHP/' phpversion()."\r\n";

// préparation du corps du mail
$mail_corps "Message de : $nom\n";
$mail_corps .= "Adresse : $adresse$cp $ville$tel$mail\n";
$mail_corps .= "Produit(s) concerné(s) : $produit\n\n";
$mail_corps .= "Cabane choisie : $cabane\n\n";
$mail_corps .= "Nombre de nuits : $nbNuit";
$mail_corps .= "Nombre d'adultes : $nbAdultes";
$mail_corps .= "Nombre d'enfants : $nbEnfants";
$mail_corps .= "Option(s) : $options\n\n\n";
$mail_corps .= $message;

// envoi du mail
$res_mail mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete);



foreach(
$_POST as $index => $valeur) {
  
// utilisez addslashes() au lieu de mysql_real_escape_string()
  // si vous n'etes pas sur PHP5 ou si la fonction pose probleme
  
$$index mysql_real_escape_string(trim($valeur));
}
  
 
// insere les donnees dans mysql
  
$sql "INSERT INTO formulaire VALUES ('', '".$nom."',
'"
.$adresse."', '".$cp."', '".$ville."', '".$tel."', '".$mail."', now())";
  
$res_sql mysql_query($sql);
 
  
// si le mail a ete envoye par mail et mysql
if ($res_mail && $res_sql) {
echo 
$msg_ok;
// si mysql a retourné une erreur
} else if (!$res_sql) {
echo 
mysql_error();
// si le mail n'a pas été envoyé
} else if (!$res_mail) {
echo 
'Erreur. Le formulaire ne nous a pas été correctement envoyé par email.';
}

}
?>

Pour la partie html si ça peut aider :

<form action="traitement.php" method="post" name="Formulaire Bon Cadeaux">
   
    <div id="col_left">
     
      <p id="produit"><label><font size="+1"><b>> Produit(s) concerné(s) :</b></font></label><br /><br />
    <input type="checkbox" name="produit" value="cabane" />Nuit en cabane<br />
    <input type="checkbox" name="produit" value="grill" />Repas dans notre Kota-Grill (à partir de 4 personnes)<br />
    <input type="checkbox" name="produit" value="bain" />1h de détente dans notre bain scandinave
  </p><br /><br />
     
     
     
      <label>Nombre de nuits :</label>     
      <select name="nbNuit" >
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option></select><br />

<label>Nombre d'adultes :</label>     
      <select name="nbAdultes" >
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option></select><br />

<label>Nombre d'enfants de moins de 12 ans :</label>     
      <select name="nbEnfants" >
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option></select>


      <p id="options"><label><font size="+1"><b>> Les options (vous pouvez sélectionner plusieurs options) :</b></font></label><br /><br />
    <input type="checkbox" name="options" value="repas-froid" />Panier repas froid avec produits locaux<br />
    <input type="checkbox" name="options" value="repas_chaud" />Panier repas chaud (menu traiteur)<br />
    <input type="checkbox" name="options" value="romantique_cabanes" />Option romantique "cabanes"<br />
    <input type="checkbox" name="options" value="romantique_bain" />Option romantique "bain"
  </p>
     
      <table width="75%" border="0" cellspacing="5px">
      <h4 style="margin-left:20px;"><font size="+1">> Vos coordonnées :</font></h4>
  <tr>
    <td>Nom & Prenom</td>
    <td><input name="nom" type="text" value="" required="required" /></td>
  </tr>
  <tr>
    <td>Adresse</td>
    <td><input name="adresse" type="text" value="" required="required" /></td>
  </tr>
  <tr>
    <td>Code Postal</td>
    <td><input name="cp" type="text" value="" required="required" /></td>
  </tr>
  <tr>
    <td>Ville</td>
    <td><input name="ville" type="text" value="" required="required" /></td>
  </tr>
  <tr>
    <td>Téléphone</td>
    <td><input name="tel" type="tel" value="" required="required" /></td>
  </tr>
  <tr>
    <td>E-Mail</td>
    <td><input name="mail" type="text" value="" required="required" /></td>
  </tr>
  <tr>
    <td>Votre message</td>
    <td><textarea name="message" cols="42" rows="10"></textarea></td>
  </tr>
</table>

<input name="envoi" type="submit" value="Envoyer" />

      <div id="rien"></div>
     
      </div>
     
      <div id="col_right">
     
      <p id="cabane"><label><font size="+1"><b>>Précisez la cabane choisie :</b></font></label><br /><br />
    <input type="checkbox" name="cabane" value="Pitalaya" /><a href="pitalaya.php">La cabane de la Pitalaya</a><br />
    <input type="checkbox" name="cabane" value="Brame" /><a href="brame.php">La cabane du Brame</a><br />
    <input type="checkbox" name="cabane" value="Peyre Hitte" /><a href="peyre_hitte.php">La cabane de Peyre Hitte (4 pers. minimun)</a>
  </p>
     
      </div>
     
</form>

Encore un grand merci!
« Modifié: 22 Avril 2013 à 10:05:36 par adeline »

viks9_1

  • Nouveau membre
  • *
  • Messages: 1
  • Points gagnés: 0
    • Voir le profil
Re : Formulaire PHP et envoi par email
« Réponse #31 le: 15 Mai 2013 à 16:13:02 »
Bonjour,

Et déjà un grand merci pour ce tutoriel de super qualité! Je l'ai mis en place pour faire mon formulaire et ça marche au top!

En complément, je souhaiterais savoir s'il serait possible, et quel est le code php pour cela, que les messages du formulaire (Message bien envoyé, erreur, remplir le nom...) s'ouvrent dans une fenêtre type pop-up? Dans le but de rester toujours sur la même page.

Merci beaucoup!

mathias

  • Rédacteur Modérateur
  • Intarissable
  • *****
  • Messages: 1287
  • Points gagnés: 4
    • Voir le profil
    • KERII : Création de solutions informatiques
Re : Formulaire PHP et envoi par email
« Réponse #32 le: 20 Juin 2013 à 08:23:45 »
Bonjour;

C'est tout à fait possible, notemment en faisant une requête Ajax et un peu de JavaScript.

Je vous conseil de regarder du côté des Lightbox Jquery, on peut trouver beaucoup d'exemple sur la toile. Notemment avec des requêtes Ajax.

Je pense que l'on ne tardera pas à se voir dans la section développement :)

Bonne journée !
Administrateur système et réseau | Ingénieur R&D | Webmaster

Président | fondateur de KERII : Création de solutions informatiques

adeline

  • Nouveau membre
  • *
  • Messages: 4
  • Points gagnés: 0
    • Voir le profil
Re : Formulaire PHP et envoi par email
« Réponse #33 le: 22 Octobre 2013 à 10:19:55 »
Bonjour,

Je reviens vers vous dans un ultime appel au secour, je vous avait donné le code de mon formulaire comme vous me l'aviez demandé mais n'ayant aucune réponse depuis je me permet de vous recontacter.. Pour rappeler les problèmes:
Envoi par mail = ok
Envoi dans la base = non
Et il y a un message d'erreur lors de l'envoi du formulaire : Column count doesn't match value count at row 1

Merci d'avance!

mathias

  • Rédacteur Modérateur
  • Intarissable
  • *****
  • Messages: 1287
  • Points gagnés: 4
    • Voir le profil
    • KERII : Création de solutions informatiques
Re : Formulaire PHP et envoi par email
« Réponse #34 le: 24 Octobre 2013 à 12:05:15 »
Bonjour,

Désolé dans un premier temps de ne pas avoir pris le temps de répondre à votre demande.

En regardant le code en diagonale je n'ai pas vue d'erreurs particulière. Toutefois l'erreur dont vous faires mention stipule que vous avez déclarer dans la requête SQL un nombre de variables à insérer différent du nombre de colonnes dans votre tableau.

Pour faire simple. 10 colonnes dans le tableau, 10 variables.

J'espère que cela résoudra votre problème.
Administrateur système et réseau | Ingénieur R&D | Webmaster

Président | fondateur de KERII : Création de solutions informatiques

adeline

  • Nouveau membre
  • *
  • Messages: 4
  • Points gagnés: 0
    • Voir le profil
Re : Formulaire PHP et envoi par email
« Réponse #35 le: 07 Novembre 2013 à 15:30:40 »
Bonjour,

Merci pour votre aide et je réalise en effet que j'ai une colonne en plus dans la base par rapport aux variables mais c'est seulement le champs id (qui est d'ailleurs en auto increment). Dois-je le supprimer ou y a t-il une solution en modifiant le code?

Merci beaucoup!

pgds1964

  • Nouveau membre
  • *
  • Messages: 2
  • Points gagnés: 0
    • Voir le profil
Re : Formulaire PHP et envoi par email
« Réponse #36 le: 26 Février 2014 à 20:56:42 »
Tout d'abord un grand merci pour votre tuto

c'est la première fois que je réussi un tuto assez rapidement et que ça fonctionne.
:D
Afin de l’amélioré peut-on installer un catpatch ainsi
que la possibilité de joindre des pièces tel que des cv ou lettre de motivation voir petite foto
ainsi que la redirection vers un page html d'accuse de réception comme celle la
Modéré
encore un grand merci et a++
« Modifié: 27 Février 2014 à 08:40:27 par mathias »