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

Messages postés
149
Date d'inscription
vendredi 28 mai 2010
Dernière intervention
21 juillet 2013
- - Dernière réponse : MacGaliver
Messages postés
149
Date d'inscription
vendredi 28 mai 2010
Dernière intervention
21 juillet 2013
- 10 déc. 2012 à 16:18
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 ;)
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
224
Date d'inscription
vendredi 26 novembre 2010
Dernière intervention
11 juin 2013
3
Merci
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{}.

Merci cs_L0ci 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_L0ci
Messages postés
149
Date d'inscription
vendredi 28 mai 2010
Dernière intervention
21 juillet 2013
0
Merci
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.
Commenter la réponse de MacGaliver

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.