Savoir si valeur existe déjà dans BDD [Résolu]

Signaler
Messages postés
146
Date d'inscription
vendredi 28 mai 2010
Statut
Membre
Dernière intervention
21 juillet 2013
-
Messages postés
146
Date d'inscription
vendredi 28 mai 2010
Statut
Membre
Dernière intervention
21 juillet 2013
-
Bonjour à toutes et à tous,

Voilà j'explique mon problème.

En fait j'ai trouvé un petit code source sur le web, mais voilà je ne sais pas comment le modifie pour vérifier si l'adresse e-mail saisie existe déjà dans la basse de donnée: voici le bout de code et la bdd:

db name: a97
table: users

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
id | username | password | email | avatar | signup_date+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 | mgyver | psswd |mg@dom.tld | me.png | 1344880350 +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 | mgyves | psswe |mh@dom.tld | xx.png | 1344959188 +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


ET LE CODE SOURCE: FORMUALIRE INSCRIPTION::

<?php
include('config.php'); //Config BDD, ...
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link rel="stylesheet" media="all" type="text/css" href="/styles/<?php echo $skin; ?>/styles.css" />
        <title>Inscription</title>
    </head>
    
<?php
include "include/header.inc.php";

if(isset($_POST['username'], $_POST['password'], $_POST['passverif'], $_POST['email'], $_POST['avatar']) and $_POST['username']!='')
{
//On enleve lechappement si get_magic_quotes_gpc est active
if(get_magic_quotes_gpc())
{
$_POST['username'] = stripslashes($_POST['username']);
$_POST['password'] = stripslashes($_POST['password']);
$_POST['passverif'] = stripslashes($_POST['passverif']);
$_POST['email'] = stripslashes($_POST['email']);
$_POST['avatar'] = stripslashes($_POST['avatar']);
}
if($_POST['password']==$_POST['passverif'])
{
if(strlen($_POST['password'])>=6)
{

if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['email']))
{
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$email = mysql_real_escape_string($_POST['email']);
$avatar = mysql_real_escape_string($_POST['avatar']);
$dn = mysql_num_rows(mysql_query('select id from users where username="'.$username.'"'));
if($dn==0)
{
$dn2 = mysql_num_rows(mysql_query('select id from users'));
$id = $dn2+1;
//On enregistre les informations dans la base de donnee
if(mysql_query('insert into users(id, username, password, email, avatar, signup_date) values ('.$id.', "'.$username.'", "'.$password.'", "'.$email.'", "'.$avatar.'", "'.time().'")'))
{
$form = false;
?>

Vous avez bien été inscrit. Vous pouvez dorénavant vous connecter.

Se connecter

<?php
}
else
{
$form = true;
$message = 'Une erreur est survenue lors de l\'inscription.';
}
}
else
{
$form = true;
$message = 'Un autre utilisateur utilise déjà le nom d\'utilisateur que vous désirez.';
}
}
else
{
$form = true;
$message = 'L\'email que vous avez entré n\'est pas valide.';
}
}
else
{
$form = true;
$message = 'Le mot de passe que vous avez entré contient moins de 6 caractères.';
}
}
else
{
$form = true;
$message = 'Les mots de passe que vous avez entré ne sont pas identiques.';
}
}
else
{
$form = true;
}
if($form)
{
if(isset($message))
{
echo '
'.$message.'
&rarr; Retour
';
exit();
}
//On affiche le formulaire
?>




    <form action="signup.php" method="post">
        Veuillez remplir ce formulaire pour vous inscrire:

        

            <label for="username">Nom d'utilisateur</label>" />

            <label for="password">Mot de passe (6 caractères min.): </label>

            <label for="passverif">Mot de passe (vérification): </label>

            <label for="email">Email</label>" />

            <label for="avatar">Image perso(facultatif)</label>" />

            


    </form>


<?php
}

include "include/footer.inc.php";
?>

</html>




Merci d'avance ;)
A voir également:

2 réponses

Messages postés
224
Date d'inscription
vendredi 26 novembre 2010
Statut
Membre
Dernière intervention
11 juin 2013
7
Bonjour,

Avant l'insertion dans la bdd, il suffit d’exécuter un "select count... where email = $_POST['email']";
Si la requête renvoi 0 c'est bon, sinon c'est un doublon.

2ème possibilité est de mettre le champs email à 'unique' dans la base et d'encadrer la requête d'un try{}catch{}.
Messages postés
146
Date d'inscription
vendredi 28 mai 2010
Statut
Membre
Dernière intervention
21 juillet 2013
3
Merci pour la piste ;)

J'ai choisi la première:


<?php
include "config.php";

$sql = 'SELECT count(*) FROM matable WHERE email="'.mysql_escape_string($_POST['email']).'"';
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
$data = mysql_fetch_array($req);

if ($data[0] == 0) {
echo "OK";
}
else {
echo "existe deja";
}

?>

Bonne soirée.