Comment éviter compte client existe 2fois
Résolu/Fermé
A voir également:
- Comment éviter compte client existe 2fois
- Créer un compte google - Guide
- Créer un compte gmail - Guide
- Supprimer compte instagram - Guide
- Comment savoir qui regarde mon compte facebook - Guide
- Créer un compte instagram sur google - Guide
9 réponses
Meoran
Messages postés
1562
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
206
Modifié par Meoran le 28/06/2011 à 16:55
Modifié par Meoran le 28/06/2011 à 16:55
Salut,
il faut mettre une contrainte d'unicité dans ta base de données, sur les champs que tu souhaites unique (login, adresse mail...)
il faut mettre une contrainte d'unicité dans ta base de données, sur les champs que tu souhaites unique (login, adresse mail...)
J'ai fais ça (partie du code premier message) :
{
if(($_POST['nom']) AND ($_POST['prenom']) AND ($_POST['adresse']) AND ($_POST['code_postale']) AND ($_POST['ville']) AND ($_POST['pays']) AND ($_POST['email']) AND ($_POST['mot_de_passe']) != null)
if (!mysql_fetch_row($_POST['email'])== null)
{
mail ($_POST['email'], $titre, $message, $header);
?>
et ça me marque l'erreur suivante :
Warning: mysql_fetch_row() expects parameter 1 to be resource, string given in ... on line 29
Que dois je faire ???
{
if(($_POST['nom']) AND ($_POST['prenom']) AND ($_POST['adresse']) AND ($_POST['code_postale']) AND ($_POST['ville']) AND ($_POST['pays']) AND ($_POST['email']) AND ($_POST['mot_de_passe']) != null)
if (!mysql_fetch_row($_POST['email'])== null)
{
mail ($_POST['email'], $titre, $message, $header);
?>
et ça me marque l'erreur suivante :
Warning: mysql_fetch_row() expects parameter 1 to be resource, string given in ... on line 29
Que dois je faire ???
Meoran
Messages postés
1562
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
206
28 juin 2011 à 16:57
28 juin 2011 à 16:57
Non, c'est dans la structure de ta bd que tu dois définir une contrainte d'unicité.
Quelque chose du genre :
ALTER TABLE "User"
ADD CONSTRAINT "Unique_Email" UNIQUE("Email");
Quelque chose du genre :
ALTER TABLE "User"
ADD CONSTRAINT "Unique_Email" UNIQUE("Email");
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Meoran
Messages postés
1562
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
206
28 juin 2011 à 17:03
28 juin 2011 à 17:03
Ce n'est pas en php que se définit ta contrainte d'unicité mais en SQL
MySQL permet directement de dire que chaque valeur du champ "mail" dans la bd ne doit se retrouver qu'une seule et unique fois au maximum.
Ceci se fait avec la commande du dessus.
Tu utilises phpMyAdmin ?
MySQL permet directement de dire que chaque valeur du champ "mail" dans la bd ne doit se retrouver qu'une seule et unique fois au maximum.
Ceci se fait avec la commande du dessus.
Tu utilises phpMyAdmin ?
j'ai trouvé dans bdd. Petit icône U.
Pour le mdp ça a marché mais pour l'email il marque :
#1170 - BLOB/TEXT column 'email' used in key specification without a key length
???
Pour le mdp ça a marché mais pour l'email il marque :
#1170 - BLOB/TEXT column 'email' used in key specification without a key length
???
Meoran
Messages postés
1562
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
206
Modifié par Meoran le 28/06/2011 à 17:13
Modifié par Meoran le 28/06/2011 à 17:13
Email est la clef primaire de ta table ?
Meoran
Messages postés
1562
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
206
Modifié par Meoran le 28/06/2011 à 17:11
Modifié par Meoran le 28/06/2011 à 17:11
Bien alors tu peux faire de deux façons :
- soit tu entres la commande du dessus (avec ton champ que tu souhaites rendre unique et la table qui va avec ) directement à l'endroit ou tu peux rentrer une commande SQL.
- ou tu peux le faire par interface graphique en cochant "unique" quelque part en face du champ voulu
(désolé peut pas être plus précis, pas phpmyadmin sous la main...)
- soit tu entres la commande du dessus (avec ton champ que tu souhaites rendre unique et la table qui va avec ) directement à l'endroit ou tu peux rentrer une commande SQL.
- ou tu peux le faire par interface graphique en cochant "unique" quelque part en face du champ voulu
(désolé peut pas être plus précis, pas phpmyadmin sous la main...)
Meoran
Messages postés
1562
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
206
28 juin 2011 à 17:12
28 juin 2011 à 17:12
(et il est idiot de mettre un mdp unique. Pourquoi interdirais tu à deux personnes différentes d'avoir le même mot de passe ??)
Meoran
Messages postés
1562
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
206
29 juin 2011 à 09:42
29 juin 2011 à 09:42
Bah non, il ne faut pas créer une contrainte d'unicité sur chaque, mais une contrainte d'unicité sur le couple, ce qui est tout à fait différent !
ALTER TABLE "User"
ADD CONSTRAINT "Unique_couple_emailmdp" UNIQUE("Email","mdp");
ce qui est tout à fait différent de :
ALTER TABLE "User"
ADD CONSTRAINT "Unique_Email" UNIQUE("Email");
ALTER TABLE "User"
ADD CONSTRAINT "Unique_mdp" UNIQUE("mdp");
ALTER TABLE "User"
ADD CONSTRAINT "Unique_couple_emailmdp" UNIQUE("Email","mdp");
ce qui est tout à fait différent de :
ALTER TABLE "User"
ADD CONSTRAINT "Unique_Email" UNIQUE("Email");
ALTER TABLE "User"
ADD CONSTRAINT "Unique_mdp" UNIQUE("mdp");
Pour ce qui est de l'unicité, je l'ai faite que sur l'email. Cela permet à deux clients différents de s'identifier avec deux email différents mais avec le même mdp.
Ca marche !
Par contre comment puis je faire pour récupérer cette unicité et afficher un message au client lorsque son email est déjà enregistré dans la bdd ?
Ca marche !
Par contre comment puis je faire pour récupérer cette unicité et afficher un message au client lorsque son email est déjà enregistré dans la bdd ?
Creutzou
Messages postés
550
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
30 mai 2013
30
Modifié par Creutzou le 29/06/2011 à 11:08
Modifié par Creutzou le 29/06/2011 à 11:08
salut,
C'est super grossier, mais je ferais quelque chose comme ça :
Tout vient à point à qui sait attendre
~~ Cr3u7z0u ~~
C'est super grossier, mais je ferais quelque chose comme ça :
$req = "select count(email) from masuperbetable where email='lenouvelemail'"; $nbmail = $PDO->query($req); if ($nbmail<1){ echo 'Mail unique'; }else{ echo 'mail deja present dans la base'; }
Tout vient à point à qui sait attendre
~~ Cr3u7z0u ~~
Meoran
Messages postés
1562
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
206
Modifié par Meoran le 29/06/2011 à 11:49
Modifié par Meoran le 29/06/2011 à 11:49
J'avoue c'est super grossier ^^. Mais ça marche ^^
Le plus propre serait de générer une erreur lors d'une tentative de viol de cette contrainte d'unicité (tu utilises PDO ?) et dans le traitement de cette erreur, tu affiches le message d'erreur voulu.
Le plus propre serait de générer une erreur lors d'une tentative de viol de cette contrainte d'unicité (tu utilises PDO ?) et dans le traitement de cette erreur, tu affiches le message d'erreur voulu.
Creutzou
Messages postés
550
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
30 mai 2013
30
29 juin 2011 à 11:42
29 juin 2011 à 11:42
comment tu ferais ça ? tu tenterais de mettre la nouvelle adresse, et de récupérer l'exception ?
Meoran
Messages postés
1562
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
206
29 juin 2011 à 11:53
29 juin 2011 à 11:53
Je répondrais ce soir, dsl, je suis au boulot là ^^
Mais promis je le ferais ^^
Mais promis je le ferais ^^
help !!!!
Je ne sais pas encore ce que j'ai foutu mais phpMyAdmin ne veut plus s'ouvrir. Il marque :
phpMyAdmin - Erreur
Erreur lors du démarrage de la session, veuillez vérifier les erreurs indiquées par PHP ou dans le fichier témoin du serveur web, et configurer PHP correctement.
De quoi parle t-il ? Je n'ai rien changé par rapport à quand ça marché ???
Je ne sais pas encore ce que j'ai foutu mais phpMyAdmin ne veut plus s'ouvrir. Il marque :
phpMyAdmin - Erreur
Erreur lors du démarrage de la session, veuillez vérifier les erreurs indiquées par PHP ou dans le fichier témoin du serveur web, et configurer PHP correctement.
De quoi parle t-il ? Je n'ai rien changé par rapport à quand ça marché ???