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++Builder Discussion :

Tester un champ dans une table mysql


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut Tester un champ dans une table mysql
    Dans mon formulaire d'inscription de nouveau client, j'aimerais tester pour savoir si le nom du client existe déjà....

    Je l'avais dejà fais en php ca donne le code ici
    // verification si le nom est deja pris et insertion des données dans la base de donnée
    $Resultat=mysql_query("SELECT * FROM `utilisateur` WHERE `login` LIKE '$login'");
    if (mysql_numrows($Resultat)==0)
    {
    echo "Merci de vous etre enregistrer.";
    $sql=mysql_query("INSERT INTO `utilisateur` VALUES('$login','$mdp1','$nom','$prenom','$adresse','$localite','$cp','$mail','$telephone')");

    }
    else
    echo "Désolé... ce login est déjà pris.;
    Donc j'ai essayer de l'adpater en c++ mais je suis calé ici :

    $Resultat=mysql_query("SELECT * FROM `utilisateur` WHERE `login` LIKE '$login'");
    if (mysql_numrows($Resultat)==0)

    Comment stocké ma valeur dans une variable et comment la comparer que je ne pense pas que la commande numrows soit inclue dans le c++...

  2. #2
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir,

    TSQLTable ou TSQLQuery ont une propriété RecordCount qu'il te faudrait très certainement utiliser.
    Ainsi, tu pourrais savoir si la requête sur un nom précis renvoie un enregistrement ou non (recordcount > 0) et agir en conséquence.

    N'hésites pas a observer toutes les propriétés et méthodes des objets que tu utilises ... (TSQLmachin_chose et autres...)

    @+

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut
    J'ai essayer ceci mais apprement je n'ai rien dans ma variable resultat

    NewClients->SQLQuery1->SQL->Clear();
    AnsiString sql1("SELECT * FROM `clients` WHERE `Nom` LIKE 'Edit2->Text'");
    NewClients->SQLQuery1 ->SQL->Add(sql1);
    Resultat=NewClients->SQLQuery1->RecordCount;
    NewClients->SQLQuery1->ExecSQL();
    ShowMessage(Resultat);
    if (Resultat==0)
    suite....
    Il m'indique tj 0 ... alors que j'ai plusieurs nom pareil dans ma table

  4. #4
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Salut,

    Il te faut d'abord exécuter ta requête SQL avant de récupérer la valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    NewClients->SQLQuery1->SQL->Clear();
    AnsiString sql1("SELECT * FROM `clients` WHERE `Nom` LIKE 'Edit2->Text'");
    NewClients->SQLQuery1 ->SQL->Add(sql1);
    NewClients->SQLQuery1->ExecSQL();
    int Resultat=NewClients->SQLQuery1->RecordCount;
    ShowMessage(IntToStr(Resultat));
    if (Resultat==0)
    suite...
    A+

    PS: Utiliser les balises code (# en haut, juste à droite de citation) et non citation lorsque tu postes du code! Ca aura pour but de mettre un peu de couleur

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut
    merci j'ai trouvé

    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
    void __fastcall TNewClients::Button1Click(TObject *Sender)
    {
    if (Edit2->Text != "")    // test pour savoir si le Nom est rempli
    {
      // test si le nom existe déjà dans la table
      AnsiString nom = Edit2->Text;
      NewClients->SQLQuery1->SQL->Clear();
      AnsiString sql1("SELECT * FROM `clients` WHERE `Nom` LIKE '"+nom+"'");
      NewClients->SQLQuery1 ->SQL->Add(sql1);
      Resultat=NewClients->SQLQuery1->RecordCount;
      NewClients->SQLQuery1->ExecSQL();
    	if (Resultat>0)
    	{
    	// test si le prenom existe déjà dans la table
    	AnsiString prenom = Edit3->Text;
    	NewClients->SQLQuery1->SQL->Clear();
    	AnsiString sql2("SELECT * FROM `clients` WHERE `Prenom` LIKE '"+prenom+"'");
    	NewClients->SQLQuery1 ->SQL->Add(sql2);
    	Resultat=NewClients->SQLQuery1->RecordCount;
    	NewClients->SQLQuery1->ExecSQL();
    		if (Resultat>0)
    		{
    		ShowMessage("Ce client existe déjà");
    		}
    		else
    		{
    			if (((Edit5->Text < '0') || (Edit5->Text > '9')) && (Edit5->Text !=""))  // test pour savoir si le numero ne contient que des chiffres
    			{
    			ShowMessage("Entrer un Numero valide");
    			}
    			else
    			{
    				if (((Edit6->Text < '0') || (Edit6->Text > '9')) && (Edit6->Text != ""))  // test pour savoir si le cp ne contient que des chiffres
    				{
    				ShowMessage("Entrer un Code postal valide");
    				}
    				else
    				{
    				AnsiString nom = Edit2->Text;
    				AnsiString prenom = Edit3->Text;
    				AnsiString adresse = Edit4->Text;
    				AnsiString num = Edit5->Text;
    				AnsiString cp = Edit6->Text;
    				AnsiString ville = Edit7->Text;
    				AnsiString tel = Edit8->Text;
    				AnsiString mail = Edit9->Text;
     
    				// On ajoute cet enregistrement a la table
    				AnsiString sql("INSERT INTO `clients` (`nom`,`prenom`,`Adresse`,`Numero`,`Cp`,`Ville`,`Telephone`,`Mail`) VALUES ('"+nom+"','"+prenom+"','"+adresse+"','"+num+"','"+cp+"','"+ville+"','"+tel+"','"+mail+"');");
     
    				NewClients->SQLQuery1->Close();
    				NewClients->SQLQuery1->SQL->Clear();
    				NewClients->SQLQuery1 ->SQL->Add(sql);
    				NewClients->SQLQuery1->ExecSQL();
     
    				// On affiche un message que le client a bien été rajouter et on reinitialise la table
    				ShowMessage("Nouveau client créer");
    				}
    		   }
    		}
    	 }
         	else
    		{
    			if (((Edit5->Text < '0') || (Edit5->Text > '9')) && (Edit5->Text !=""))  // test pour savoir si le numero ne contient que des chiffres
    			{
    			ShowMessage("Entrer un Numero valide");
    			}
    			else
    			{
    				if (((Edit6->Text < '0') || (Edit6->Text > '9')) && (Edit6->Text != ""))  // test pour savoir si le cp ne contient que des chiffres
    				{
    				ShowMessage("Entrer un Code postal valide");
    				}
    				else
    				{
    				AnsiString nom = Edit2->Text;
    				AnsiString prenom = Edit3->Text;
    				AnsiString adresse = Edit4->Text;
    				AnsiString num = Edit5->Text;
    				AnsiString cp = Edit6->Text;
    				AnsiString ville = Edit7->Text;
    				AnsiString tel = Edit8->Text;
    				AnsiString mail = Edit9->Text;
     
    				// On ajoute cet enregistrement a la table
    				AnsiString sql("INSERT INTO `clients` (`nom`,`prenom`,`Adresse`,`Numero`,`Cp`,`Ville`,`Telephone`,`Mail`) VALUES ('"+nom+"','"+prenom+"','"+adresse+"','"+num+"','"+cp+"','"+ville+"','"+tel+"','"+mail+"');");
     
    				NewClients->SQLQuery1->Close();
    				NewClients->SQLQuery1->SQL->Clear();
    				NewClients->SQLQuery1 ->SQL->Add(sql);
    				NewClients->SQLQuery1->ExecSQL();
     
    				// On affiche un message que le client a bien été rajouter et on reinitialise la table
    				ShowMessage("Nouveau client créer");
    				}
    		   }
    	   }
     
     
     
    }
     
    else
    {
    ShowMessage("Veuillez remplir la case Nom");
    }
     
     
     
    }
    Etant donné que j'utilise 2x les memes instructions a des moments differents es-ce possible de mettre ce code dans une fonction et d'apeller la fonction au moment voulu ?

  6. #6
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Heu, ca ne sert à rien de mettre 2 fois ton code

    As tu lu mon message précédent ???

    Une seule instruction pour tester si il y a un doublon est suffisant, c'est juste qu'il te faut placer ton ExecSQL au bon endroit !

    Revois mon post précent ...

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

Discussions similaires

  1. Modifier la valeur d'un champs dans une table mysql en fonction du temps.
    Par VaSss dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/05/2010, 11h30
  2. MySQL : Best Practice : Nombre de champ dans une table
    Par Ziquet dans le forum Requêtes
    Réponses: 3
    Dernier message: 29/05/2008, 16h18
  3. Tester l'existence d'un champ dans une table
    Par Raphael_74 dans le forum WebDev
    Réponses: 1
    Dernier message: 29/02/2008, 15h58
  4. [MySQL] Liste de champs dans une table MySQL
    Par Are-no dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/04/2007, 11h13
  5. Tester l'existence d'un champ dans une table
    Par Oluha dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 05/09/2005, 11h19

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