Envoyer eMail vers base de donnée

cs_a44icus Messages postés 31 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 23 mars 2013 - 27 août 2009 à 13:51
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 - 28 août 2009 à 09:33
Bonjour,

J'ai créé un formulaire tel que :
<form>










</form>


Ce formulaire sert à ce que les visiteurs du site envoient leur eMail s'ils le souhaite, pour par la suite recevoir des newsletters..
Mais j'aimerai avoir un peu d'aide concernant la parti php, si vous avez un peu de temps.

Merci

/////a44icus/////

3 réponses

Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
27 août 2009 à 16:59
Bonjour bonjour !

Et bien pour commencer tu pourrais suivre ce tutoriel qui va t'apprendre à te connecter à une base de donnée et a y envoyer des données...

http://www.siteduzero.com/tutoriel-3-14547-tp-un-livre-d-or.html

Bonne soirée !

_________________________________
Min iPomme
0
cs_a44icus Messages postés 31 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 23 mars 2013
27 août 2009 à 17:33
Merci pour ta réponse, super site pour apprendre

Mais j'ai un petit problème et je ne trouve pas la solution à celui ci.
Quand j'arrive sur le site ou quand je change de page, le formulaire s'envoie tout seul, donc ma base de donnée se remplit avec de ligne vide à chaque actualisation de page..

Voici mon code :

<script type="text/javascript">
function verif_formulaire()
{
  if(document.formulaire.eMailNews.value == "") {
   alert("Veuillez entrer votre adresse électronique!");
   document.formulaire.eMailNews.focus();
   return false;
  }
 if(document.formulaire.eMailNews.value.indexOf('@') == -1) {
   alert("Ce n'est pas une adresse électronique!");
   document.formulaire.eMailNews.focus();
   return false;
  }
}
</script>


<?php
$host = "xxxx";
$user = "xxxx";
$pass = "xxxx";
$bdd = "xxxx";

@mysql_connect($host,$user,$pass)
or die("Impossible de se connecter");
@mysql_select_db($bdd)
or die("Impossible de se connecter");
?>

<?php
mysql_query("INSERT INTO newsletters (eMail) VALUES('$eMailNews')");
mysql_close();
?>









Abonnement newsletters
Entrez votre email...


<form id="formulaire" name="formulaire" onSubmit="return verif_formulaire()">










</form>






/////a44icus/////
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
28 août 2009 à 09:33
Alors,

<?php
// j'ai mis la partie php en haut de la page, c'est mieux...

// Ici, quoi qu'il arrive, que le formulaire soit soumis ou non
// Tu va parcourir le code... C'est ca ton problème, il faut donc
// Mettre un test...
// quand ton utilisateur enverras son formulaire, 2 variables de formulaire serons soumises
// $_POST['eMailNews'] contenant le mail et $_POST['action'] contenant OK
// Alors que quand tu charge la page normalement ces variables sont vides...
// On va donc se servir de $_POST['action'] afin de savoir si le formulaire est soumis...
if(isset($_POST['action']) and $_POST['action']=="OK")
{	
// adresse de ta page pour redirection
$url = "tapage.php";
// Ici je te conseil de sécuriser un peut tout ca...
// Déjà l'utilisateur si il est malain peux contourner le javascript, ce serais pas mal
// donc de revérifier ce qu'il a envoyé...
$email = $_POST['eMailNews'];
// Si l'user n as pas entré de mail, on le redirige vers la page d'erreur avec le message 1
if($email == "")
{
 header( 'HTTP/1.1 301 Moved Permanently' );
 header( 'Location: ' . $url . '?erreur=1' );
 die('Redirection php');
}
// Ici on utilise un filtre préconcus par php, si le texte
// Ne correspond pas a un mail on entre dans le if
// et on redirige avec le message d erreur 2
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
header( 'HTTP/1.1 301 Moved Permanently' );
header( 'Location: ' . $url . '?erreur=2' );
die('Redirection php');
}
else
{
// Sinon si tout c bien déroulé... On insert et on redirige
// avec le message d erreur 0 qui correspondras pas réelement a un
// message d erreur
$host = "xxxx";
$user = "xxxx";
$pass = "xxxx";
$bdd = "xxxx";
@mysql_connect($host,$user,$pass)
or die("Impossible de se connecter");
@mysql_select_db($bdd)
or die("Impossible de se connecter");
mysql_query("INSERT INTO newsletters (eMail) VALUES('$eMailNews')");
mysql_close();

header( 'HTTP/1.1 301 Moved Permanently' );
header( 'Location: ' . $url . '?erreur=0' );
die('Redirection php');
}
}
?>

<script type="text/javascript">
function verif_formulaire()
{
  if(document.formulaire.eMailNews.value == "") {
   alert("Veuillez entrer votre adresse électronique!");
   document.formulaire.eMailNews.focus();
   return false;
  }
  // Nous pouvons utiliser un outil bien pratique pour vérifier des chaines de caractères
  // Les Regex ici on vérifie que le texte contenu dans le champ mail contient bien
  // En première position une lettre suivis d'autres lettres, . ou - _
  // ^[\w\-]+(\.[\w\-]+)*
  // Puis qu'il y a un arobase
  // @
  // Puis encore une série de lettre points - _
  // [\w\-]+(\.[\w\-]+)*
  // Et que le mail finis bien par un . qqch avec qqch 2 à 4 lettres
  // \.[\w\-]{2,4}$
  var regexpMail = /^[\w\-]+(\.[\w\-]+)*@[\w\-]+(\.[\w\-]+)*\.[\w\-]{2,4}$/;
  // si la regex exécutée sur la chaine de caractères retourne null, c'est qu'elle
  // ne corespond pas a un mail
  if(regexpMail.exec(document.formulaire.eMailNews.value) == null) {
   alert("Ce n'est pas une adresse électronique!");
   document.formulaire.eMailNews.focus();
   return false;
  }
  // Pour bien developer, il faut que ta fonction retourne quelquechose si c'est réussi
  return true;
}
</script>












Abonnement newsletters
Entrez votre email...



<form id="formulaire" name="formulaire" onSubmit="return verif_formulaire()">
















<!-- Ici j'ai ajouté la gestion de messages d'erreur php -->

<?php
// Lors de l'envois du formulaire, suivant les cas on as redirigé l'utilisateur vers les pages suivantes
// tapage.php?erreur=1 si il a pas entré de mail
// tapage.php?erreur=2 si il a entré un mail non valide
// tapage.php?erreur=0 si le formulaire a bien été soumis...
// Nous pouvons récuperer les bout d'url qui se trouvent après le point,
// d'interogation comme ca :
// $_GET['erreur] et cette variable contiendras ce qu'il y a après le =
// Pour plus de détail renseigne toi sur les variables d'url
if(isset($_GET['erreur']))
{
// En fonction de l'erreur message !
echo "
";
switch($_GET['erreur'])
{
case 0:
echo "Mail enregistré aves succès, merci !";
break;
case 1:
echo "Veuillez entrer une adresse mail, merci !";
break;
case 2:
echo "Veuillez entrer une adresse mail valide, merci !";
break;
default:
break;
}
echo "
";
}
?>

</form>





Hésite pas si tu comprends pas une partie du code...

_________________________________
Min iPomme
0
Rejoignez-nous