Internetowe zastosowania Delphi cz. 4

brodny

Internetowe zastosowania Delphi cz. 4

Artykuł powstał na podstawie rozdziału 30. książki Delphi 4. Vademecum profesjonalisty (tom II). Zachowano także oryginalne fragmenty kodu źródłowego przykładowej aplikacji. W czwartej części artykułu skupimy się na wprowadzaniu danych za pomocą formularzy HTML.

Wspomniane formularze są obecne w języku HTML dla wygody użytkowników Internetu/Intranetu. Umożliwiają one wprowadzanie informacji przeznaczonych dla aplikacji.

Zakładam, że tworzenie formularzy jest znane Czytelnikowi. Jeśli nie, odsyłam do kursów HTML.

Oto definicja przykładowego formularza:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>Księga gości Delphi</title> </head> <body bgcolor="A4D5FF"> <form method="POST" action="http://localhost/isapi/guestbk.dll/form">
gestbk31.gif</td> <font color="4682B4">

<font size="+4"><font color="Red">K</font></font>sięga <font size="+4"><font color="Red">G</font></font>ości <font size="+4"><font color="Red">D</font></font>elpi

</font></td> </td> </td> </td> </td> </td> <font color="Red">Dziękujemy za odwiedziny. Prosimy o wpis i ewentualne komentarze.</font>

</td> </td> </td> Twoja pełna nazwa </td> <input size="34" name="fullnameText" maxlength="4096" value=""></td> Adres e-mail</td> <input size="34" name="emailText" maxlength="4096" value=""></td> Skąd jesteś?</td> <input size="34" name="wherefromText" maxlength="4096" value=""></td> < <input type="CHECKBOX" name="firstVisitCheck">Czy odwiedzasz nas po raz pierwszy?</td> Uwagi</td> <textarea wrap="LOGICAL" name="commentsTextArea" rows="6" cols="60" value="This is a test" swansea.="Swansea." il="IL"></textarea></td> </td> </td> </td> </td> </td> </td> <input type="SUBMIT" name="pushbutton" value="Wyślij"></th>< <input type="RESET" name="resetButton" value="Wyczyść"></th> </td> < </td> </table> </form> </body> </html> ``` </td></tr></table>

Następująca deklaracja formularza HTML:

`<form method="POST" action="http://localhost/isapi/guestbk.dll/form">`</td></tr></table>

określa sposób przekazania wprowadzonych danych w nagłówku żadania HTML (POST) oraz odpowiednią akcję (http://localhost/isapi/guestbk.dll/form).

Dane przekazywane za pomocą metody POST dostępne są w procedurze zdarzeniowej OnAction pod właściwością

Request.ContentFields

w postaci listy łańcuchów tekstowych.

Oto przykładowy kod powodujący zapisanie informacji z przykładowego formularza do bazy danych (w module sieciowym umieszczono komponent klasy TTable nazwany GBTable):

```delphi procedure TWebModule1.WebModule1Actions0Action(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); var MyPage: TStringList; ParamsList: TParamsList; begin // pobranie zawartości formularza ParamsList := TParamsList.Create; try try ParamsList.AddParameters(Request.ContentFields); GBTable.Open; GBTable.Append; GBTable.FieldByName('Name').Value := ParamsList['fullnameText']; GBTable.FieldByName('EMail').Value := ParamsList['emailText']; GBTable.FieldByName('WhereFrom').Value := ParamsList['wherefromText']; GBTable.FieldByName('Comments').Value := ParamsList['commentsTextArea']; GBTable.FieldByName('FirstTime').Value := (CompareStr(ParamsList['firstVisitCheck'], 'on') = 0); GBTable.FieldByName('DateTime').Value := Now; GBTable.Post; except Response.Content := 'Błąd podczas przetwarzania danych.'; Handled := True; end; finally ParamsList.Free; GBTable.Close end;

// wyświetlenie potwierdzenia

MyPage := TStringList.Create;
try
ParamsList := TParamsList.Create;
try
with MyPage do
begin
Add('<HTML>');
Add('<HEAD><TITLE>Księga gości Delphi 4</TITLE></HEAD>');
Add('<BODY>');
Add('<H2>Zostań użytkownikiem Delphi 4</H2><HR>');
ParamsList.AddParameters(Request.ContentFields);
Add('<H3>Witaj <FONT COLOR="RED">' +
ParamsList['fullnameText'] + '</FONT> z' +
ParamsList['wherefromText'] + '!</H3><P>');
Add('Dziękujemy za odwiedziny i prosimy o wpis do księgi.<P>');
Add('Gdy będziemy chcieli wysłać do Ciebie pocztę, użyjemy ' +
'adresu -- <B>' + ParamsList['emailText'] + '</B>');
Add('<HR></BODY>');
Add('</HTML>');
end;
PageProducer1.HtmlDoc := MyPage;
finally
ParamsList.Free;
end;
finally
MyPage.Free;
end;
end;

</td></tr></table>

Nie wiem czy powyższy kod będzie działał w nowszych wersjach Delphi. U mnie (kiedyś) na Delphi 6 nie chciał się skompilować. Ale może w starszych chodzi. Jeśli ktoś ma jakąś nowszą wersję tego kodu, to serdecznie proszę o podesłanie. Zaktualizuję wtedy artykuł. Oczywiście sam w wolnym czasie też się za to wezmę :)

0 komentarzy