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érer des données d'une base sql


Sujet :

C++

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut Récupérer des données d'une base sql
    Bonjour,

    J'utilise Visual Studio 2008, mon projet est en MFC basé sur des boites de dialogue.

    J'utilise easyphp pour créer une base de donnée qui s'appelle "Client", pour le moment j'ai créer q'une seule table "nd", composée de 8 champs dont "ND" qui contient un numéro de téléphone et "MotDePasse" qui contient un mot de passe.

    Ce que je veux faire, c'est faire un système d'identification. Lorsqu'on tape un numéro de tel et son mot de passe associé, mon programme va le chercher dans la base, s'il trouve le numéro de tel et que le mot de passe est correct, affiche les données contenu dans les autres champs de ma table.

    Pas de souci pour me connecter dans la base, mais je n'arrive pas à m'identifier. J'ai essayer de faire ca comme cela, mais ca fonctionne pas, j'ai plus d'idées, aidez-moi 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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    //Déclaration du pointeur de structure de type MYSQL
        MYSQL mysql;
        //Initialisation de MySQL
        mysql_init(&mysql);
        //Options de connexion
        mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"option");
     
        //Si la connexion réussie...
        if(mysql_real_connect(&mysql,"localhost","root","","Client",0,NULL,0))
        {
    		MessageBox(TEXT("Connecté à la bdd !"),TEXT("Connexion Réussi"),MB_ICONINFORMATION);
     
    		//Requête qui sélectionne ND dans ma table nd
    		mysql_query(&mysql, "SELECT ND FROM nd");
     
            //Déclaration des pointeurs de structure
            MYSQL_RES *result = NULL;
            MYSQL_ROW row = NULL;
     
            //On met le jeu de résultat dans le pointeur result
            result = mysql_use_result(&mysql);
     
           //Tant qu'il y a encore un résultat ...
            while ((row = mysql_fetch_row(result)))
            {
    			if(Ident==mysql_query(&mysql, "SELECT ND FROM nd"));
    			{
    				MessageBox(TEXT("Réussi !"),TEXT("Réussi"), MB_ICONINFORMATION);
    			}
    			else
    			{
    				MessageBox(TEXT("Erreur dans l'identification !"),TEXT("Erreur"),MB_ICONERROR);
    			}
     
    		}
     
     
            //Libération du jeu de résultat
            mysql_free_result(result);
     
            //Fermeture de MySQL
            mysql_close(&mysql);
        }
        else  
    	{
            MessageBox(TEXT("Une erreur s'est produite lors de la connexion à la BDD !"),TEXT("Erreur"),MB_ICONERROR);
    		mysql_close(&mysql);		//Fermeture de MySQL
        }

  2. #2
    Membre chevronné
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Par défaut
    Je ne sais pas quelle lib tu utilises, mais tu ne sélectionne pas de base de donnée dans ton code, tu ne fais que te connecter.

    Il faut que tu sélectionne une base de donnée avant de pouvoir travailler dessus.

    (l'équivalent de mysql_select_db de php)

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    J'utilise la librairie de mysql et pour moi je selectionne une base avec ce code : le champ ND de la base nd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //Requête qui sélectionne ND dans ma table nd
    mysql_query(&mysql, "SELECT ND FROM nd");

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par yuyunho Voir le message
    J'utilise la librairie de mysql et pour moi je selectionne une base avec ce code : le champ ND de la base ND
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //Requête qui sélectionne ND dans ma table nd
    mysql_query(&mysql, "SELECT ND FROM nd");
    Ici tu sélectionne un champs dans une table. Mais avant cela, tu as besoin de spécifier sur quelle base tu veux travailler. Je pense que c'est ce que Julien voulait dire.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    Je ne sais pas si c'est cela qu'il a voulu dire mais je me connecte à ma base "Client" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       if(mysql_real_connect(&mysql,"localhost","root","","Client",0,NULL,0))
        {
    		MessageBox(TEXT("Connecté à la bdd !"),TEXT("Connexion Réussi"),MB_ICONINFORMATION);
     
    		//Requête qui sélectionne ND dans ma table nd
    		mysql_query(&mysql, "SELECT ND FROM nd");
    ...

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Ok. Où est ton problème exactement : mysql_query échoue ou elle réussit mais le résultat est vide ?

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    mysql_query n'échou pas mon probleme c'est que j'essaye de faire un test pour savoir si les valeurs entrées dans un CString Ident sont identiques
    au champs ND de ma table nd. Si c'est pas possible dans ce sens, alors faire un test si Ident est identique à une des mes tables de ma base.

  8. #8
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Quel est le type de Ident ?

  9. #9
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    Qu'est ce que tu entends pas type?
    C'est un CString !

  10. #10
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Oui c'était bien ça la question.
    Et que te renvoie mysql_query comme valeur ?
    Autre pistes : pourquoi ne pas faire un "SELECT ND FROM nd WHERE ND="+Ident ? Tu construit ta requête pour n'extraire que l'enregistrement ayant la bonne valeur.

  11. #11
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    je crois que msql_query me renvoi un 1 et j'ai déjà essayer de faire comme ca et d'ailleur je fais ca comme ca maintenant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	mysql_query(&mysql, "SELECT ND FROM nd WHERE ND=Ident");
    mais je sais pas comment faire ensuite, pour faire un test ou afficher le champ

  12. #12
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par yuyunho Voir le message
    je crois que msql_query me renvoi un 1
    Je ne connais pas l'interface de msql. Mais tu devrais regarder comment récupérer le résultat de ta requête : en particulier le type qui t'est renvoyé et comment le convertir vers un CString pour faire ta comparaison.

    Citation Envoyé par yuyunho Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	mysql_query(&mysql, "SELECT ND FROM nd WHERE ND=Ident");
    Ca ne peut pas marcher car Ident sera considéré comme littéral mais la valeur de ta variable ne sera pas prise en compte. Je verrais, pour rester avec les MFC, plutôt ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            CString str_req("SELECT ND FROM nd WHERE ND=");
            str_req+="'"+Ident+"'";
    	mysql_query(&mysql, static_cast<LPCTSTR>(str_req));
    Citation Envoyé par yuyunho Voir le message
    mais je sais pas comment faire ensuite, pour faire un test ou afficher le champ
    Si je comprend le code que tu as précédemment posté, il suffirait de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(mysql_fetch_row(result)){
    // alors on a trouvé au - un enregistrement -> OK
    }
    else{
    // aucun enregistrement ne correspond -> KO
    }

  13. #13
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    Je comprends pas entièrement ton code mais ça me met ses erreurs là:

    '+' binaire*: aucun opérateur trouvé qui accepte un opérande de partie gauche de type 'const char [2]' (ou il n'existe pas de conversion acceptable)

    et

    'mysql_query'*: impossible de convertir le paramètre 2 de 'LPCTSTR' en 'const char *'

  14. #14
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        CStringA str_req("SELECT ND FROM nd WHERE ND=");//, on déclare une chaine de caracère sur char
        str_req+="'"+CStringA(Ident)+"'";// on concatène les chaines. Ident est CString qui - si tu es en mode unicode - est une CString<wchar_t>
        mysql_query(&mysql, static_cast<LPCTSTR>(str_req));//static_cast permet d'appeler l'opérateur de conversion de CStringA qui retourne un const char*

  15. #15
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    ok merci d'accord
    mais n'empeche que j'ai ces 2 erreurs que j'ai cité juste au-dessus

  16. #16
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Avec le nouveau code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        CStringA str_req("SELECT ND FROM nd WHERE ND=");//, on déclare une chaine de caracère sur char
        str_req+="'"+CStringA(Ident)+"'";// on concatène les chaines. Ident est CString qui - si tu es en mode unicode - est une CString<wchar_t>
        mysql_query(&mysql, static_cast<LPCTSTR>(str_req));//static_cast permet d'appeler l'opérateur de conversion de CStringA qui retourne un const char*

  17. #17
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    Effectivement JuilienDuSud je ne sélectionnais pas de base de donnée, je faisait que me connecter. Donc avec ce code je selectionne ma base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //On détermine la base de donnée utilisée
    			mysql_query(mysql,"use Client;");
    le truc c'est que jsuis toujours bloqué. Je n'arrive toujours pas a "m'identifier"
    Pour rappeler ce que je veux faire, c'est de voir si le contenu de ma CString est dans ma base. Enfin plutot dans ma table !

Discussions similaires

  1. Export des données d'une base SQL Server 2000 SP3
    Par zanyth dans le forum Administration
    Réponses: 5
    Dernier message: 25/03/2009, 17h18
  2. IMPORTANT : Récupérer des données sur une base de donnee externe
    Par _cece dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 17/10/2008, 16h57
  3. importer des données d'une base SQL vers word?
    Par Jayceblaster dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 26/10/2007, 09h43
  4. [MySQL] Récupérer des données d'une base
    Par sisssi_1 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 18/05/2006, 15h15
  5. [Excel] Récupérer des données d'une base Access
    Par FoxDeltaSierra dans le forum Excel
    Réponses: 8
    Dernier message: 03/09/2005, 10h22

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