Delphi - Internet áruház készítése Delphi-vel

Internet áruház 9. rész

forráskód letöltése
Internet áruházunk soron következő fejlesztésénél előkészítjük, hogy a kiválasztott termékeket a vevő meg is rendelhesse tőlünk, vagyis elkészítjük a megrendelő lapot. A mellékelt példaprogram megnyitása előtt a következő teendőket kell elvégezni, hogy a program működőképes legyen:
  • A HTMLProducer.pas-ban lévő komponenst telepítenie kell a Delphi alá. (Ezt a komponenst a cikksorozat 6. részénél hoztuk létre, forráskódja az ottani példánál található!)
  • Kérjük, hozza létre az ASWEBSHOP09 alias-t. Ez mutasson a mellékelt példaprogram Data könyvtárára, az adatbázis elérés végett.
  • A lefordított WS09.EXE-t helyezze a web szerver scripts könyvtárába, ahonnan az futtatható.
  • A mellékelt HTM könyvtár tartalmát pedig helyezze el a web szerveren úgy, hogy az egy böngészőn keresztül elérhető legyen. Például másolja a C:\Inetpub\wwwroot\webshop\09\ könyvtárba. Ekkor a böngészőben a www.animare.hu/webshop/09/ cím beírásakor meg kell hogy jelenjen a kezdő oldal. Persze a web szerver neve mindenkinél más és más lesz. A mellékelt példában a webshop\09\ könyvtárra több hivatkozás is van az egyes web lapokon, így kérjük ettől Ön se térjen el.


A jelenlegi cikk elolvasása előtt javasoljuk a sorozat előző részeinek megismerését, mivel a mostani ismeretek csupán kiegészítői az előzőeknek, így azok ismerete nélkül e konkrét cikk tartalma sem érthető meg teljes egészében.


A megrendelő lap kialakításához először is engedélyeznünk kell a kosárnál lévő megrendelő gombot, mely eddig le volt tiltva. Ezt a box.dat web lap állományban tehetjük meg:
...
<input class=but type=submit value="Megrendelés">
...
Mivel most már aktív ez a gomb, így egy form-ot is kell készítenünk, hogy a kosárban lévő termékek kódjait és mennyiségeit átadhassuk az alkalmazásunknak a megrendelés gomb lenyomásakor. Ezt szintén a box.dat-ban tesszük meg.
...
<form action="/scripts/ws09.exe/sales" method=get>
<#boxlink>
...
</form >
...
Amint látható beszúrtuk a <#boxlink> címkét, ha visszaemlékszünk az előző cikkekre, akkor tudhatjuk, hogy ide a program a kosárban lévő termékek kódjait és rendelt mennyiségüket szúrja be kódolva. Itt hívnánk fel a figyelmet a THTMLProducer komponens újabb előnyére: most egy teljesen más helyen kell használnunk a <#boxlink> címkét, mivel tartalmilag ugyanarra a sztringre van szükségünk. Mivel ennek előállítását már leprogramoztuk, most csupán elegendő ismételten a <#boxlink> címkével hivatkoznunk arra, hogy ide ismét ezt a sztringet kérjük és a programhoz nem is kell nyúlnunk, elegendő csak a web lapot módosítanunk.

Fenti web lap részletben megfigyelhető, hogy a ws09.exe-t most már egy /sales paraméterrel hívjuk, így ehhez létre kell hozunk a webmodule-ban is egy újabb akciót, ahol a PathInfo paraméter /sales lesz. Itt az OnAction eseményhez létrehozunk egy eseménykezelőt, ami a megrendelő lapot fogja megjeleníteni a vevő számára.
procedure TWebModule1.WebModule1WebActionItem2Action
   (Sender: TObject; Request: TWebRequest; Response: 
    TWebResponse; var Handled: Boolean);
begin
  try
    GetBox;
    if FBoxList.Count=0 then begin
      Response.Content:='<h3>Rendelés előtt kérjük válasszon 
        terméket és helyezze a kosárba!</h3>';
    end else begin
      Response.Content:=HTMLProducer1.Content(
        FHTMDir+'sales.htm');
    end;
  except
    on e: exception do Response.Content:=e.message;
  end;
end;
A megrendelő lap megjelenítése előtt nem árt, ha ellenőrizzük, hogy a kosárba tett-e terméket a vevő, mielőtt a megrendelés gombra kattintott.

A megrendelő lap a sales.htm-ben található, így ezt adjuk át a HTMLProducer1 komponensnek feldolgozásra.

Itt először is egy táblázatot készítünk, ahol felsoroljuk a kosár tartalmát tételesen, hogy a megrendelés előtt ellenőrizhesse a vevő, hogy ténylegesen mit is rendel.

A táblázat után következik a megrendeléshez szükséges személyi adatok megadása.

A táblázat a salesproduct.dat és a salesproductitem.dat állományokból fog jön létre. Az előbbi tartalmazza a táblázat keretét, míg az utóbbi a táblázat egyes sorait. Minden egyes sor megfelel egy-egy terméknek, így ezt annyiszor kell ismételni egymás után, ahány termék került a kosárba.

Ehhez különösebb programozásra már nincs szükségünk, hiszen a HTMLProducer1 komponens fel van készítve ilyen események lekezelésére, csupán jelezni kell szándékunkat:
...
<#include file=salesproductitem.dat repeat=yes>
...
A megrendelő lap most még csupán félkész, mivel annak feldolgozására a program nem képes. Ezzel az előkészülettel viszont a következő részben már egyszerű dolgunk lesz, ahol is fogadjuk az internetről érkező megrendeléseket.

Internet áruház cikksorozat