przykładowy panel rejestracji i logowania

0

Prosił bym kogoś kto znalazł by trochę czasu o napisanie aplikacji w Delphi z użyciem komponentu dbExpress, która posiadała by panel rejestracji, logowania i odczyt rekordu (do jakiegoś labela np imię osoby zarejestrowanej czy do innego labela mail takiej osoby.) Oczywiście mowa tutaj o bazie danych MySQL. Proszę was o to ponieważ próbuje rozgrzść MySQL w Delphi przez dbExpress wg kompedium a z tym wychodzi mi tylko odczyt do tabeli, a nie pojedynczych rekordów... Proszę o pomoc i nie odsyłanie do innych źródeł. Kod nie jest mi potrzebny jako gotowiec do mojej aplikacji lecz jako tutorial w celu nauki...

0

nikt nie napisze programu za Ciebie ... jak masz jakiś problem to pokaż z czym .. czyli pokaż kod tego co już sam stworzyłeś.

Kod nie jest mi potrzebny jako gotowiec do mojej aplikacji lecz jako tutorial w celu nauki...

Trochę dziwnie brzmi .. bo przecież jak będziesz miał kod od kogoś to tak czy siak wykorzystasz to jako gotowiec.

0

To w takim razie jak napisać procedurę odczytującą z mysql dane wg id ?

0

Również dorzucam się do tej prośby...

0

Poniżej zanieszczam link do dokumentu Word w którym dokładnie opisałem swój problem, oraz link do aplikaci którą pisałem w celu nauki MySQL'a. Bardzo was proszę o pomoc i z góry za nią dziękuję...

Dokument Word: http://www.speedyshare.com/631392723.html
Aplikacja (Projekt): http://www.speedyshare.com/998814873.html

Cały kod Aplikacji:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBXpress, FMTBcd, StdCtrls, DB, SqlExpr, ExtCtrls;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    LabeledEdit1: TLabeledEdit;
    LabeledEdit2: TLabeledEdit;
    LabeledEdit3: TLabeledEdit;
    LabeledEdit4: TLabeledEdit;
    Button1: TButton;
    GroupBox2: TGroupBox;
    LabeledEdit5: TLabeledEdit;
    LabeledEdit6: TLabeledEdit;
    Button2: TButton;
    MySQL: TSQLConnection;
    SQL: TSQLDataSet;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  SQLQuery : String;
begin
// Nawiązanie połączenia.
If MySQL.Connected then
 MySQL.Connected := False
else
  MySQL.Connected := True;
// Rejestracja.
If LabeledEdit2.Text = LabeledEdit3.Text then
begin
(* If [Login nie istnieje jescze w bazie danych] then
   begin *)
      SQLQuery := Format('INSERT INTO uzytkownicy SET login="%s", haslo="%s", email="%s"', [LabeledEdit1.Text, LabeledEdit2.Text, LabeledEdit4.Text]);
      SQL.CommandText := SQLQuery;
(* end else
    ShowMessage('Podany login jest zajęty, podaj inny.'); *)
end else
ShowMessage('Podane hasła nie są identyczne, popraw je.');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
// Zalogowanie i pokazanie poprawnych danych
(* If [Login znajduje się w bazie MySQL] then
   begin
      If [Hasło odpowiada loginowi wg ID] then
      begin
         Label2.Caption := [Login z bazy MySQL odpowiadający poprawnemu zalogowaniu];
         Label4.Caption := [E-Mail z bazy danych odpowiadający ID loginu];
      end;
   end else
      ShowMessage('Błędne dane.'); *)
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// zamknięcie połączenie z bazą MySQL.
MySQL.Connected := False;
end;

end.

Zadam pytanie jeszcze raz tutaj... Proszę o info co powinienem wstawić w miejscach '(' (...) ')' ?

0
  1. sprawdź czy masz taki rekord w bazie

    SQLQuery := Format('SELECT login FROM uzytkownicy WHERE login = "%s";', [LabeledEdit1.Text]);

    jeśli liczba rekordów = 1 (wieksza od 0) to login jest zajęty

  2. podobnie...

    SQLQuery := Format('SELECT login, haslo FROM uzytkownicy WHERE login = "%s" AND haslo = "%s";', [LabeledEdit1.Text, LabeledEdit2.Text]);
0
dealer napisał(a)

Proszę was o to ponieważ próbuje rozgrzść MySQL w Delphi przez dbExpress wg kompedium a z tym wychodzi mi tylko odczyt do tabeli, a nie pojedynczych rekordów...

Jeśli chcesz jeden rekord to nie:

SELECT * FROM tabela

tylko:

SELECT * FROM tabela WHERE pole=wartość

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0