Delphi - Internet áruház fejlesztése Delphi-vel

Internet áruház 1. rész

forráskód letöltése
Ezzel a cikkel új sorozatot indítunk útjára, mely célul tűzi ki maga elé, hogy a sorozat végére egy teljes értékű és valós helyzetben is jól használható internetes web áruház valósuljon meg.

A sorozat az első kezdeti lépéstől mutatja be a web áruház tervezését és fejlesztését, érintve a Delphi összes olyan lehetőségét, melynek az internetes alkalmazásfejlesztéshez köze van. Így az is bátran nekivághat, aki eddig még nem foglalkozott internetes alkalmazásfejlesztéssel, de a Delphi-t már használja.

Az áruház felépítése során az internetes fejlesztés minden területe is megismerhető lesz mivel a feladat igen összetett. Az áruház csupán egy konkrét példa, melyen keresztül bemutatásra kerül mindazon lehetőség, melyet a Delphi kínál ilyen célokra. A cikksorozat - pont a feladat összetettsége miatt - érinteni fog olyan témaköröket is, mint például a számla nyomtatása a megrendelés adatbázisából és még sok más olyan területet is, mely nem kötődik az internetes fejlesztéshez. A mellékelt példa megnyitása előtt kérjük hozza létre az ASWEBSHOP01 alias-t. Ez mutasson a példaprogram Data könyvtárára, az adatbázis elérés végett.
A cikksorozat bármely részével kapcsolatban ha gondja, problémája van, vagy ha hibát tapasztal, esetleg csak nem boldogul a fejlesztői környezet kialakításával, telepítésével, akkor keressen meg bennünket e-mail-ben.

Nézzük mire is lesz szükség ahhoz, hogy a web áruház példáit kipróbálhassuk, használhassuk.

Az internetes fejlesztés legalapvetőbb ismereteiről már volt egy cikksorozatunk újságunkban, mely az első évfolyam 36. számától kezdődött "Internet/intranet alkalmazások fejlesztése" címmel. Az itt található információkat nem árt, ha ismeri az olvasó, mert a mostani sorozat egy konkrét feladat megvalósításának szemszögéből vizsgálja a fejlesztési munkát, nem pedig referenciaszerűen mutatja be a lehetőségeket. Így az első igény e cikkek ismerete.

A második eszköz, amire még szükség lesz az nem más, mint egy Windows alapú web szerver, melyen az elkészült alkalmazások tesztelhetők. Ehhez nem feltétlenül szükséges egy Windows NT, teszteléshez elegendő akár egy Win98 is a Personal Web Server-el. Sőt hálózatra sem lesz szükségünk a fejlesztési munka során. Mindehhez elegendő akár egyetlen gép is, amelyen a Personal Web Server (továbbiakban PWS) ellátja a web szerver funkciókat, amely mellett a Delphi-vel készíthetjük az alkalmazásokat. A fejlesztői környezet kialakításáról részletes leírás szintén a fent említett cikk első részében található.

Nem árt továbbá, ha van a gépünkön egy Web böngésző is, mellyel az elkészült anyagot megtekinthetjük, használhatjuk majd. A példaprogramok és web lapok készítésekor MS Internet Explorer-t használtunk, abból is az ötös verziót. A későbbiek folyamán nem árt, ha minimum a négyes verziót használjuk, mert lesznek majd olyan részek, melyeket a régebbi verziók még nem támogattak. Legjobb persze, ha mindig a legfrissebb változatot használjuk a programból.

A példaprogramokat Delphi 4-el készítjük, de ha Ön még csak a Delphi 3-al dolgozik, akkor is valószínűleg 80-90%-ban meg tudja majd nyitni és lefordítani a példaprogramokat, így ekkor is bátran nekivághat a fejlesztésnek. Delphi 5 esetén persze ilyen gond nem lesz.


Hosszadalmas - és sokszor unalmas - rendszertervek készítgetése helyett vágjunk rögtön a közepébe a fejlesztésnek:

Web áruház minden bizonnyal termékeket fog árulni. Kezdjük hát azzal, hogy létrehozunk egy adatbázist, mely a termékek adatait tárolja. A későbbiek folyamán persze ez még változhat, így most csak a legfontosabb adatokat tároljuk el benne.

Az adatbázisokhoz az egyszerűség kedvéért most a Dbase típust választjuk. A későbbiek folyamán még lesz szó újságunkban arról, hogy miként valósítható meg mindez MS SQL, illetve Interbase alapú adatbázison is. A Dbase használatával épp úgy megvalósítható egy web áruház, mint egy sokkal fejlettebb adatbázis típussal.

Létrehozzuk tehát a termékek adatbázisát. Nevezzük Product.dbf-nek. A szükséges mezők:
  • ID - egyedi azonosító a termékekhez
  • NAME - a termék megnevezése
  • PRICE - a termék nettó ára
  • TAX - az ÁFA kulcs százalékban, pl.: 25
  • POSTAGE - postaköltség egy darab termék esetén (ha a rendeléskor a fizetési és szállítási mód postai utánvét lenne)
  • BTOITJ - a termék, szolgáltatás azonosító száma, melyre majd a számla nyomtatásakor lesz szükségünk.
  • ME - a termék mennyiségi egysége
Az első példaprogram feladata csupán annyi, hogy megjelenítse ennek az adatbázisnak a tartalmát. Természetesen ez a lista csupán a fejlesztéshez és a későbbiek folyamán majd a rendszer adminisztrációjához, karbantartásához lesz szükséges és nem a vevők részére készül.

A web lapok külalakjával most szintén nem foglalkozunk még jó néhány részen keresztül. Elsősorban most a rendszer működőképessége a fontos és nem a kinézete. Ezzel még ráérünk a későbbiekben is foglalkozni.

Nézzük tehát a programot:

A Delphi indulása után válasszuk a File - New menüpontot és a megjelenő ablakból válasszuk a Web Server Application elemet. Az ekkor megjelenő lehetőségek közül egyelőre a CGI stand-alone executable elemet válasszuk.

A létrejött új project-et mentsük is el. A project neve legyen WS, utalva a WebShop szóra.

Ezután válasszuk a Project - Options menüpontot. Itt a Directories / Conditionals lapon az Output Directory ablakba írjuk be annak a könyvtárnak az elérési útvonalát, mely a web szervünk scripts könyvtára, ahonnan lesz jogunk futtatni a web szerveren keresztül a saját alkalmazásainkat is. Ez a PWS-nél például lehet a C:\Inetpub\scripts könyvtár. Ezzel azt érjük el, hogy a program fordításakor az EXE állomány automatikusan ebbe a könyvtárba kerül és nem a forráskód könyvtárába. Ez nagyon hasznos beállítás, mert a programot a fejlesztés során számtalanszor újrafordítjuk és így nem lesz szükségünk a teszthez az állandó másolgatásra.
Másik hasznos beállítás, ha a Packages lapon a Runtime packages résznél kiválasztjuk a Build with runtime packages CheckBox-ot. Ekkor az alatta lévő ablakban elérhető lesz egy felsorolás, melyben azok a komponens csomagok szerepelnek, melyeket a Delphi fordítója nem fog a készítendő EXE-be bele fordíttatni. Ennek két következménye lesz. Az elkészült EXE önállóan nem működik, szükség lesz hozzá a komponens csomagok BPL állományára is. Ez megtalálható a rendszer System könyvtárában, ha azon a gépen vagyunk, ahová a Delphi-t telepítettük, ha nem, akkor viszont nekünk kell gondoskodni arról, hogy oda kerüljenek. A másik következmény, hogy mivel a komponensek nem kerülnek az EXE-be, így annak mérete drasztikusan lecsökken. Kezdetben 10-20 kB között lesz. A későbbiek folyamán vesszük majd ennek nagy hasznát. Ha ugyanis már működik a rendszerünk, de azt frissíteni kell valami miatt, akkor elegendő lesz egy kis méretű EXE-t feltölteni a web szerverünkre, hiszen a Delphi komponensein amúgy sem változtathatunk. További előny, hogy ha több alkalmazásunk is lesz, akkor azokból is kihagyhatók ezek a komponens csomagok. Erről a témáról részletesen a cikk végén hivatkozott régebbi cikkekben találhat információt.

Ha ez is megvan, akkor bezárhatjuk a dialógus ablakot és visszatérhetünk a program fejlesztéséhez.

A létrejött WebModule-ba helyezzünk egy TTable komponenst, melyet hozzákötünk a már létrehozott Product.dbf-hez.

Felteszünk még egy TDataSetTableProducer komponenst is. Ezt a DataSet property-jén keresztül a TTable komponenshez kapcsoljuk. A TDataSetTableProducer komponenst csupán most az egyszerű listázáshoz használjuk. A későbbi munkánk során rövid idő alatt belátható lesz majd, hogy a TDataSetTableProducer komponenssel olyan komoly munkát, mint egy web áruház nem tudunk megvalósítani, így akkor majd készítünk egy olyan komponenst, mely megfelel minden igényünknek. Most azonban egy egyszerű listázáshoz megteszi a TDataSetTableProducer is.

A WebModule-hoz létre kell hoznunk egy akciót is, az Actions property-n keresztül, melyet alapértelmezettre állítunk a Default property-vel, és az OnAction eseményét felhasználva válaszolunk a kliens kérésére.

Amikor egy web böngészőn keresztül érjük el a programunkat, például www.animare.hu/scripts/ws.exe, akkor az imént létrehozott alapértelmezett akció OnAction eseménye kerül meghívásra. Ekkor kell értéket adnunk a Response objektum Content property-jének, mely egyetlen sztringként várja annak a web lapnak a HTML kódját, melyet a kérésre kívánunk adni. Ez most nem lesz más, mint a TDataSetTableProducer komponens által szolgáltatott érték, ahol egy táblázatban láthatjuk viszont a Product adatbázis tartalmát.

Az egyszerűbb teszt érdekében létrehozunk egy web lapot is, melyen keresztül majd elérhetjük a programunkat. Ezt megtalálja a mellékelt példa HTM könyvtárában. Ezt az állományt célszerűen másolja egy olyan könyvtárba, ahonnan elérhető lesz a web szerveren és egy böngészőn keresztül.
Például C:\Inetpub\wwwroot\webshop. Ekkor a böngészőbe a www.animare.hu/webshop/ cím beírásakor megjelenik az iménti web lap. Persze a web szerver neve mindenkinél más és más lesz.

Mivel ebben a web lapban elhelyeztünk egy linket, mely az elkészített alkalmazásunkra mutat, így az egy egyszerű kattintással meghívható.

Ha mindent jól készítettünk el és állítottunk be, akkor itt meg kell jelennie a Product.dbf tartalmának egy táblázatban.

A következő fejezetben azt vizsgáljuk meg, hogy miként vehetünk fel új terméket ebbe az adatbázisba, méghozzá egy web lapon és az interneten keresztül. Így majd lehetőség nyílik bárhonnan karbantartani rendszerünket, akár merre járunk a világban, csupán egy internet kapcsolatra lesz szükségünk.

Internet áruház cikksorozat