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

C# Discussion :

Récupération des données d'un user après authentification Windows Form C# [Débutant]


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Novembre 2018
    Messages : 9
    Par défaut Récupération des données d'un user après authentification Windows Form C#
    Bonjour je travail sur un projet en c# et il faut dire que je débute.
    je dispose de 3 forms : Form_login, Form_Inscription, Form_PageClient et une Base de Données Access.
    Je voudrait que quand le client entre son nom utilisateur et mot de passe sur Form_login,
    les infos de l'user qui s'est deja inscris sur Form_Inscription soit recuperer depuis la base access,
    et afficher dans Form_PageClient comme suit :
    Nom, Prenom , Sexe, DateNaissance etc.

    Mon probleme se situe au niveau de la recuperation des données a faire passer sur form_PageClient
    en fonction de l'User et le mot de passe sur Form_login.

    Merci je joins mon bout de code pour analyse.
    MainForm.cs

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 978
    Par défaut
    Il faut fournir le code de l'utilisateur connecté à ta page Form_PageClient et refaire une requête pour lire ses infos.

    Plusieurs remarques :
    1. Passer par une requête paramétrée.
    Si je tape "' or 1=1 /*" dans l'une de tes zones de saisies, je peux rentrer sans connaître le mot passe

    2. Ta requête recherche un membre avec un login et et un mot de passe précis. Du coup les tests que tu fais dans la boucle while sont inutiles.
    Une meilleure pratique est de rechercher uniquement sur le login et d'avoir un mot de passe hashé.
    Si tu ne trouve pas d'enregistrement pour le login, tu bloques
    Si le hash du password ne correspond pas au hash en base, tu bloques
    Ne jamais dire si c'est le login ou le mot de passe qui n'est pas bon. Toujours dire qu'au moins l'un des deux est incorrect sans dire lequel

    3. Ta connexion est en dur et ne fonctionnera pas sur un autre poste que le tien.

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Novembre 2018
    Messages : 9
    Par défaut
    Citation Envoyé par popo Voir le message
    Il faut fournir le code de l'utilisateur connecté à ta page Form_PageClient et refaire une requête pour lire ses infos.

    Plusieurs remarques :
    1. Passer par une requête paramétrée.
    Si je tape "' or 1=1 /*" dans l'une de tes zones de saisies, je peux rentrer sans connaître le mot passe

    2. Ta requête recherche un membre avec un login et et un mot de passe précis. Du coup les tests que tu fais dans la boucle while sont inutiles.
    Une meilleure pratique est de rechercher uniquement sur le login et d'avoir un mot de passe hashé.
    Si tu ne trouve pas d'enregistrement pour le login, tu bloques
    Si le hash du password ne correspond pas au hash en base, tu bloques
    Ne jamais dire si c'est le login ou le mot de passe qui n'est pas bon. Toujours dire qu'au moins l'un des deux est incorrect sans dire lequel

    3. Ta connexion est en dur et ne fonctionnera pas sur un autre poste que le tien.

    Merci Bien pour vos remarques , je constate que j'ai du boulot,

    1- Concernant les requêtes paramétrées j'ai du mal a comprendre véritablement leurs fonctionnement.
    Je sais bien qu'ils sont la clé de mon code mais ou les positionnées ?

    2-Pour la boucle While je fais aussi la même remarque.

    3-Pour la connexion ce n'est qu'un test , je compte créer une Base de Données MySql par la suite.

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    /*
     
    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Windows.Forms;
    using System.Data.OleDb;
    using System.Text;
    using System.Threading.Tasks;
    using System.Linq;
    using System.Data;
     
    namespace LeSphinx
    {
     
    	public partial class LeSphinx_Login : Form
    	{
     
    		public LeSphinx_Login()
    		{
     
    			//
    			// The InitializeComponent() call is required for Windows Forms designer support.
    			//
    			InitializeComponent();
     
     
    			//
    			// TODO: Add constructor code after the InitializeComponent() call.
    			//
    		}
     
    // **************Ma difficulté se touve dans ce bout de code
     
    		void UserVaLiderClick(object sender, EventArgs e)
    		{
    	// declaration des variables
    			//**verification de saisie des données authentification de  l'utilisateur**/
     
    			 string user = textBox1.Text;
    			 string mdp = textBox2.Text;
    			 int x = 0;
     
    				// connection a la base de donnée access
     
    			    OleDbConnection odc = new OleDbConnection();
    				odc.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\ASUS PC\Documents\SharpDevelop Projects\LeSphinx\KingBD1.accdb;Persist Security Info=False;";
    			    DataTable dt = new DataTable();
     
    			    // recherche dans la table les infos
     
    			    OleDbCommand cmd = new OleDbCommand("select membres_user,membres_mdp from membres where membres_user='" + textBox1.Text + "' and membres_mdp='" + textBox2.Text + "'", odc);
    			    OleDbDataAdapter oda = new OleDbDataAdapter(cmd);
    			    cmd.Parameters.AddWithValue("@ membres_user", user);
    			    cmd.Parameters.AddWithValue("@ membres_mdp", mdp);
     
    			    // generer une exception erreur si probleme avec la base si probleme d'authenfication
    		 try 
    		{
     
     
    				    // ouvre la connection a la Base */
    			    	odc.Open();
    			        //accède a la table
    			        oda.Fill(dt);
     
    			        //parcours la listes des users
    			        OleDbDataReader or = cmd.ExecuteReader();
     
                    if (or.HasRows == true) 
     
                    {
                    		// test de l'user
                    	or.Read();
                    	if (or["membres_user"].ToString() == user)
                    	{
     
    // **************Je ne sais pas comment récuperer les infos (nom , prenom, etc)  du client ici , et comment une requete parametré peut m'aidé?
     
                    //affiche la page de l'utilisateur
     
                    LeSphinx_Profile lp = new LeSphinx_Profile();
    			    lp.Show();
     
    			    //si ok authentifier vider les textbox
    			    textBox1.Text="";
    			    textBox2.Text="";
     
     
                    }
                    else
                    {
                    		label1.Text= "User ou mot de passe incorrect";
                    }
     
     
                    }               	
                    }
     
     
    			    catch (Exception ex) 
    			    {
    			    	MessageBox.Show(ex.Message);
    			    }
    			    finally
    			    {
    			        odc.Close();
    			    }
     
     
    		}
    	}
    }

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 978
    Par défaut
    Pour la requête paramétrée, il ne faut pas d'espace entre l'arobase et le nom du paramètre et surtout il faut s'en servir dans la requête :
    Note que cette requête reprend ton exemple, mais il faudrait rechercher sur le login uniquement et stocker un hash du password (point 2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    OleDbCommand cmd = new OleDbCommand("select membres_user,membres_mdp from membres where membres_user=@membres_user and membres_mdp=@membres_mdp", odc);
    OleDbDataAdapter oda = new OleDbDataAdapter(cmd);
    cmd.Parameters.AddWithValue("@membres_user", user);
    cmd.Parameters.AddWithValue("@membres_mdp", mdp);
    Pour la connexion, que ce soit Access, MySQL ou tout autre SGBDR, ce n'est jamais une bonne idée de mettre la chaine de connexion en dur dans le code.
    Donc ma remarque reste la même.

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Novembre 2018
    Messages : 9
    Par défaut
    Citation Envoyé par popo Voir le message
    Pour la requête paramétrée, il ne faut pas d'espace entre l'arobase et le nom du paramètre et surtout il faut s'en servir dans la requête :
    Note que cette requête reprend ton exemple, mais il faudrait rechercher sur le login uniquement et stocker un hash du password (point 2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    OleDbCommand cmd = new OleDbCommand("select membres_user,membres_mdp from membres where membres_user=@membres_user and membres_mdp=@membres_mdp", odc);
    OleDbDataAdapter oda = new OleDbDataAdapter(cmd);
    cmd.Parameters.AddWithValue("@membres_user", user);
    cmd.Parameters.AddWithValue("@membres_mdp", mdp);
    Pour la connexion, que ce soit Access, MySQL ou tout autre SGBDR, ce n'est jamais une bonne idée de mettre la chaine de connexion en dur dans le code.
    Donc ma remarque reste la même.

    Oulaaa !!! je commence a tourné un peu en rond

    1- Stp c'est quoi mettre "une chaine de connexion en dur dans un code", désolé je débute je le fais peut être sans le savoir.
    2- J'ai un peu fouiné après tes remarques jai essayé de passer des valeurs en paramètre " si on peut appeler ça comme ça,
    mais je suis me suis entrainer un peu mais je rencontre un autre problème
    "l'index se trouve en dehors des limites du tableau"
    j'ai crée une class que je met en paramètre pour récupérer mes infos sur l'utilisateur qui se connecte,
    lors du passage a la form Profile j'obtient cette erreur. "l'index se trouve en dehors des limites du tableau"

    Voici mes différents codes

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    namespace LeSphinx
    {
    	/// <summary>
    	/// Description of Client.
    	/// </summary>
    	public class Client
    	{
    		private string nom;
    		private string prénoms;
    		private string dateNais;
    		private string age;
     
    		public Client()
    		{}
     
     
    		public string Nom
    		{
    			get { return this.nom; }
    			set { this.nom = value; }
    		}
     
    		public string Prénoms
    		{
    			get { return this.prénoms; }
    			set { prénoms = value; }
    		}
     
    		public string DateNais
    		{
    			get { return this.dateNais; }
    			set { this.dateNais = value; }
     
    		}
    		public string Age
    		{
    			get { return this.age; }
    			set { this.age = value; }
    		}
    		}
     
    	}

  6. #6
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Novembre 2018
    Messages : 9
    Par défaut
    Form "Page de connexion"

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    		void UserVaLiderClick(object sender, EventArgs e)
    		{
    	// declaration des variables
    			//**verification de saisie des données authentification de  l'utilisateur**/
     
    			 string user = textBox1.Text;
    			 string mdp = textBox2.Text;
    			 int x = 0;
     
    				// connection a la base de donnée access
    				OleDbConnection odc = new OleDbConnection();
    			 odc.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\ASUS PC\Documents\SharpDevelop Projects\LeSphinx\KingBD1.accdb;Persist Security Info=False;";
    			 DataTable dt = new DataTable();
     
    			    // recherche dans la table les infos
     
    			    cmd = new OleDbCommand("select membres_user,membres_mdp from membres where membres_user='" + user + "' and membres_mdp='" + mdp + "'");
    			    cmd.Connection = odc;
    			    oda = new OleDbDataAdapter(cmd);
    			    cmd.Parameters.AddWithValue("@membres_user", user);
    			    cmd.Parameters.AddWithValue("@membres_mdp", mdp);
     
    			    // generer une exception erreur si probleme avec la base si probleme d'authenfication
    		 try 
    		{
     
    				    // ouvre la connection a la Base */
    			    	odc.Open();
    			        //accède a la table
    			        oda.Fill(dt);
     
    			        //parcours la listes des users
    			        or = cmd.ExecuteReader();
     
                    if (or.HasRows == true) 
     
                    {
                    		// test de l'user
                    		or.Read();
                    	if (or["membres_user"].ToString() == user)
                    	{
    						//Charger la page de l'utilisateur
    						Client c = new Client();
     
                    		// transfert des données de user
                    		c.Nom = or.GetString(1);
                    		c.Prénoms = or.GetString(2);
                    		//lp.DateNais = or.GetString(3);
                             //lp.Age = or.GetString(4);
     
    				        //affiche la page de l'utilisateur
    				        lp = new LeSphinx_Profile(c);
    				        lp.Show();
     
    			    //si authentifier vider les textbox
    			    user="";
    			    mdp="";
     
                    }
                    else
                    {
                    		label1.Text = "User ou mot de passe incorrect";
                    }	
                    }               	
                    }
     
     
    			    catch (Exception ex) 
    			    {
    			    	MessageBox.Show(ex.Message);
     
    			    }
    			    finally
    			    {
     
    			        odc.Close();
    			    }
     
     
    		}
    J'ai mis un point d'arret et l'erreur est généré a ce niveau
    "index se trouve en dehors des limites du tableau

  7. #7
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Novembre 2018
    Messages : 9
    Par défaut
    Et enfin la fin Form "Profile du client "

    qui affiche les infos !!!
    c'est mon tout 1er execice soyez indulgent svp

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    namespace LeSphinx
    {
    	/// <summary>
    	/// Description of LeSphinx_Profile.
    	/// </summary>
    	public partial class LeSphinx_Profile : Form
    	{
     
    		public LeSphinx_Profile(Client c)
     
    		{ 
     
    			//
    			// The InitializeComponent() call is required for Windows Forms designer support.
    			//
    			InitializeComponent();
     
    			label2.Text = c.Nom;
    			label4.Text = c.Prénoms;
    			//
    			//
    			// TODO: Add constructor code after the InitializeComponent() call.
    			//
     
    		}
     
    	}
    }
    ben voila ... je souhaite savoir d'ou voir l'erreur et comment y remedier . Merci a vous

  8. #8
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 978
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    odc.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\ASUS PC\Documents\SharpDevelop Projects\LeSphinx\KingBD1.accdb;Persist Security Info=False;";
    ConnectionString = Chaine de connexion !!!
    Le chemin C:\Users\ASUS PC\Documents\SharpDevelop Projects\LeSphinx\KingBD1.accdb est inscrit tel quel dans ton code et n'existera pas sur un autre poste que le tien.
    Il vaut mieux mettre ta base dans un répertoire qui sera toujours présent sur n'importe quel ordinateur genre AppData.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

    Et ça m'étonnerai que tu plantes sur lp.Show() avec ce code.
    Je dirai plutôt que tu plantes sur c.Prénoms = or.GetString(2);

    Les indice commencent toujours à 0 donc ceci serait mieux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    c.Nom = or.GetString(0);
    c.Prénoms = or.GetString(1);

    Encore une fois ce test est inutile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (or["membres_user"].ToString() == user)
    Puisque ta requête précise déjà que tu recherche ce user (requête qui n'est toujours pas paramétrée alors que je t'ai fourni le code !!!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where membres_user='" + user + "'
    De plus, cette requête va chercher un user et un password et les affectes à des propriétés Nom et Prénoms.


    Au passage, évite les accents dans le nommage de tes variables, propriétés, classes, etc... (pas de prénoms)

  9. #9
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Novembre 2018
    Messages : 9
    Par défaut
    Wahou il faut dire que j'ai pas fait attention au code que vous aviez insérer désolé!! erreur de debutant.
    1- Connexion en dure !!! merci pour l'info je vais y remédier

    2- En effet le problème se trouvais au niveau de c.Prénoms = or.GetString(2);
    J'ai refait le test en enlevant les codes superflu et ça passe !!! je sais maintenant comment passer une valeur en Paramètre !!!
    Merci Beaucoup pour les orientations j'apprends plus quand recevant du déjà "Pret"

    3- En avançant je rencontre d'autres difficultés… les variables placés en paramètre ne récupèrent que le login et le mot de passe qui s'affiche sur le profile de l'utilisateur , or ce sont les infos de l'utilisateur contenu dans la base que je veux afficher !!!

    Dans votre 1ere remarque vous dit de Transmettre le code de l'utilisateur connecté a ma form Client[

    Par quel méthode passer?
    et comment récupère ton les données des lignes d'une table en fonction de la 1ere colonnes?

    je sais que j'en pose beaucoup des questions
    Merci pour la compréhension!!!

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    void UserVaLiderClick(object sender, EventArgs e)
    		{
    	// declaration des variables
    			//**verification de saisie des données authentification de  l'utilisateur**/
     
    			 string user = textBox1.Text;
    			 string mdp = textBox2.Text;
    			 int x = 0;
     
     
    			    // recherche dans la table les infos
     
    			    cmd = new OleDbCommand ("select membres_user,membres_mdp from membres where membres_user=@membres_user and membres_mdp=@membres_mdp");
    			    cmd.Connection = odc;
    			    oda = new OleDbDataAdapter(cmd);
    			    cmd.Parameters.AddWithValue("@membres_user", user);
    			    cmd.Parameters.AddWithValue("@membres_mdp", mdp);
     
    			    // generer une exception erreur si probleme avec la base si probleme d'authenfication
    		 try 
    		{
     
    				    // ouvre la connection a la Base */
    			    	odc.Open();
    			        //accède a la table
    			        oda.Fill(dt);
    			        //parcours la listes des users
    			        or = cmd.ExecuteReader();
     
                        if (or.HasRows) 
     
                    {
                        	or.Read();
     
    						//Charger la page de l'utilisateur
    							Client c = new Client();
     
                    		// transfert des données de user
                    		c.Nom = or.GetString(0);
                    		c.Prenoms = or.GetString(1);
     
    				      //affiche la page de l'utilisateur
    				        lp = new LeSphinx_Profile(c);
    				        lp.Show();
     
    			            //si authentifier vider les textbox
    			            user="";
    			            mdp="";
     
                        	}
                    }
                    else
                    {
                    		label1.Text = "User ou mot de passe incorrect";
                    }	
     
                    }
     
     
    			    catch (Exception ex) 
    			    {
    			    	MessageBox.Show(ex.Message);
     
    			    }
    			    finally
    			    {
     
    			        odc.Close();
    			    }
     
     
    		}

  10. #10
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 978
    Par défaut
    Citation Envoyé par King Tchang
    3- En avançant je rencontre d'autres difficultés… les variables placés en paramètre ne récupèrent que le login et le mot de passe qui s'affiche sur le profile de l'utilisateur , or ce sont les infos de l'utilisateur contenu dans la base que je veux afficher !!!
    J'ai déjà répondu à cette question par
    "De plus, cette requête va chercher un user et un password et les affectes à des propriétés Nom et Prénoms."
    Il suffit, de rajouter le nom et et le prénom dans la clause SELECT de votre requête actuelle ou bien de faire une autre requête pour aller chercher ces info dans la fiche profil.
    Je pense qu'il devient nécessaire que vous lisiez un tutoriel sur les bases de données et SQL.


    Citation Envoyé par King Tchang
    Dans votre 1ere remarque vous dit de Transmettre le code de l'utilisateur connecté a ma form Client[

    Par quel méthode passer?
    Exactement comme tu l'a déjà fait, en fournissant un paramètre au constructeur de la fiche profil.

  11. #11
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Novembre 2018
    Messages : 9
    Par défaut
    Citation Envoyé par popo Voir le message
    J'ai déjà répondu à cette question par
    "De plus, cette requête va chercher un user et un password et les affectes à des propriétés Nom et Prénoms."
    Il suffit, de rajouter le nom et et le prénom dans la clause SELECT de votre requête actuelle ou bien de faire une autre requête pour aller chercher ces info dans la fiche profil.
    Je pense qu'il devient nécessaire que vous lisiez un tutoriel sur les bases de données et SQL.



    Exactement comme tu l'a déjà fait, en fournissant un paramètre au constructeur de la fiche profil.

    MERCI ET 1000 FOIS MERCI
    J'avais tout juste la réponse devant mes yeux et pourtant je n'y voyait rien.
    Vos orientations étaient très claire il suffisait de lire et de comprendre aussi !!!
    mais le mal du débutant m'avait aveuglé.

    J'ai juste modifié ma clause select comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cmd = new OleDbCommand ("select * from membres where membres_user=@membres_user and membres_mdp=@membres_mdp", odc);
    			    oda = new OleDbDataAdapter(cmd);
    			    cmd.Parameters.AddWithValue("@membres_user", user);
    			    cmd.Parameters.AddWithValue("@membres_mdp", mdp);
    ,
    en faisant appel a mes paramètres et ça marche!!!
    Chui très heureux et l'essentiel c'est que j'ai compris le fonctionnement .
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    void UserVaLiderClick(object sender, EventArgs e)
    		{
    			// declaration des variables
    			//**verification de saisie des données authentification de  l'utilisateur**/
     
    			string user = textBox1.Text;
    			string mdp = textBox2.Text;
    			int x = 0;
     
    			DataTable dt = new DataTable();
     
    			// recherche dans la table les infos
    			// generer une exception erreur si probleme avec la base si probleme d'authenfication
    			try
    			{
                    cmd = new OleDbCommand ("select * from membres where membres_user=@membres_user and membres_mdp=@membres_mdp", odc);
    			    oda = new OleDbDataAdapter(cmd);
    			    cmd.Parameters.AddWithValue("@membres_user", user);
    			    cmd.Parameters.AddWithValue("@membres_mdp", mdp);
    				// ouvre la connection a la Base */
    				odc.Open();
     
    				// Charge la Classe des valeurs en parametres
    				Client c = new Client();
    				c.ClientCon = "Bonjour !!!";
    				//accède a la table
    				oda.Fill(dt);
    				//parcours la listes des users
    				or = cmd.ExecuteReader();
     
    				if (or.HasRows)
     
    				{
     
    					or.Read();
     
     
    						// Si user est correct afficher la barre de progres et afficher la forme suivante quand la barre sera complete
    						for (x = 1; x <= 500; x++)
    						{
    							label2.Visible = true;
    							circularProgressBar1.Visible = true;
    							circularProgressBar1.Value=x;
    							circularProgressBar1.Maximum = 100;
    							circularProgressBar1.Update();
    						}
    						label2.Visible= false;
    						circularProgressBar1.Visible = false;
     
    						// transfert des données de user
    						c.User = user;
    						c.Nom = or.GetString(1);
    						c.Prenoms= or.GetString(2);
    						c.DateNais = or.GetString(3);
    						c.Sexe = or.GetString(7);
     
    						//affiche la page de l'utilisateur
    						lp = new LeSphinx_Profile(c);
    						lp.Show();
     
    						//si authentifier vider les textbox
    						user="";
    						mdp="";	
    				}
    				else
    				{
    					label1.Text = "User ou mot de passe incorrect";
    				}
     
    			}
    			catch (Exception ex)
    			{
    				MessageBox.Show(ex.Message);
     
    			}
    			finally
    			{	
    				odc.Close();
    			}
     
    		}
    Nom : Capture1.PNG
Affichages : 703
Taille : 6,6 KoNom : Capture2.PNG
Affichages : 679
Taille : 11,7 Ko

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 02/08/2018, 13h50
  2. Réponses: 2
    Dernier message: 07/05/2010, 10h30
  3. récupération des données aprés le formatage
    Par jean sami dans le forum Windows
    Réponses: 2
    Dernier message: 20/05/2009, 10h55
  4. Réponses: 1
    Dernier message: 17/06/2008, 12h02
  5. Récupération des données après restauration du système avec Ghost
    Par digital prophecy dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 12/06/2007, 14h05

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