begin process at 2012 05 28 19:27:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Avertir lors de l'inscription si un email existe dèjà dans une base de données


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Avertir lors de l'inscription si un email existe dèjà dans une base de données

mercredi 27 juillet 2011 à 18:11:52 | Avertir lors de l'inscription si un email existe dèjà dans une base de données

honey87

Bonjour,
je suis entrain de créer un site web ou il y a des pages de contact ainsi que l'inscription à la newsletter..
je voudrais avertir l'internaute si l'email qui a tapé existe dans la base de données, comme quoi il doit le changer ..
SVP aidez moi, c'est très urgent

mercredi 27 juillet 2011 à 18:33:36 | Re : Avertir lors de l'inscription si un email existe dèjà dans une base de données

TychoBrahe

Salut,

Personne ne peux devinner ce que tu as déjà fait et donc personen ne peux t'aider dans l'état actuel des choses. Bref, post donc ton code et ensuite on te dira quoi faire.
mercredi 27 juillet 2011 à 18:47:25 | Re : Avertir lors de l'inscription si un email existe dèjà dans une base de données

honey87

Voilà mon code

Code d’insertion dans la BDD :

<?php
$base="ma_base";
$conn=mysql_connect("localhost","root","");
mysql_select_db($base);

$email=$_POST['email'];
$date = date("Y/m/d - H:i:s");


$sql='insert into newsletter VALUES("", "'.mysql_escape_string($email).'","'.mysql_escape_string($date).'")';

$req=mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
header("location:index.php");
?>


Code HTML:

<script language="javascript">
function focus_in_input(ch){
if(ch.value=='votre e-mail ici'){
ch.value='';
}
}

function blur_in_input(mp){
if(mp.value==''){
mp.value='votre e-mail ici';
}
}

function controler_formulaire(obj)
{
//controle mail
var mail=obj.email.value;
var pos_at=mail.indexOf('@')
if(pos_at==-1)
{
alert('Veuillez saisir correctement votre e-mail !');
obj.email.value='';
obj.email.focus();
return false;
}
else
{
var sous_mail=mail.substring(pos_at,mail.length)
var pos_p=sous_mail.indexOf('.')
if(pos_p==-1)
{
alert('Veuillez saisir correctement votre e-mail !');
obj.email.value='';
obj.email.focus();
return false;
}
}

return true;
}

function showMessage() {
alert ("Nous vous remercions pour votre inscription. Vous recevrez dorénavant notre newsletter.");
return true;
}

</script>

<form id="form2" name="form2" method="post" action="insertnews.php" onSubmit="return controler_formulaire(this)">
<label>
<input type="text" name="email" id="email" value="Votre e-mail ici" onclick="this.value =''" onblur="if(this.value==''){this.value='Votre e-mail ici'}" />
</label>
<label>
<input type="submit" name="envoyer2" id="envoyer2" value="Envoyer" onclick = "return showMessage()"/>
</label>
</form>
mercredi 27 juillet 2011 à 19:50:24 | Re : Avertir lors de l'inscription si un email existe dèjà dans une base de données

TychoBrahe

Et bien, avant de faire l'insertion, tu sélectionne les entrées dont l'email est celle que l'utilisateur fourni. S'il n'y a aucun retour alors tout est ok, et s'il y a un retour c'est que l'email est déjà présent dans la base. Ça représente un mysql_query, un mysql_num_rows() et quelques petit truc triviaux, rien de bien méchant. Où est le problème ?
mercredi 27 juillet 2011 à 20:19:49 | Re : Avertir lors de l'inscription si un email existe dèjà dans une base de données

cod57

bonsoir
un truc comme ça
a++

Code PHP :
<?php 
if(isset($_POST['email']) && !empty($_POST['email'])){
  
  $base="ma_base"; 
  $conn=mysql_connect("localhost","root",""); 
  mysql_select_db($base); 
  //un peu de securité
  $email=mysql_real_escape_string($_POST['email']);
  $date = date("Y/m/d - H:i:s");
  //tu verifies
  $sql="select email from newsletter where email='".$email."' limit 1";
  $q=mysql_query($sql);
  
  if(mysql_num_rows($q)>0){
  //il y a une ligne donc
  echo '<a href="javascript:history.back();"><< Retour</a> Il semble que cette email soit déjà présent';
  mysql_close();
  }else{
  //nouveau on insere
  $sql="insert into newsletter VALUES(NULL,'".$email."','".$date."')"; 
  $req=mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 

  mysql_close();
  header('Location: index.php');exit;
  }

}else{
//si acces direct à la page sans passer par le formulaire
echo '<a href="javascript:history.back();"><< Retour</a> Poster un email';
}
?>


Bonne programmation !
jeudi 28 juillet 2011 à 10:01:04 | Re : Avertir lors de l'inscription si un email existe dèjà dans une base de données

honey87

Merci d'avoir répondre mais ça marche pas, j'ai copier la même chose sur mon fichier d'insertion mais quand je valide il me donne une autre page ou il ya un message de "La connexion a été réinitialisée" (comme si la page n'existe pas)
jeudi 28 juillet 2011 à 10:10:28 | Re : Avertir lors de l'inscription si un email existe dèjà dans une base de données

TychoBrahe

Bravo, vous venez d'illustrer parfaitement un problème récurent sur les forums de ce genre. Copier/coller un code sans le comprendre est la pire connerie à faire. Non seulement le débutant ne comprend rien, ne tire strictement aucune leçon de ceci et ne progresse pas, mais en plus ça ne fonctionne pas et/ou pose de nouveaux problèmes.

@honey87 : je t'invite à reprendre ton code d'origine et à le modifier par toi même en suivant les conseils que je t'ai donné et en t'inspirant de ce qu'a posté cod57.
jeudi 28 juillet 2011 à 10:39:15 | Re : Avertir lors de l'inscription si un email existe dèjà dans une base de données

honey87

mais pourquoi tout cela ?
il suffit juste de dire ta dernière phrase, pas besoin de jouer le rôle de d'un prof..
oui bravo parce que je suis qu'une infographiste.. et entrain de monter un site dynamique toute seule !!
jeudi 28 juillet 2011 à 10:55:37 | Re : Avertir lors de l'inscription si un email existe dèjà dans une base de données

coucou747

Administrateur CodeS-SourceS
Bonjour,

Plusieurs points sont importants :
TychoBrahe essaie de t'aider, il ne te donne pas de poisson, mais il t'explique comment pecher, c'est beaucoup plus efficace.
honey87 semble lutter et donc, il serait plus efficace soit de lui faire son truc (ce qui n'est pas le but de ce forum) soit de lui expliquer plus calmement comment faire, et pourquoi son code ne fonctionne pas.


<?php
$base="ma_base";
$conn=mysql_connect("localhost","root","");
mysql_select_db($base);

$email=$_POST['email'];
$date = date("Y/m/d - H:i:s");

// j'ai ajouté ça à ton code : le principe c'est : selectionner n'importe quelle ligne de ta db qui a pour email celui de l'utilisateur
$req=mysql_query('SELECT 1 from newsletter WHERE email="'.mysql_escape_string($email).'"') or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

if (mysql_num_rows($req) > 0){ // si la requete a des résultats, je renvoie vers une page d'erreur
header("location:error.php");
}


header("location:index.php");

$sql='insert into newsletter VALUES("", "'.mysql_escape_string($email).'","'.mysql_escape_string($date).'")';

$req=mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
header("location:index.php");
?>


Est-ce-que c'est correct ?

Cordialement,

Maxime
jeudi 28 juillet 2011 à 12:07:43 | Re : Avertir lors de l'inscription si un email existe dèjà dans une base de données

cod57

bonjour

TychoBrahe a raison j'aurai pas du poster le code ainsi mais bon comment expliquer puisque tu n'es pas vraiment programmeur donc quelques explications basiques

Mon code fonctionne parfaitement
je pense que ton problème vient de action=""
mais comme on a pas une vue de ton code cela reste une supposition ..., là je te donne un exemple d'un fichier sur lui même tu l'appelles par exemple inscription.php

tu controles déjà le mail par javascript c'est
une bonne chose tu pourras eventuellement faire un contrôle php mais restons simple

bien en soit il faut donc eviter

de se faire recopier son formulaire
de se faire spammer
de se faire injecter des hack dans la base

pour ta reflexion

Code PHP :
<?php
session_start();
/*on va faire des varibles serveur inaccessibles au client*/
$token=$_SESSION['token']=md5(date('mdYH').$_SERVER['REMOTE_ADDR']);
$_SESSION['validticket']=true;

if(isset($_POST['email']) && !empty($_POST['email']) && $_POST['email']!='Votre e-mail ici' && $_SERVER['REQUEST_METHOD']==='POST'){
       
  //cette petite protection evitera de te faire recopier ton formulaire
  //tu peux aussi envisager une image captcha si tu remarques du spam
    
  if(isset($_SESSION['token'])  && isset($_POST['token']) && $_POST['token']===$_SESSION['token']){
  
      $base="ma_base"; 
      $conn=mysql_connect("localhost","root",""); 
      mysql_select_db($base); 
      //un peu de securité
      $email=mysql_real_escape_string($_POST['email']);
      
      /*bon tu peux inserer la date ainsi mais c'est pas comme ça que l'on fait
      on insere direct dans un champs datetime avec la fonction now
      $sql="insert into newsletter VALUES(NULL,'".$email."',now())";
      si tu veux changer mais pour l'instant je laisse dans la forme basique
      */
      
      $date = date("Y/m/d - H:i:s");
      //tu verifies
      $sql="select email from newsletter where email='".$email."' limit 1";
      $q=mysql_query($sql);
      
      if(mysql_num_rows($q)>0){
      //il y a une ligne donc
      echo '<hr>Il semble que cette email soit déjà présent<hr>';
      //echo '<hr><a href="javascript:history.back();"><< Retour</a> Il semble que cette email soit déjà présent<hr>';
      }else{
      unset($_SESSION['validticket']);
      unset($_SESSION['token']); //anti refresh f5
      
      //nouveau on insere
      $sql="insert into newsletter VALUES(NULL,'".$email."','".$date."')"; 
      $req=mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
      echo '<hr>Merci '.$email.' vous êtes inscrit à présent<hr>';
      //echo '<hr><a href="javascript:history.back();"><< Retour</a> Merci '.$email.' vous êtes inscrit à présent<hr>';
      //header('Location: index.php');exit;   //il faut que se fichier existe
      }

   }else{
   //$token pas bon
   }

}else{
//si acces direct à la page sans passer par le formulaire
echo '<a href="javascript:history.back();"><< Retour</a> Poster un email';
}
?> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>
  </head>

<script language="javascript"> 
function focus_in_input(ch){ 
if(ch.value=='votre e-mail ici'){ 
ch.value=''; 
} 
} 

function blur_in_input(mp){ 
if(mp.value==''){ 
mp.value='votre e-mail ici'; 
} 
} 

function controler_formulaire(obj) 
{ 
//controle mail 
var mail=obj.email.value; 
var pos_at=mail.indexOf('@') 
if(pos_at==-1) 
{ 
alert('Veuillez saisir correctement votre e-mail !'); 
obj.email.value=''; 
obj.email.focus(); 
return false; 
} 
else 
{ 
var sous_mail=mail.substring(pos_at,mail.length) 
var pos_p=sous_mail.indexOf('.') 
if(pos_p==-1) 
{ 
alert('Veuillez saisir correctement votre e-mail !'); 
obj.email.value=''; 
obj.email.focus(); 
return false; 
} 
} 

return true; 
} 

function showMessage() { 
alert ("Nous vous remercions pour votre inscription. Vous recevrez dorÚnavant notre newsletter."); 
return true; 
} 

</script> 
  
</head>  
<body>
  </html>
  <form id="form2" name="form2" method="post" action="" onSubmit="return controler_formulaire(this)">  
  
  <input type="hidden" value="<?php echo $token;?>" name="token">
  
    <label>  
      <input type="text" name="email" id="email" value="Votre e-mail ici" onclick="this.value =''" onblur="if(this.value==''){this.value='Votre e-mail ici'}" />  
    </label>  
    <label>  
      <input type="submit" name="envoyer2" id="envoyer2" value="Envoyer" onclick = "return showMessage()"/>  
    </label>  
  </form>   
</body>

Code :
-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Jeu 28 Juillet 2011 à 11:43
-- Version du serveur: 5.1.36
-- Version de PHP: 5.2.11

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Base de données: `ma_base`
--

-- --------------------------------------------------------

--
-- Structure de la table `newsletter`
--

CREATE TABLE IF NOT EXISTS `newsletter` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `email` varchar(40) NOT NULL,
  `date` varchar(30) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

--
-- Contenu de la table `newsletter`
--

INSERT INTO `newsletter` (`id`, `email`, `date`) VALUES
(1, 'toto@free.fr', '2011/07/28 - 10:55:39'),
(2, 'titi@free.fr', '2011/07/28 - 10:57:15'),
(3, 'tata@free.fr', '2011/07/28 - 10:58:47'),
(4, 'tutu@free.fr', '2011/07/28 - 11:23:34'),
(5, 'tyty@free.fr', '2011/07/28 - 11:36:37'),
(6, 'to@free.fr', '2011/07/28 - 11:42:20');




j'ai testé en vitesse ça à l'air de tourner
pour la date je l'aurai saisie autrement mais bon c'est pas faux en soit ... pour pas créer
trop de confusion je laisse le script comme ça
mais j'ai laissé une explication dans le code

Bonne programmation !


Cette discussion est classée dans : base, email, existe, inscription, avertir


Répondre à ce message

Sujets en rapport avec ce message

verif existance dans bdd [ par cseagle ] Bonjour à tous,J'ai une table MySql membres qui contient les infos des membres. A l'inscription je vérifie si l'email existe déjà dans la base auquel formulaire html, base de données MySQL , mail par php [ par a_sophie ] Voilà, j'ai nune base de données sous MySQL, un formulaire html où une fois les champs remplis devront aller ds la base. Par contre par la suite je de Base de données, php et flux [ par benjimanweb ] J'aimerai savoir s'il est possible de créer un script permettant de voir ce que l'ordinateur verifie sur la base de données lorsque l'on clique sur le fonction mail [ par refkaben ] salut tous le monde!j'ai un formulaire d'inscription, si un membre vient de s'inscrire on lui envoi un mail lui demandant de me contacter, voila le co récupération donnée [ par sparh ] Bonjour à tous,Voilà, je crée une zone membre,une fois l'utilisateur inscrit je lui envoi un mail avec un lien pour valider son inscription. (ce lien Authentification [ par gabsia ] Salut J'ai un problème d'autentification: Je suis entrain de créer un site comme étant projet, Ce site dynamique : l'utilisateur doit s'y inscrire besoins d'aide svp [ par emillionclub ] Hello tout le monde, Quelqu'un peux-til m'aider svp? J'ai un probleme et je ne m'en sort pas, j'y comprend pas grand chose!Je souhaite faire un lien d Inscription et email d'acitvation [ par Elyianha ] Allo! en gros la, je crée un jeux online multiplayer..Je dois savoir comment, lors de l'inscription, une clé d'activation (un simple link a cliker) es Tri dans les résultats d'une requête pour éviter les doublons [ par Spartan ] Bonjour, c'est le première fois que je poste sur ce forum, il est probable que je pose une question à laquelle il a déjà été répondu (le moteur de rec Ne veut pas s'ajouter a la base de données [ par romain14g59 ] bonjour je vient d'esseyer de crer un script pour ajouter  des données dans ma base de données MYSQL a partir d'un formulaire mais quand je valide mon


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,730 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales