Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 14 sur 14
  1. #1
    Membre habitué
    Inscrit en
    novembre 2007
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : novembre 2007
    Messages : 372
    Points : 128
    Points
    128

    Par défaut Utilisateur connecté à la base

    Bonjour,

    J'ai une application qui utilise une base MySQL, j'ai rencontré un problème suite à l'idée de journaliser les opérations réalisées sur mes tables.
    Le problème c'est comment je peux avoir l'utilisateur réalisant une telle opération (dans une session).

    Merci pour les propositions.

  2. #2
    Expert Confirmé

    Homme Profil pro Florent SIEBERT
    Administrateur de base de données
    Inscrit en
    juin 2012
    Messages
    601
    Détails du profil
    Informations personnelles :
    Nom : Homme Florent SIEBERT
    Âge : 25
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : juin 2012
    Messages : 601
    Points : 2 622
    Points
    2 622

    Par défaut

    Bonjour,

    Je suppose qu'il ne s'agit pas du user MySQL (l'application se connecte toujours avec le même utilisateur) ?
    C'est un user Windows que vous voulez récupérer ? Le user de votre application ?

    Détaillez un peu

  3. #3
    Membre habitué
    Inscrit en
    novembre 2007
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : novembre 2007
    Messages : 372
    Points : 128
    Points
    128

    Par défaut

    Merci pour la réponse.

    Je cherche comment récupérer le user de l'application.
    J'ai une table d'utilisateurs, je veux l'identifiant de l'utilisateur connecté à l'application.

  4. #4
    Modérateur
    Avatar de CinePhil
    Homme Profil pro Philippe Leménager
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    13 713
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Leménager
    Âge : 50
    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 : 13 713
    Points : 25 575
    Points
    25 575

    Par défaut

    Ben il faut que ce soit l'application qui connaisse cette information. Le SGBD ne pourra jamais le savoir tout seul !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
    Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
    « 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 habitué
    Inscrit en
    novembre 2007
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : novembre 2007
    Messages : 372
    Points : 128
    Points
    128

    Par défaut

    comment je peux faire ça ?

  6. #6
    Modérateur
    Avatar de CinePhil
    Homme Profil pro Philippe Leménager
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    13 713
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Leménager
    Âge : 50
    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 : 13 713
    Points : 25 575
    Points
    25 575

    Par défaut

    Classiquement, l'identifiant de l'utilisateur de l'application est un truc qu'on balade de page en page et/ou en session et/ou en cookie car on a souvent besoin de lui pour vérifier les droits de l'utilisateur sur le contenu affiché ou sur les actions possibles de la page affichée ou justement pour attacher du contenu saisi à l'utilisateur qui l'a saisi.

    Mais ça concerne plus le langage applicatif que MySQL qui ne fait que stocker des données.

    Quel langage utilisez-vous pour développer l'application ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur.
    Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
    « 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 !

  7. #7
    Membre habitué
    Inscrit en
    novembre 2007
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : novembre 2007
    Messages : 372
    Points : 128
    Points
    128

    Par défaut

    Merci pour la réponse.

    J'utilise le langage Java pour le développement d'une application Desktop. L'utilsateur est autorisé à se connecter après correspondance entre les informations saisies (login et mot de passe) et celles enregistrées dans la base de données

  8. #8
    Expert Confirmé
    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    octobre 2005
    Messages
    1 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : octobre 2005
    Messages : 1 593
    Points : 2 739
    Points
    2 739

    Par défaut

    Comme il s'agit d'une application en réseau local, le plus simple :
    après connexion par l'utilisateur, enregistrer son nom dans une variable String "public static" de la classe qui sert à la connexion.
    Si la classe s'appelle par exemple "MyConnexionClass" et la variable "USER" alors on accède depuis n'importe quel endroit de l'application avec
    MyConnexionClass.USER
    ·· −· −−· ·· ·−· ··− −− ·· −− ··− ··· −· −−− −·−· − ·
    · − −·−· −−− −· ··· ··− −− ·· −− ··− ·−· ·· −−· −· ··
    D'abord qu'il marche. Ensuite qu'il soit rapide. Enfin qu'il soit agréable à utiliser.
    First, make it work. Then, make it fast. Finally, make it user-friendly.
    Erst, mach', dass es funktioniert. Dann, mach', dass es schnell geht, Zum Schluss mach' es benutzerfreundlich.

  9. #9
    Membre habitué
    Inscrit en
    novembre 2007
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : novembre 2007
    Messages : 372
    Points : 128
    Points
    128

    Par défaut

    Merci Népomucène pour la réponse,

    je n'ai pas compris bien ce que tu as écrit,

    tous les utilistateurs de l'application se connecte à la base de données par un seul identifiant par exemple "root", mais j'ai enregistré les utilsateurs dans une table pour les identifier sur un écran avant de les permettre de manipuler les données de la base.

    Ici je veux si l'utilisateur x est identifié je cherche comment récupérer cette information?

  10. #10
    Expert Confirmé
    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    octobre 2005
    Messages
    1 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : octobre 2005
    Messages : 1 593
    Points : 2 739
    Points
    2 739

    Par défaut

    tu déclares la variable USER comme public static dans la classe de connexion
    (ou une autre classe de l'application)

    l'utilisateur "Arthur" est identifié au moment de sa connexion
    tu fais :
    MyConnexionClass.USER = "Arthur"

    plus tard quand tu dois identifier qui a fait quoi en enregistrant des données,
    par exemple "qui a modifié une fiche client"
    tu peux inclure le nom de l'utilisateur dans ta requête UPDATE
    en mettant à jour un champ contenant le nom de l'utilisateur
    ce nom d'utilisateur tu le récupères dans MyConnexionClass.USER
    ·· −· −−· ·· ·−· ··− −− ·· −− ··− ··· −· −−− −·−· − ·
    · − −·−· −−− −· ··· ··− −− ·· −− ··− ·−· ·· −−· −· ··
    D'abord qu'il marche. Ensuite qu'il soit rapide. Enfin qu'il soit agréable à utiliser.
    First, make it work. Then, make it fast. Finally, make it user-friendly.
    Erst, mach', dass es funktioniert. Dann, mach', dass es schnell geht, Zum Schluss mach' es benutzerfreundlich.

  11. #11
    Membre habitué
    Inscrit en
    novembre 2007
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : novembre 2007
    Messages : 372
    Points : 128
    Points
    128

    Par défaut

    Est ce que vous pouvez me donner un exemple du code pour la classe MyConnexionClass pour que je puisse comprendre ton idée.

    Merci.

  12. #12
    Expert Confirmé
    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    octobre 2005
    Messages
    1 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : octobre 2005
    Messages : 1 593
    Points : 2 739
    Points
    2 739

    Par défaut

    Tu as déjà un écran pour que l'utilisateur puisse se connecter
    tu récupère donc son nom pour contrôler son existence dans la base (en concordance avec le mot de passe)

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class MyConnexion {
    ....
    méthodes diverses
    ...
    private void userControl(String nomUtilisateur, String motDePasse) {
      ...
      contrôle dans la base de nomUtilisateur + motDePasse
      ...
      // tu ajoutes : 
      USER = nomUtilisateur ;
    }
    public static String USER;     // USER est visible dans toute ton application
    }
    dans une autre classe qui enregistre, par exemple, une fiche article :
    Code :
    1
    2
    String sql = "INSERT INTO Articles (Id, Label, User) VALUES (123,'bidule','" + MyConnexion.USER +"')";
    c'est le principe général de récupération de l'utilisateur en cours
    (pour le code réel il faut naturellement, utiliser des PreparedStatement pour les requêtes)
    ·· −· −−· ·· ·−· ··− −− ·· −− ··− ··· −· −−− −·−· − ·
    · − −·−· −−− −· ··· ··− −− ·· −− ··− ·−· ·· −−· −· ··
    D'abord qu'il marche. Ensuite qu'il soit rapide. Enfin qu'il soit agréable à utiliser.
    First, make it work. Then, make it fast. Finally, make it user-friendly.
    Erst, mach', dass es funktioniert. Dann, mach', dass es schnell geht, Zum Schluss mach' es benutzerfreundlich.

  13. #13
    Membre habitué
    Inscrit en
    novembre 2007
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : novembre 2007
    Messages : 372
    Points : 128
    Points
    128

    Par défaut

    Merci Népomucène pour le code, j'ai essayé avec ce code mais je n'arrive plus à accéder au variable "USER" par la classe de connexion!!!!!

  14. #14
    Expert Confirmé
    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    octobre 2005
    Messages
    1 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : octobre 2005
    Messages : 1 593
    Points : 2 739
    Points
    2 739

    Par défaut

    J'ai mal rédigé la déclaration de classe. Il faut la déclarer public :
    Code :
    public class MyConnexion { ...
    si tu n'y arrives toujours pas, poste le code où ça coince.
    ·· −· −−· ·· ·−· ··− −− ·· −− ··− ··· −· −−− −·−· − ·
    · − −·−· −−− −· ··· ··− −− ·· −− ··− ·−· ·· −−· −· ··
    D'abord qu'il marche. Ensuite qu'il soit rapide. Enfin qu'il soit agréable à utiliser.
    First, make it work. Then, make it fast. Finally, make it user-friendly.
    Erst, mach', dass es funktioniert. Dann, mach', dass es schnell geht, Zum Schluss mach' es benutzerfreundlich.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •