IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Mise à jour d'enregistrement en évitant les doublons


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Mise à jour d'enregistrement en évitant les doublons
    Bonjour,
    J'ai créer une table 'utilisateur' dans laquelle les internautes mettent leurs informations personnelles :
    nom, prénom, téléphone, email, mot de passe...
    L'email et le mot de passe permettent à l'utilisateur du site de s'identifier. Lorsque ce dernier rempli son bulletin en ligne et le valide j'ai créé un comportement serveur qui vérifie le nouveau nom d'utilisateur afin d'éviter les doublons. En effet, 2 utilisateurs ne peuvent pas avoir le même email.
    Jusque là... pas de problème !
    La difficulté pour moi c'est de créer une page de mise à jour des informations personnelles de l'utilisateur qui ne lui permette pas de saisir un email déjà utilisé dans la table 'utilisateur'.
    j'utilise Dreamweaver et j'ai des notions de débutant en PHPMysql. Quelqu'un pourrait me dire comment faire cette page de modification d'information qui, à l'aide d'une requête, ne permette pas à l'internaute de saisir dans le champ "email" une adresse email déjà présente dans la table?
    Merci d'avance pour votre aide...

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Essai de faire la même vérification que dans la création d'un nouveau utilisateur.
    Tu vérifier si existe, affiche message d'erreur sinon modification.
    A la recherche d'un film : http://chercher-un-film.com

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par m4riachi Voir le message
    Essai de faire la même vérification que dans la création d'un nouveau utilisateur.
    Tu vérifier si existe, affiche message d'erreur sinon modification.
    Il n'y a pas cette option dans dreamweaver. Il faut rentrer du code manuellement et c'est un code trop compliqué pour moi.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Il suffit de poser un index UNIQUE sur la colonne portant l'e-mail de l'utilisateur. Si celui-ci saisit un e-mail déjà présent dans cette colonne, l'insertion ou la modification sera refusée et une erreur retournée par le SGBD. Au logiciel ensuite de gérer cette erreur pour, entre autres, la traduire en message clair à l'utilisateur.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Voila un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    mysql_connect("localhost", "root", "");
    mysql_select_db("taBase");
     
    if(isset($_POST['email']))
    {
           $query = mysql_query("select * from taTable where email ='" . $_POST['email'] . "'");
           if(mysql_num_rows($query) == 0)
           {
                   modification
           }
            else
           {
                   echo 'email existe deja';
           }
    }
    A la recherche d'un film : http://chercher-un-film.com

  6. #6
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    gaffe aux injections SQL quand même...

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par m4riachi Voir le message
    Voila un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    mysql_connect("localhost", "root", "");
    mysql_select_db("taBase");
     
    if(isset($_POST['email']))
    {
           $query = mysql_query("select * from taTable where email ='" . $_POST['email'] . "'");
           if(mysql_num_rows($query) == 0)
           {
                   modification
           }
            else
           {
                   echo 'email existe deja';
           }
    }
    Oui, merci. Ton code fonctionne mais mon problème est double :
    1/empêcher qu'un utilisateur puisse prendre le même mail qu'un autre.
    Pour cette problématique tu m'as donné la solution. MERCI !!!!!!
    2/permettre à l'utilisateur de modifier ses informations personnelles sans changer son email... déjà présent dans la table...
    Et c'est là que ça se complique car avec ton code l'email de l'utilisateur étant présent dans la base il empêche la modification des autres infos lorsqu'on le laisse tel quel. Le message en réponse à la mise à jour des autres infos serait :
    email existe déjà !!!

    Je ne trouve pas de solution... Je débute en PHPMysql et mon projet est un peu trop ambitieux
    Merci pour ton aide

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Encore une fois, la contrainte d'unicité de l'e-mail est à poser dans la BDD par un index UNIQUE.

    Une mise à jour des infos d'un utilisateur, si l'e-mail est toujours unique dans la table, qu'il ait été changé ou non par l'utilisateur, le SGBD ne retournera pas d'erreur et les infos seront modifiées normalement.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Tu pourras crée un champ caché ou tu peu maître soit id soit l’ancien email, comme ça tu pourras ajouter une vérification dans ta requette.

    html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="hidden" name="id" value="<?php echo $id;?>" />
    php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query = mysql_query("select * from taTable where email ='" . $_POST['email'] . "' and id <>'" . $_POST['id'] . "'");
    et comme a dit Madfrix
    gaffe aux injections SQL quand même...
    A la recherche d'un film : http://chercher-un-film.com

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    J'avoue que je ne comprend pas bien.
    J'ai quand même trouvé une solution en ajoutant une variable $nom :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $email = (iSset($_POST['inscrit_email']) ? $_POST['inscrit_email'] : NULL);
    $nom = (iSset($_POST['inscrit_nom']) ? $_POST['inscrit_nom'] : NULL);
    
    et je fais la requête de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sql =  " SELECT COUNT(*) AS resultat FROM eu_inscrit WHERE inscrit_email = '".$email."' AND inscrit_nom!= '".$nom."' ";
    $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    
            $result = mysql_fetch_assoc($req);
      if($result['resultat'] == 0)
            {
    Alors je fais un update de la base !!

    Sinon il renvoit une page d'erreur :
    "Mail existe déjà"
    ... et (sous-entendu) ce n'est pas le tien !

    Voilà.. Je ne sais pas si vous comprenez et si ça vous semble pas trop "amateur". Ça marche et ça a l'air fiable !
    Merci pour votre aide...
    Faut vraiment que je prenne des cours de phpMysql !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 12/12/2011, 18h07
  2. Réponses: 2
    Dernier message: 25/09/2006, 18h24
  3. Réponses: 3
    Dernier message: 21/08/2006, 11h03
  4. Réponses: 4
    Dernier message: 03/05/2006, 17h26
  5. Réponses: 1
    Dernier message: 25/11/2005, 12h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo