Autor Beitrag
bruce185
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

winXP
D7 Ent
BeitragVerfasst: Do 12.04.07 02:12 
Hallo,
also ich habe mir die MySQL Direct von Delphi-Treff geloadet und habe eine verbindung zu meinem Datenbank hergestellt.
Jetzt möchte ich prüfen ob dieser Nick was ich in Edit1 eingeben habe, schon in der Datenbank existiert?

In PHP funktioniert es so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
  $sql1 = "SELECT * FROM usertable WHERE (nick = '".$_POST["nick"]."')"; 
  $result = mysql_query ($sql1); 
      if (mysql_num_rows ($result) > 0
        echo "Vorhanden";
      }


Ich hab das mal so in Delphi probiert:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm4.Button3Click(Sender: TObject);
var
    exx: boolean;
    nickvorhanden: string;
begin
  nickvorhanden := 'SELECT * FROM user WHERE nick="'+Edit1.Text+'"';
  FResult := FMysql.query(nickvorhanden, true, exx);
  if assigned(FResult) then
  begin
    ShowMessage('Nick vorhanden')
  end
  else begin
    ShowMessage('Nick nicht vorhanden')
  end;
end;


leider zeigt er mir immer an, dass dieser Nick schon Vorhanden ist obwohl das nicht der fall ist.
Ich wäre euch sehr dankbar, wenn ihr mein problem lösen könnt.

Vielen Dank.

MfG
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 12.04.07 07:21 
Moin!

Nimm doch einfach das Statement

ausblenden SQL-Anweisung
1:
Select count(nick) from usertable where Nick = '<der Nick>'					


und prüf, ob count(nick) > 0 ist.
Sollte dies der Fall sein, ist der Nick bereits vorhanden.
Ist das Ergebnis jedoch 0 (oder kleiner), kann er verwendet werden.

LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
bruce185 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

winXP
D7 Ent
BeitragVerfasst: Do 12.04.07 07:52 
Danke Dir.
Aber wie überprüfe ich das in Delphi auf Button klick?
Sry, aber das möchte irgendwie nicht funktionieren.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Do 12.04.07 07:53 
Zeige mal den Code deiner onClick-Methode

_________________
Markus Kinzler.
bruce185 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

winXP
D7 Ent
BeitragVerfasst: Do 12.04.07 08:00 
Also ich habe das erst so probiert:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm4.Button3Click(Sender: TObject);
var
    exx: boolean;
    nickvorhanden: string;
begin
  nickvorhanden := 'SELECT * FROM user WHERE nick="'+Edit1.Text+'"';
  FResult := FMysql.query(nickvorhanden, true, exx);
  if assigned(FResult) then
  begin
    ShowMessage('Nick vorhanden')
  end
  else begin
    ShowMessage('Nick nicht vorhanden')
  end;

end;


Also so tu ich ja die Daten an MySQL Query schicken, aber ich weiss dann nicht, wie ich überprüfen kann ob der Nick schon vorhanden ist.

Danke schonmal.

MfG
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Do 12.04.07 08:15 
Welche Komponenten verwendest du?
BTW. Pass mal die Abfrage an, wie user profile iconZeitGeist87 es geschrieben hat. Das Problem an deinem Code ist das ein leeres Ergebnis auch eine Ergebnis.

_________________
Markus Kinzler.
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 12.04.07 08:15 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm4.Button3Click(Sender: TObject);
var
    exx: boolean;
    nickvorhanden: string;
begin
  nickvorhanden := 'SELECT count(Nick) from user WHERE nick="'+Edit1.Text+'"';
  FResult := FMysql.query(nickvorhanden, true, exx);
  if assigned(FResult) then
  begin
    if FResult.fieldbyname('count(Nick)').asinteger > 0 then
     //User existiert
    else
     //User existiert nicht
  end
  else begin
   //fehlermeldung
  end;

end;


da ich das FResult-Object nicht kenn, kann ich anhand des fieldbyname... nur raten.

LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Do 12.04.07 08:16 
Mh, sieht für mich so aus, als wäre das Result immer vorhanden, auch wenns leer ist (macht ja auch irgendwo Sinn). Wie bereits geschrieben solltest du eine Count-Abfrage machen und das Ergebnis auf 0 prüfen.

_________________
Bravery calls my name in the sound of the wind in the night...
bruce185 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

winXP
D7 Ent
BeitragVerfasst: Do 12.04.07 08:28 
Danke Dir.
Irgendwie wird das aber nicht erkannt: FResult.fieldbyname.
Also fieldbyname ist unbekannt.
Ich benutze MySQL direct units eine Verbindung ist ja bereits aufgebaut, also wenn ich mein Prog starte, wird sofort eine Verbindung positiv aufgebaut.
Aber irgendwie komme ich da nicht weiter mit dem überprüfen...

EDIT: Könnte das damit gehn:
FResult.FieldIndexByName ?

EDIT: Ich hab das mal so probiert:

ausblenden Delphi-Quelltext
1:
if FResult.FieldIndexByName('count(nick)') > 0 then					


Der zeigt mir dann immer das an, was in der else drin steht, wenn ich hinter die klammer ein . setze, dann kommt ein fehler das der quelltext nicht angezeigt werden kann.

MfG


Zuletzt bearbeitet von bruce185 am Do 12.04.07 08:45, insgesamt 1-mal bearbeitet
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Do 12.04.07 08:40 

_________________
Markus Kinzler.
bruce185 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

winXP
D7 Ent
BeitragVerfasst: Do 12.04.07 08:52 
Danke.
Das habe ich ja schon längst durch, nur weiss ich nicht wie ich überprüfen kann ob ein Nick schon eingetragen wurde.
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 12.04.07 08:55 
Nachdem ich mir das Tut angesehen habe:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm4.Button3Click(Sender: TObject);
var
    exx: boolean;
    nickvorhanden: string;
begin
  nickvorhanden := 'SELECT count(Nick) from user WHERE nick="'+Edit1.Text+'"';
  FResult := FMysql.query(nickvorhanden, true, exx);
  if assigned(FResult) then
  begin
    if strtoint(FResult.fieldValue(0)) > 0 then
     //User existiert
    else
     //User existiert nicht
  end
  else begin
   //fehlermeldung
  end;

end


LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
bruce185 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

winXP
D7 Ent
BeitragVerfasst: Do 12.04.07 09:00 
Hey Cool, darauf wäre ich nicht gekommen, funktioniert sehr gut.

Vielen Dank.

MfG
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 12.04.07 09:02 
Strtoint ist normalerweise da nicht so toll, da wir aber eine Abfrage absetzen, bei der nur ein Integer zurückgegeben wird, macht das Ganze hier keine Probleme!

LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
bruce185 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

winXP
D7 Ent
BeitragVerfasst: Do 12.04.07 12:04 
Hallo nochmal,
ich wollte mal wissen wie ich überprüfen kann ob dieser Nick mit dem PW übereinstimmt?

Ich hab das mal so probiert:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
nickvorhanden := 'SELECT * from user WHERE nick="'+Edit1.Text+'" AND passwort="'+Edit2.Text+'"';
FResult := FMysql.query(nickvorhanden, true, exx);
if strtoint(FResult.fieldValue(0)) > 0 then
begin

end;


Sry, aber ich versteh das irgendwie nicht :cry:
Wäre sehr nett, wenn das mir einer erklären könnte.

Vielen Dank.

MfG
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 12.04.07 12:07 
user profile iconbruce185 hat folgendes geschrieben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
nickvorhanden := 'SELECT count(IDSPALTE) from user WHERE nick="'+Edit1.Text+'" AND passwort="'+Edit2.Text+'"';
FResult := FMysql.query(nickvorhanden, true, exx);
if strtoint(FResult.fieldValue(0)) > 0 then
begin
 //existiert
end
else
begin
 //existiert nicht
end;



LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
bruce185 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

winXP
D7 Ent
BeitragVerfasst: Do 12.04.07 13:30 
Danke Dir für Deine hilfe.
Der führt irgendwie immer nur die Else aus, also ist Existiert nicht obwohl der Nick mit dem PW in der Datenbank existiert.
Wenn ich count(id) weg mache und stattdesen ein * setze, dann bekomme ich die fehlermeldung das es kein gültiger integerwert ist.
Wieso eigentlich?

MfG
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 12.04.07 13:57 
Wenn du Select * from.. machst, und das erste Feld einen String behinhaltet, z. B. Mustermann, dann kann das natürlich in keinen Integer umgewandelt werden.

Count(Spalte) gibt dir immer einen Integer zurück.

Zeig doch mal den Datensatz!

LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
einfach112
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 168

xp
del7
BeitragVerfasst: Do 04.11.10 10:43 
Hallo !
Leider ging es hier nicht weiter aber ich habe genau das gleiche problem ! ! !
es wird immer nur angezeigt exsistiert nicht !

aber was muss ich nun machen ! ?
Danke schonmal wie immer im voraus !
einfach112

_________________
sorry bin noob !