| Autor |
Beitrag |
bruce185
      
Beiträge: 283
winXP
D7 Ent
|
Verfasst: 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:
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) |
Ich hab das mal so in Delphi probiert:
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
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Do 12.04.07 07:21
Moin!
Nimm doch einfach das Statement
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 
      
Beiträge: 283
winXP
D7 Ent
|
Verfasst: 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
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Do 12.04.07 07:53
Zeige mal den Code deiner onClick-Methode
_________________ Markus Kinzler.
|
|
bruce185 
      
Beiträge: 283
winXP
D7 Ent
|
Verfasst: Do 12.04.07 08:00
Also ich habe das erst so probiert:
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
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Do 12.04.07 08:15
Welche Komponenten verwendest du?
BTW. Pass mal die Abfrage an, wie ZeitGeist87 es geschrieben hat. Das Problem an deinem Code ist das ein leeres Ergebnis auch eine Ergebnis.
_________________ Markus Kinzler.
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Do 12.04.07 08:15
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 else end else begin 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
      
Beiträge: 851
Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
|
Verfasst: 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 
      
Beiträge: 283
winXP
D7 Ent
|
Verfasst: 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:
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
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Do 12.04.07 08:40
_________________ Markus Kinzler.
|
|
bruce185 
      
Beiträge: 283
winXP
D7 Ent
|
Verfasst: 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
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Do 12.04.07 08:55
Nachdem ich mir das Tut angesehen habe: 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 else end else begin 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 
      
Beiträge: 283
winXP
D7 Ent
|
Verfasst: Do 12.04.07 09:00
Hey Cool, darauf wäre ich nicht gekommen, funktioniert sehr gut.
Vielen Dank.
MfG
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: 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 
      
Beiträge: 283
winXP
D7 Ent
|
Verfasst: 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:
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
Wäre sehr nett, wenn das mir einer erklären könnte.
Vielen Dank.
MfG
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Do 12.04.07 12:07
bruce185 hat folgendes geschrieben: |
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 end else begin 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 
      
Beiträge: 283
winXP
D7 Ent
|
Verfasst: 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
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: 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
      
Beiträge: 168
xp
del7
|
Verfasst: 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 !
|
|