41Mag - Eviter les doublons dans une base de données MySQL

Eviter les doublons dans une base de données MySQL

Dans ce tutoriel, nous allons apprendre à éviter les doublons dans une base de données MySQL. Un script en PHP et MySQL permet de vérifier si le nouvel élément existe déjà dans la base de données. De cette manière, chaque élement d’un colonne de votre base de données sera unique.

Pour ce cours, nous allons prendre comme exemple une inscription à la NewsLetter de votre site internet. Cette inscription sera réaliser à partir d’un formulaire simple contenant un champ ou le visiteur entre son adresse eMail et un bouton Submit. Le formulaire sera envoyé vers notre script de vérification, il permettra de vérifier si l’adresse eMail existe déjà et si OUI de ne pas l’enregistrer dans la base de données afin d’éviter les doublons.

Ce tutoriel est décomposé en 5 parties :

  • Création de la base de données
  • Le formulaire d’enregistrement des adresses eMails
  • La vérification de la syntaxe de l’adresse eMail
  • Vérification que l’adresse n’existe pas déjà
  • L’enregistrement dans la base de données de la nouvelle adresse eMail

Création de la base de données et du formulaire

Dans ce premier chapitre, nous allons tous mettre en place pour notre script. Nous devrons créer une base de données servant à la collecte des adresse eMails ainsi qu’un formulaire qui transmettra à notre script les données collectées.

Création de la base de données MySQL

Pour créer notre base de données, nous utiliserons PhpMyAdmin. Pour commencer, il faut créer une nouvelle table dans votre base de données, nous appellerons cette table mail. cette table sera constitué de deux champs. Le champ ID ou l’on cochera l’auto-incrémentation, cette entrée ou champ sera de type MediumINT (Ce qui permettra l’indexation de 8 000 000 d’adresse mail).

Nous appellerons le deuxième champ adresse. Il sera de type TEXT

Création du formulaire de collecte d’adresse eMail

Nous aurons besoin d’un formulaire simple, un simple champ de texte suffira pour que vos visiteurs entrent leur adresse eMail et un bouton de type « SUBMIT » pour valider leur adresse eMail. Le formulaire sera envoiyé à notre script sur la page vérification.php. Ce fichier aura un double emploi, premièrement il devra vérifier que les données entre sont bien des adresse eMail et deuxièmement qu’elle n’existe pas dans une base de données (doublons).

1
2
3
4
<form action="verification.php" method="post">
<input type="text" value="Votre adresse eMail" name="adresse" onFocus="this.value=\'\'" />
<input type="submit" value="Envoyer" />
</form>

La commande javaScript onFocus= »this.value=’ ‘ «  permet d’effacer, lorsqu’un visiteur clique sur le formulaire, la valeur par défaut – Dans ce formulaire la valeur par défaut est indiquer par la commande value= » » : Votre adresse eMail.

Vérification de la syntaxe de l’adresse eMail

La première étape sera de récupérer les données envoyées par le formulaire. Nous utiliserons les Expressions régulières en PHP pour vérifier la syntaxe de l’adresse eMail. Avant cette vérification de syntaxe, nous sécuriseront la variable récupéré du formulaire grâce aux fonctions PHP mysql_real_escape_string() et htmlspecialchars().

1
2
3
4
5
6
7
8
9
10
11
if(isset($_POST['adresse']))
{
$adresse = mysql_real_escape_string(htmlspecialchars($_POST['adresse']));
if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#i", $adresse))
{
$adresse_verif = 'ok';
}
else
{
$adresse_verif = 'invalide';
}

Dans la portion de script ci-dessus, à partir l’adresse récupéré nous créons une nouvelle variable $adresse_verif. Qui suivant si elle est valide ou non prend les valeurs correspondante à savoir ‘ok’ ou ‘invalide’.

Si l’adresse récuperé est invalide

Si l’adresse recupere est invalide alors nous retournons au formulaire sans rien enregister dans la base de données. (Script ci-dessous)

1
2
3
4
if($adresse_verif == 'invalide') /// Adresse invalide
{
<meta http-equiv="refresh" content="0; url=http://www.votre-site.fr/newsletter.html" />
}

Enregistrement de l’adresse si elle n’est pas déjà présente

Si l’adresse récupéré est valide alors la variable $adresse_verif possède la valeur ‘ok’. Des lors nous allons vérifier que cette adresse n’existe pas déjà dans notre base de données. Pour ce faire Nous allons chercher dans notre base de données si elle existe en comptant le nombre de fois ou l’adresse apparait. Si l’adresse apparait un nombre de fois STRICTEMENT INFÉRIEUR à 1 (<1) - Sois 0 fois - Alors nous pourrons l'enregistrer, par contre si elle apparais plus d'une fois (>1) il ne sers a rien de l’enregistrer de nouveau. De cette manière nous évitons les doublons dans notre base de données.

1
2
3
4
5
6
7
8
9
10
11
12
if($adresse_verif == 'ok')
{
 // Verification de l'adresse eMail - Est-elle deja enregistrer ????
 $adresse_nouvelle = "SELECT id FROM mail WHERE adresse='".$adresse."'";
 $resultat = mysql_query ($adresse_nouvelle);
 $nombre_adresse = mysql_num_rows($resultat);
 if($nombre_adresse < 1)
 {
   // Enregistrement de l'adresse mail dans la base de donnees Mail 
   mysql_query("INSERT INTO mail VALUES('',' " . $adresse . " ' ");
 }
}

Article du même thême : .

Copyright © 2013 | 41Mag. All rights reserved. Contact.
Integrated by Créa-troyes. Powered by WordPress.