Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1376 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  script formulaire + newsletter

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

script formulaire + newsletter

n°1843013
titi63
Posté le 26-01-2009 à 11:38:16  profilanswer
 

Bonjour à tous
 
Je cherche un script PHP qui permet de réaliser un formulaire de contact, mais avec base de données. Le but étant de récupérer les email pour l'envoi d'une newsletter.
 
J'en ai essayé plusieurs mais pour l'instant sans succès

mood
Publicité
Posté le 26-01-2009 à 11:38:16  profilanswer
 

n°1843830
NewsletTux
<Insérez ici votre vie />
Posté le 27-01-2009 à 18:38:56  profilanswer
 

Salut,
c'est pas forcément difficile à réaliser, il suffit juste à l'envoi du mail de faire un INSERT dans une table que t'auras au préalable créée.
 
Attention cependant à avertir les utilisateurs que leur email sera stocké dans une base, et à fournir un système de désinscription ...


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1844002
titi63
Posté le 28-01-2009 à 08:49:16  profilanswer
 

Un truc comme ça : ?
INSERT INTO mail_tbl VALUES('mail')
 
mon formulaire actuel ne gere aucune BDD, comment la déclarer?

n°1844760
titi63
Posté le 29-01-2009 à 14:57:35  profilanswer
 

Est ce que cela suffit pour inscrire le mail dans une table :  
 
$db = mysql_connect('localhost', 'login', 'password');
$sql = "INSERT INTO mail_tbl(email) VALUES('$email')";  
 
???

n°1844771
aspirateur
Posté le 29-01-2009 à 15:13:49  profilanswer
 

Pour faire simple:

 

Il faut que tu crée une base de donnée (généralement c'est Mysql)
Tu fais ton formulaire en html
Tu fais une page de récupération en php qui va traiter ton formulaire et envoyer les données dans la base de données.

 

Je suppose que tu débute et que tout ca n'est pas clair pour toi.

 

Je donne souvent ce lien: http://www.siteduzero.com/tutoriel [...] c-php.html

 

Je pense que c'est parfaitement adapté pour toi ;)


Message édité par aspirateur le 29-01-2009 à 15:14:04
n°1844946
titi63
Posté le 29-01-2009 à 18:57:32  profilanswer
 

Merci
 
J'ai une BDD
J'ai un formulaire en php
J'aimerai simplement y ajouter une connection à la base pour y mettre les email

n°1845061
aspirateur
Posté le 30-01-2009 à 08:21:34  profilanswer
 

Le lien que je t'ai donné va t'expliquer comment faire.

n°1845065
titi63
Posté le 30-01-2009 à 08:44:23  profilanswer
 

Merci aspirateur, c'est gentil de mexpliquer les bases du PHP par un lien internet mais ce n'est pas ma question. Je sais ce que c'est une fonction ou une variable.
 
Je voudrais juste savoir comment on ajoute une entrée sur une table

n°1845070
aspirateur
Posté le 30-01-2009 à 08:57:27  profilanswer
 

Je te donne un lien qui va répondre à ta question. Si tu prends la peine d'aller voir, tu verra que tout ce que tu demande est sur ce site et en plus tu comprendra comment ca fonctionne (ce qui est quand même mieux).
 
Tiens voila le lien direct qui te dit comment enregistrer des données dans ta base: http://www.siteduzero.com/tutoriel [...] #ss_part_1
 
Maintenant si tu veux qu'on t'apporte de l'aide, y'a pas de soucis, affiche nous ton code et on te filera un coup de main. Mais essaye déjà d'avancer un peu avec les infos présentes dans le lien que je t'ai donné.

n°1845088
titi63
Posté le 30-01-2009 à 10:02:03  profilanswer
 

Super ce lien ;)
 
J'ai donc un formulaire qui récupère l'email de cette facon :  
 

Code :
  1. <p>Votre adresse email:<input type="text" name="email" value=""></p>


 
et mon fichier php  
 

Code :
  1. <?php
  2. }
  3. if (isset($_POST['submit'])){
  4. $to = 'adresse@free.fr' ;
  5. $subject = 'Demande d\'info';
  6. $body = '<html>
  7.    <head>
  8.     <title>Recontacter cette personne</title>
  9.    </head>
  10.    <body>
  11.      <strong>texte :</strong><br>
  12.      <p>'.$_POST['comment'].'</p>
  13.      <p>Mon num&eacute;ro de t&eacute;l&eacute;phone : '.$_POST['tel'].'</p>
  14.    </body>
  15.   </html>';
  16.   .....


 
Si j'ai compris j'ajoute ça :  
 

Code :
  1. <?php
  2. mysql_connect("localhost", "login", "pwd" );
  3. mysql_select_db("mail" );
  4. "INSERT INTO mail_tbl(mail) VALUES('$mail')";
  5. mysql_close();
  6. ?>

mood
Publicité
Posté le 30-01-2009 à 10:02:03  profilanswer
 

n°1845091
aspirateur
Posté le 30-01-2009 à 10:13:22  profilanswer
 

Je vois pas la valeur de $_POST['mail'] C'est pas ca que tu veux ajouter à ta base?

 

Bon je suppose que ton formulaire envoi l'adresse mail, un commentaire et le tel.

 

Imaginons la table "mail" dans ta base de données. Elle contient les champs:"id", "email", "tel" et "commentaire".

 

Les champs de ton formulaire:

Code :
  1. <input type="text" name="email" value="">
  2. <input type="text" name="tel" value="">
  3. <input type="text" name="commentaire" value="">
 

Le traitement php du formulaire serait:

 
Code :
  1. <?php
  2. //code de récup du formulaire
  3.  
  4. //on enregistre les données du formulaire dans des variables c'est optionnel mais c'est plus clair
  5. $email = $_POST['email'];
  6. $tel = $_POST['tel'];
  7. $commentaire = $_POST['commentaire'];
  8.  
  9. //on se connecte à ta base
  10. mysql_connect("localhost", "login", "pwd" );
  11. mysql_select_db("mail" );
  12.  
  13. //on enregistre les données:
  14. mysql_query("INSERT INTO mail VALUES('', '$email', '$tel', '$commentaire')" );
  15.  
  16. // on se deconnecte de la base
 

Ca te semble clair?

Message cité 1 fois
Message édité par aspirateur le 30-01-2009 à 10:13:42
n°1845132
titi63
Posté le 30-01-2009 à 11:29:14  profilanswer
 

super clair, je vais essayer cela
sauf que je veux juste stoquer les email, les commentaires et numtel sont juste envoyé dans le mail, pas besoin de les conserver.

n°1845146
aspirateur
Posté le 30-01-2009 à 11:45:17  profilanswer
 

ben dans ce cas, ta table "mail" doit contenir deux champs: "id" et "email".
 
La requete d'ajout sera alors:
 
mysql_query("INSERT INTO mail VALUES('', '$email')" );

n°1845325
titi63
Posté le 30-01-2009 à 18:13:16  profilanswer
 

a marche pô
Ya une erreur quelque part mais ou???
 
je met ici mon fichier complet :  
 
 

Code :
  1. <?php
  2. $cryptogramme = TRUE;
  3. $format = 'html'; 
  4. $foncmail = 'mail';
  5. $hostsmtp = '';
  6. $portsmtp = '25';
  7. $authsmtp = true;
  8. $usersmtp = '';
  9. $passmtp = '';
  10. session_start();
  11. $included_files = get_included_files();
  12. require(dirname(__FILE__).'/include/fonctions.php');
  13. if(VerifUrl($_SERVER['REQUEST_URI'], $included_files, dirname(__FILE__))){
  14. ?>
  15. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  16. <html>
  17. <head>
  18. <title>Formulaire de contact</title>
  19. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  20. <meta name="revisit-after" content="1">
  21. <meta name="description" content="EXmail 1.2">
  22. <meta name="keywords" content="exmail">
  23. <meta name="robots" content="ALL">
  24. <meta name="distribution" content="Global">
  25. <meta name="rating" content="General">
  26. <meta name="copyright" content="Steuf">
  27. <meta name="author" content="Steuf">
  28. <link rel="stylesheet" type="text/css" href="contact.css">
  29. </head>
  30. <body>
  31. <?php
  32. }
  33. if (isset($_POST['submit'])){
  34. $to = '000000@free.fr' ;
  35. $subject = 'Demande d\'info';
  36. $body = '<html>
  37.    <head>
  38.     <title>Recontacter cette personne</title>
  39.    </head>
  40.    <body>
  41.      <strong>texte :</strong><br>
  42.      <p>'.$_POST['comment'].'</p>
  43.      <p>Mon num&eacute;ro de t&eacute;l&eacute;phone : '.$_POST['tel'].'</p>
  44.    </body>
  45.   </html>';
  46. if(!CheckEmail($_POST['email'])){
  47.  $error[] = '<p class="erreur">Votre adresse Email n\'est pas valide !</p>';
  48. }
  49. if(empty($_POST['tel'])){
  50.  $error[] = '<p class="erreur">Vous n\'avez pas mis votre num&eacute;ro de t&eacute;l&eacute;phone !</p>';
  51. }
  52. if((empty($_POST['cryptogramme']) or $_POST['cryptogramme'] !== $_SESSION['captcha-control']) and $cryptogramme === TRUE){
  53.  $error[] = '<p class="erreur">Cryptogramme invalide !</p>';
  54. }
  55. if(isset( $_FILES['upload_localfile']['tmp_name']) and is_uploaded_file($_FILES['upload_localfile']['tmp_name'])){
  56.  $destination = dirname(__FILE__).'/upload/'.$_FILES['upload_localfile']['name'];
  57.  if(move_uploaded_file($_FILES['upload_localfile']['tmp_name'], $destination)){
  58.   $uploadinfo = '<p class="erreur">Upload R&eacute;ussi</p>';
  59.  }
  60. }
  61. else {
  62.  $uploadinfo = '<p class="erreur"><p>';
  63. }
  64. if(!isset($error) or empty ($error)) {
  65.  $reqclass = dirname(__FILE__).'/include/class.phpmailer.php';
  66.  require_once ( $reqclass );
  67.  $mail = new PHPmailer();
  68.  if($foncmail === 'mail'){
  69.   $mail->IsMail();
  70.  }
  71.  elseif($foncmail === 'smtp'){
  72.   $mail->IsSMTP();
  73.   $mail->Host = $hostsmtp;
  74.   $mail->Port = $portsmtp;
  75.   $mail->SMTPAuth = $authsmtp;
  76.   $mail->Username = $usersmtp;
  77.   $mail->Password = $passmtp;
  78.  }
  79.  if($format === 'html'){
  80.   $mail->IsHTML(true);
  81.  }
  82.  elseif($format === 'texte'){
  83.   $mail->IsHTML(false);
  84.  }
  85.  $mail->From = $_POST['email'];
  86.  $mail->FromName = $_POST['nom'];
  87.  $mail->AddAddress( $to );
  88.  $mail->Subject = $subject ;
  89.  $mail->Body = stripslashes( $body );
  90.  if(isset($destination)){
  91.   $mail->AddAttachment( $destination );
  92.  }
  93.  if(!$mail->Send()){
  94.   echo '<p class="erreur">Erreur fonction mail() :</p>';
  95.   echo $mail->ErrorInfo;
  96.  }
  97.  else{
  98.   echo $uploadinfo;
  99.   echo '<p class="erreur"></br></br>Formulaire envoy&eacute; !</br></br>Merci de votre message!</br></br>Vous allez recevoir une réponse très prochainement.</br></br><a href="http://www.site.com/"><img border="0" src="contact/bt_fermer.gif" width="57" height="15"></a></p>';
  100.  }
  101.  unset($mail);
  102. }
  103. else {
  104.  foreach($error as $errormsg){
  105.     echo $errormsg;
  106.  }
  107.  echo '<p class="erreur">Le Formulaire n\'a pas &eacute;t&eacute; envoy&eacute;</p>
  108.   <p class="erreur">Veuillez recommencer !</p>';
  109. }
  110. if (isset($destination)){
  111.  unlink($destination);
  112. }
  113. }
  114. if (((isset($error) or !empty ($error)) and isset($_POST['submit'])) or  !isset($_POST['submit'])){
  115. include(dirname(__FILE__).'/formulaire.php');
  116. }
  117. if(VerifUrl($_SERVER['REQUEST_URI'], $included_files, dirname(__FILE__))){
  118. ?>
  119. <?php
  120. //on enregistre les données du formulaire dans des variables
  121. $email = $_POST['email'];
  122. //on se connecte à ta base (serveur, nom, pwd)
  123. mysql_connect("db641.1and1.fr:/tmp/mysql5.sock", "dbo174296392", "*******" );
  124. //selction de la base
  125. mysql_select_db("db174296392" );
  126. //on enregistre les données dans la table
  127. mysql_query("INSERT INTO email VALUES('', '$email')" );
  128. // on se deconnecte de la base
  129. mysql_close();
  130. ?>
  131. </body>
  132. </html>
  133. <?php } ?>


 
Et l'imprim ecran de la base : http://www.weplug.com/images_1/f96 [...] 171820.jpg


Message édité par titi63 le 30-01-2009 à 18:21:31
n°1845337
aspirateur
Posté le 30-01-2009 à 18:50:43  profilanswer
 

Tu peux mettre le message d'erreur?
Ton mysql_connect est bon? Ton adresse de serveur est un peu étrange

n°1845341
titi63
Posté le 30-01-2009 à 18:59:18  profilanswer
 

pas de msg d'erreur
quand j'interroge ma bdd j'ai ca : MySQL n'a retourné aucun enregistrement. (traitement: 0.0592 sec.)  
pour l'adresse c'est pourtant ça qui est donné
J'ai essayé en supprimant : :/tmp/mysql5.sock
mais c'est pareil

n°1845366
aspirateur
Posté le 30-01-2009 à 20:27:29  profilanswer
 

rajoute
or die(mysql_error())
 
à la fin de ta requete pour afficher le message d'erreur.

n°1845432
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 31-01-2009 à 01:49:44  profilanswer
 

aspirateur a écrit :

Je vois pas la valeur de $_POST['mail'] C'est pas ca que tu veux ajouter à ta base?
 
Bon je suppose que ton formulaire envoi l'adresse mail, un commentaire et le tel.
 
Imaginons la table "mail" dans ta base de données. Elle contient les champs:"id", "email", "tel" et "commentaire".
 
Les champs de ton formulaire:

Code :
  1. <input type="text" name="email" value="">
  2. <input type="text" name="tel" value="">
  3. <input type="text" name="commentaire" value="">


 
Le traitement php du formulaire serait:
 

Code :
  1. <?php
  2. //code de récup du formulaire
  3.  
  4. //on enregistre les données du formulaire dans des variables c'est optionnel mais c'est plus clair
  5. $email = $_POST['email'];
  6. $tel = $_POST['tel'];
  7. $commentaire = $_POST['commentaire'];
  8.  
  9. [...]


 
Ca te semble clair?


 
Parce que ce n'est qu'un exemple simple, je suppose que tu n'as pas pris le temps/la peine d'être plus précis, mais on ne récupère pas seulement avec un $_POST : oui $_POST['name_du_champ_de_formulaire'] contient ce qu'on cherche, mais à l'origine c'est envoyé par le navigateur, donc le visiteur derrière. Et il faut sécuriser tout ça...
voir du côté de htmlentities si besoin d'afficher, ou de addslashes si besoin, ou mieux, mysql_real_escape_strings.


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1845482
Profil sup​primé
Posté le 31-01-2009 à 11:51:46  answer
 

Oui et teste l'existence des variables avant de lancer l'enregistrement.

n°1846335
titi63
Posté le 03-02-2009 à 08:07:53  profilanswer
 

bon en fait le scipt ne fonctionne pas si je le met entre  
<?php et ?>
 
mais fonctionne si j'inclue les ligne dans le script d'envoie de l'email
 

Code :
  1. <?php
  2. $cryptogramme = TRUE;
  3. $format = 'html'; 
  4. $foncmail = 'mail';
  5. $hostsmtp = '';
  6. $portsmtp = '25';
  7. $authsmtp = true;
  8. $usersmtp = '';
  9. $passmtp = '';
  10. session_start();
  11. $included_files = get_included_files();
  12. require(dirname(__FILE__).'/include/fonctions.php');
  13. if(VerifUrl($_SERVER['REQUEST_URI'], $included_files, dirname(__FILE__))){
  14. ?>
  15. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  16. <html>
  17. <head>
  18. <title>Formulaire de contact</title>
  19. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  20. <meta name="revisit-after" content="1">
  21. <meta name="description" content="EXmail 1.2">
  22. <meta name="keywords" content="exmail">
  23. <meta name="robots" content="ALL">
  24. <meta name="distribution" content="Global">
  25. <meta name="rating" content="General">
  26. <meta name="copyright" content="Steuf">
  27. <meta name="author" content="Steuf">
  28. <link rel="stylesheet" type="text/css" href="contact.css">
  29. </head>
  30. <body>
  31. <?php
  32. }
  33. if (isset($_POST['submit'])){
  34. $to = '***@free.fr' ;
  35. $subject = 'Demande d\'info *';
  36. $body = '<html>
  37.    <head>
  38.     <title>Recontacter cette personne</title>
  39.    </head>
  40.    <body>
  41.      <strong>texte :</strong><br>
  42.      <p>'.$_POST['comment'].'</p>
  43.      <p>Mon num&eacute;ro de t&eacute;l&eacute;phone : '.$_POST['tel'].'</p>
  44.    </body>
  45.   </html>';
  46. if(!CheckEmail($_POST['email'])){
  47.  $error[] = '<p class="erreur">Votre adresse Email n\'est pas valide !</p>';
  48. }
  49. if(empty($_POST['tel'])){
  50.  $error[] = '<p class="erreur">Vous n\'avez pas mis votre num&eacute;ro de t&eacute;l&eacute;phone !</p>';
  51. }
  52. if((empty($_POST['cryptogramme']) or $_POST['cryptogramme'] !== $_SESSION['captcha-control']) and $cryptogramme === TRUE){
  53.  $error[] = '<p class="erreur">Cryptogramme invalide !</p>';
  54. }
  55. if(isset( $_FILES['upload_localfile']['tmp_name']) and is_uploaded_file($_FILES['upload_localfile']['tmp_name'])){
  56.  $destination = dirname(__FILE__).'/upload/'.$_FILES['upload_localfile']['name'];
  57.  if(move_uploaded_file($_FILES['upload_localfile']['tmp_name'], $destination)){
  58.   $uploadinfo = '<p class="erreur">Upload R&eacute;ussi</p>';
  59.  }
  60. }
  61. else {
  62.  $uploadinfo = '<p class="erreur"><p>';
  63. }
  64. if(!isset($error) or empty ($error)) {
  65.  $reqclass = dirname(__FILE__).'/include/class.phpmailer.php';
  66.  require_once ( $reqclass );
  67.  $mail = new PHPmailer();
  68.  if($foncmail === 'mail'){
  69.   $mail->IsMail();
  70.  }
  71.  elseif($foncmail === 'smtp'){
  72.   $mail->IsSMTP();
  73.   $mail->Host = $hostsmtp;
  74.   $mail->Port = $portsmtp;
  75.   $mail->SMTPAuth = $authsmtp;
  76.   $mail->Username = $usersmtp;
  77.   $mail->Password = $passmtp;
  78.  }
  79.  if($format === 'html'){
  80.   $mail->IsHTML(true);
  81.  }
  82.  elseif($format === 'texte'){
  83.   $mail->IsHTML(false);
  84.  }
  85.  $mail->From = $_POST['email'];
  86.  $mail->FromName = $_POST['nom'];
  87.  $mail->AddAddress( $to );
  88.  $mail->Subject = $subject ;
  89.  $mail->Body = stripslashes( $body );
  90. //on se connecte à ta base (serveur, nom, pwd)
  91. mysql_connect("db641.1and1.fr", "dbo174296392", "qMX6tZFr" );
  92. //selction de la base
  93. mysql_select_db("db174296392" )or die("Ouverture base impossible" );
  94. //on enregistre les données dans la table
  95. mysql_query("INSERT INTO email VALUES('', '$email')" )or die(mysql_error());
  96. // on se deconnecte de la base
  97. mysql_close();
  98.  if(isset($destination)){
  99.   $mail->AddAttachment( $destination );
  100.  }
  101.  if(!$mail->Send()){
  102.   echo '<p class="erreur">Erreur fonction mail() :</p>';
  103.   echo $mail->ErrorInfo;
  104.  }
  105.  else{
  106.   echo $uploadinfo;
  107.   echo '<p class="erreur"></br></br>Formulaire envoy&eacute; !</br></br>Merci de votre message!</br></br>Vous allez recevoir une réponse très prochainement.</br></br><a href="http://www.creasite-auvergne.com/"><img border="0" src="contact/bt_fermer.gif" width="57" height="15"></a></p>';
  108.  }
  109.  unset($mail);
  110. }
  111. else {
  112.  foreach($error as $errormsg){
  113.     echo $errormsg;
  114.  }
  115.  echo '<p class="erreur">Le Formulaire n\'a pas &eacute;t&eacute; envoy&eacute;</p>
  116.   <p class="erreur">Veuillez recommencer !</p>';
  117. }
  118. if (isset($destination)){
  119.  unlink($destination);
  120. }
  121. }
  122. if (((isset($error) or !empty ($error)) and isset($_POST['submit'])) or  !isset($_POST['submit'])){
  123. include(dirname(__FILE__).'/formulaire.php');
  124. }
  125. if(VerifUrl($_SERVER['REQUEST_URI'], $included_files, dirname(__FILE__))){
  126. ?>
  127. </body>
  128. </html>
  129. <?php } ?>

n°1846336
titi63
Posté le 03-02-2009 à 08:09:39  profilanswer
 

maintenant si j'envoie 2 demandes avec le même mail, il s'inscrit deux fois (le même) dans la BDD
 
peut être une condition a rajouter pour éviter une duplication dans la base?

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  script formulaire + newsletter

 

Sujets relatifs
Formulaire conditionnelA quoi sert ce script?
Blocage accès formulaire & update auto[RESOLU] [VBS] Probleme script vbs
mon formulairepetit script pour eteindre un serveur du reseau
Access - Case à cocher dans formulaire pour création d'un étatverification de mon formulaire
[perl]script sauvegarde, telnet 
Plus de sujets relatifs à : script formulaire + newsletter


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR