KOVÁCS ATTILA |
Tankör: G-5FP Nk: B44S1J |
E-mail: KOVACS52@IIT.UNI-MISKOLC.HU | SZILÁGYI LAJOS |
Tankör: G-5FP Nk: AUHWTO |
E-mail: SZILAGYI4@IIT.UNI-MISKOLC.HU |
1. UML Use-Case diagram
2. Oldalak
2.1. Felhasználói (vevő) oldal
2.2. Az adminisztrációs (eladó) oldal
3. Az adatbázistervezés
4. Adattáblák
5. Mysql használata PHP-ből
Munkanapló
![]() |
Csak vásárlás esetén fontos a regisztrációt igénylő bejelentkezés. Ennek köszönhetően bárki ismerkedhet az oldallal, pakolhat termékeket a kosárba, olvashat a vendégkönyvben. Így elkerülhetők a feleslegesen történő regisztrációk, mivel csak akkor kell regisztrálni és bejelentkezni, ha valaki valóban szeretne vásárolni. A kosárba pakoláskor több lehetőség is van a tartalom módosítására, megrendelés után erre már nincs lehetőség. Fontosak a helyesen megadott személyes adatok, és mivel ezek változhatnak, lehetőséget kell biztosítani ezek módosítására (kivétel az e-mail cím és a login név). A termékek kategóriákba vannak sorolva, ezek alapján, vagy keresés segítségével találhatók meg az egyes termékek. A termékekhez tartozhat egy kicsi kép, amire kattintva megjelenik annak nagyobb felbontású megfelelője. Ezeken túl, pár apróbb funkció is szerepel, például az elfelejtett jelszó lekérdezése, email küldése az oldal email címére, vagy a navigálás az oldalon. Fontos hogy ellenőrizve legyenek a felhasználóktól bekért adatok.
Az admin belépése az admin.php oldalon történik, helyen login név és jelszó esetében. Ott határozza meg az eladó tulajdonképpen, hogy mi is jelenjen meg a vevők részére. Központi helyen szerepelnek a termékek, melyek kategóriákba vannak sorolva, és egy kiszerelés és egy áfa rendelődik hozzájuk. Ott lehet feltölteni a szerverre a termékhez tartózó kis és nagy képet. A felhasználó kérésére, vagy az admin döntésére törölhető egy felhasználó. Másik fontos rész a rendelések kezelése, két csoportjuk van. Teljesített, ezek már kiírhatók egy txt állományban, mivel már nincs fontos szerepük az oldal működésében. A másik a teljesítés alatt álló rendelések, ha az eladó megállapítja a rendelés teljesíthetőségét, akkor a vevő kap egy üzenetet, amivel tudatható a rendelés sikeressége. Mivel több eladó is lehet, ezért egy admin felvehet másik admint is, az admin csak a jelszavát képes módosítani. Egy alapszintű vendégkönyv karbantartást is végez az admin, ami csupán egy hozzászólás törlésében merül ki. Ekkor az admin kilép az adminisztrátori felületről, és a vevői oldalon találja magát.
Az adatbázis céljának meghatározása, a feladat megfogalmazása. Meg kell határozni a tárolandó adatok körét, az adatbázis használatának módját és az általa elvégzendő részfeladatokat:
- A szükséges táblák meghatározása. Az összegyűjtött információkat témakörökre, táblákra kell bontani (normalizálás). Kerülni kell a többszörös adatbevitelt (redundancia).
- A táblák mezőinek meghatározása. El kell dönteni a táblában szereplő egyedekről, hogy mit kell tudni róluk és ehhez milyen jellemző adataikra lesz szükség. Ennek ismeretében kell meghatározni a mezőneveket. Figyelni kell, hogy van-e a táblának olyan mezője, amely egyértelműen azonosítja a tábla rekordjait, vagyis betöltheti az elsődleges kulcs szerepét, ha nincs, akkor fel kell venni egy ilyen mezőt, amely (akár egy egyszerű sorszámozással) biztosítja a rekordok egyértelmű azonosítását.
- Kapcsolatok felállítása a táblák között. Meg kell határozni, hogy milyen táblákból kell összetartozó információkat kigyűjteni és biztosított-e közöttük a kapcsolat, ha nincs, akkor gondoskodni kell úgynevezett kapcsolómezők közbeiktatásáról. A kulcs mezőt mindkét kapcsolódó táblának tartalmaznia kell. Meg kell vizsgálni a kapcsolatok típusát (amely lehet: egy az egyhez, egy a többhöz, több a többhöz) és az adatintegritási szabályokat.
- A bemutató változat elkészítése, a terv finomítása. A táblákat fizikailag is létre kell hozni és próbaadatokkal feltöltve. Meg kell nézni, hogy mely mezők maradnak üresek, minden szükséges adat rögzül-e, és jól választottuk-e meg az elsődleges kulcsokat.
Az adatbázisnak tárolnia kell:
- Felhasználókat és az adataikat
- Adminisztrátorokat és az adataikat
- Aktív termék
- Termék kategóriákat
- Termékeket és az adataikat
- Termékekhez tartozó képek címeit
- Rendeléseket
- Vendégkönyvet
- Számlálókat
- Segéd táblákat
Admin tábla:
Itt tárolódik az adminisztrátoroknak a neve, login neve, és jelszava. Ennek a táblának a segítségével lehet beléptetni az adminisztrátort az admin felületre. Önmagában az admin_login is funkcionálna kulcs két, a könnyebb használat érdekében azonban az admin_id az elsődleges kulcs. Ez a tábla nem áll kapcsolatban egyetlen másik táblával sem.
Tábla | ADMIN | Admin azonosító (kulcs) | admin_id |
Admin neve | admin_nev |
Admin login neve | admin_login |
Admin jelszava | admin_jelszo |
User tábla:
Itt tárolódnak a felhasználóknak az adatai. Nevük, jelszavuk, email címük, tartózkodási címük, telefonszámuk, és az állapota a hírlevéllel (kér-e hírlevelet vagy sem). A felhasználókról fontos nyilvántartani ezeket az adatokat, mivel ezek alapján rendelhetnek. Az e-mail címükre érkezik a hírlevél, az admin üzenete, értesítés a rendelésről, és a feledékenyeknek a jelszavuk. Ezért fontos hogy az email cím valódi és egyedi legyen, akárcsak a login név. Ennél a táblánál is bevezetünk egy azonosító mezőt, a könnyebb használat érdekében. Ez a tábla már kapcsolatban áll több táblával is. Egyrészt kapcsolódik a vendégkönyv táblához, egy felhasználónak több hozzászólása lehet. Másrészt kapcsolódik a megrendelések_fej táblához, egy a többhöz kapcsolattal.
Tábla | USER | Felhasználó azonosító (kulcs) | user_id |
Felhasználó neve | user_nev |
Felhasználó login neve | user_login |
Felhasználó e-mail címe | user_email |
Felhasználó születési dátuma | user_szul_ido |
Felhasználó országa | user_orszag |
Felhasználó irányító száma | user_ir_szam |
Felhasználó települése | user_telepul |
Felhasználó utcája | user_ut |
Felhasználó ház száma | user_haz_szam |
Felhasználó telefon száma | user_tel |
Kér-e hírlevelet? | hir_level |
Áru tábla:
Ez a tábla tárolja az áruk adatait. Mivel az áruház legfontosabb pontja a benne szereplő termékek, ezért ez a tábla a legösszetettebb, és ez rendelkezik a legtöbb kapcsolattal.
Tárolja a termék nevét, nettó árát, egy esetleges leírást, és az állapotát. Továbbá a kiszerelés és áfa segédtáblákkal tárolja a termék kiszerelési egységét, és a termékhez tartozó áfa kulcsot. Itt nincs tényleges kapcsolat a táblák között, a két tábla csak kényelmi funkciót lát el, hogy ne kelljen begépelni mindig az adott értéket, és így csökkenek a gépelésből adódó eltérések. Amikor változás történik a kiszerelés vagy a az áfa táblában, az nem von maga után változást a már felvett termékek esetében. Viszont szoros kapcsolat van a kategória táblával, ezen kapcsolat alapján lehet a termékeket kategóriákba sorolni. Egy termék csak egy kategóriába tartozhat. Továbbá kapcsolódik még a képek táblához is, itt a termékhez tartózó kicsi (bélyeg) és nagy kép neve található. Mivel az áruházban jelenleg egy termékhez csak egy kép rendelhető, fel lehetett volna venni ezt a két mezőt az áru táblába is. Amiért ezt a megoldást választottam az, hogy a későbbiekben az adatbázis változtatása nélkül ki lehessen bővíteni több kép hozzárendelését egy termékhez. Végül kapcsolódik még a megrendelések táblához. Kulcsként az aru_id funkcionál.
Tábla | ARU | Áru azonosító (kulcs) | aru_id |
Kategória azonosító | kat_id |
Áru neve | aru_nev |
Áru kiszerelési egysége | Kiszereles |
Áru nettó ára | aru_netto_ar |
Leírás az áruról | aru_leir |
Az áruhoz tartozó áfa | Afa |
Aktív vagy passzív termék | Allapot |
Kategória tábla:
Ebben a táblában tárolódnak a termékek rendezését szolgáló kategóriák. Tartalmaz egy azonosított, egy kategória nevet, és opcionálisan felvehető leírást. Mivel ezek alapján rendeződnek a termékek, természetesen kapcsolódik az áru táblához. A jelenlegi rendszer alapján egy kategóriába több termék, de egy termék csak egy kategóriába tartozhat.
Tábla | KATEGORIA | Kategória azonosító (kulcs) | kat_id |
Kategória neve | kat_nev |
Kategória leírása | kat_leir |
Képek tábla:
Itt vannak az adott áruhoz tartozó képek. Először is van egy kep_id ami a kép azonosítója, ehhez tartozik egy aru_id, hogy be lehessen határolni melyik termékhez tartozik az adott kicsi és nagy kép. A két azonos tartalmú, de különböző mérető képre azért van szükség mert, ha kilistázzuk a termékeket és oda egy nagyobb felbontású kép kerül, az jelentős oldal betöltési időt igényel. Ezért a jóval kisebb mérető kép kerül a listába, és erre kattintva jelenik meg a nagyobb felbontású kép. Mint korában írtam, ezzel a megoldással lehetséges több kép hozzárendelése egy termékhez, de jelen esetben elegendő egy kép.
Képek nevénél a termek_kep mappában szereplő jpg állomány neve található, innen töltődik be az oldalra. Ez a tábla szintén kapcsolatban áll az aru táblával.
Tábla | KEPEK | Kép azonosító (kulcs) | kep_id |
Áru azonosító | aru_id |
Kicsi kép neve | kicsi_kep |
Nagy kép neve | nagy_kep |
Kiszerelés és áfa táblák:
Ez a két tábla hasonló funkcióval bír, ezért mutatom be egyszerre őket. Csak kényelmi funkciót vannak, segítségükkel egységesek lesznek az áru táblában a kiszerelés és áfa mezők. Ennek a módszernek vannak hátrányai, ha az admin nem elég körültekintően használja. Például, ha tőről vagy módosít egy kiszerelés, akkor a korábban felvett kiszerelés alapján már nem tud keresni a keresés opciónál.
Tábla | AFA KISZERELES | Áfa értéke (kulcs) | Afa |
A kiszerelés egysége (kulcs) | Kiszereles |
Megrendelések fej tábla:
A webáruház egy másik fontos pontja, a rendelések kezelése. Ezt a feladatott két tábla segítségével oldottam meg. A fejrészben tárolódik a rendelésnek a főbb paraméterei, ki rendel, mikor, és mennyiért. A rendelés dátumát a mysql now() függvénye szolgáltatja. Ez a tábla szoros kapcsolatban áll a megrendelések táblával, mivel itt vannak a konkrét fejhez tartozó rendelt termékek. Minden fej rendelkezik egy állapottal attól függően, hogy teljesítve van vagy folyamatban az adott rendelés. A teljesített rendelésekre a későbbiekben már nincs nagy szükség, azért a biztonság kedvéért egy txt fájlba kerülnek kiírásra, majd törlődnek az adatbázisból, úgyszintén törlődnek a megrendelesek tábla megfelelő sorai is. A tábla kapcsolódik még az user táblához is, innen kerülnek megjelenítésre a megrendelő adatai.
Tábla | MEGRENDELESEK_FEJ | Rendelés azonosító (kulcs) | rendel_id |
Vásárló azonosító | vasarlo_id |
A vásárlás dátuma | vasarlas_datum |
Teljesített vagy feldolgozás alatt | allapot |
Vásárlás nettó összege | osszeg |
Megrendelések tábla:
Mint fentebb írtam itt vannak a megrendelesek_fej tábla rendelés azonosítójához tartozó termékek, és a rendelt mennyiségek. Vagyis egyrészt kapcsolódik a fej táblához, másrészt az áru táblához.
Tábla | MEGRENDELESEK | Megrendelés azonosító (kulcs) | sor_id |
Ez azonosítja, hogy a rendelés melyik fejhez tartozik | fej_id |
A megrendelés terméke | aru_id |
Az áru kiszerelésből rendelt mennyiség | Mennyiseg |
Vendégkönyv tábla:
Ez a tábla egy egyszerűbb vendégkönyvet tárol, ami ehhez az áruházhoz elegendő. A tábla kapcsolatban van a user táblával, mivel fontos a hozzászólás szerzője. A dátumot itt is a now() függvény adja. A tárolandó szöveg pedig text típusú. A user táblával való kapcsolatnál fontos megjegyezni, hogy egy felhasználó törlése nem vonja maga után a hozzászólás törlését.
Tábla | VENDEGKONYV | Hozzászólás azonosító (kulcs) | konyv_id |
A hozzászóló felhasználó azonosítója | user_id |
Hozzászólás dátuma | datum |
Hozzászólás | szoveg |
Számláló tábla:
Ez a tábla statisztikai szerepeket szolgál, csupán egy sora van, amiben minden mező alapértelmezett értéke 0. Amikor egy megfelelő esemény bekövetkezik, a hozzá tartózó számláló eggyel növekszik. Az adminisztrátornak lehetősége van a számlázok nullázására, és ennek következtében új számolást indítani. Ezt a feladatot egy szöveges fájl segítségével is meg lehetne oldani, de meglátásom szerint adatbázis használata a praktikusabb.
Tábla | SZAMLALO | Elküldött emailek száma |
Törölt felhasználók száma | torolt_user |
Az oldalt látogatók száma | latogatok |
Teljesített rendelések száma | rendeles |
Elfelejtett jelszavak kérelmének száma | felejt_email |
Vendégkönyvbe írások száma | konyv_ir |
Vendégkönyvbe törlések száma | rendeles |
Teljesített rendelések száma | konyv_torol |
Bejelentkezések száma | login |
Regisztrációk száma | regisztralt |
Az adatbázis felépítését az 1. ábra szemlélteti.
![]() |
1. ábra
Miután elkészült az adatbázis, itt az ideje, hogy a php is használatba vegye. A php rendelkezik a mysql adatbázis használatához szükséges függvényekkel. A kapcsolódáshoz meg kell adni a szerver nevét, a felhasználói nevet és jelszót, ez a következőképpen néz ki.
mysql_connect($host,$user,$pass);
Ezt követően a kívánt adatbázis kell megnyitni.
mysql_select_db($db);
Kezdet | Időtartam | Résztvevők | Tevékenység | Eredmény |
2008-10-28 | 16 óra egyéni munka + 3 óra konzultáció 16 óra egyéni munka + 3 óra konzultáció |
Kovács Attila Szilágyi Lajos |
Részfeladatok kiosztása. | Feladatkiosztás:Kovács Attila:
|
2008-11-01 | 4 óra konzultáció 4 óra konzultáció |
Kovács Attila Szilágyi Lajos |
Elkészült részfeladatok átolvasása.
A funkcionális specifikációs dokumentum összeállítása, javítása. |
A funkcionális specifikációs dokumentum és a munkanapló beadásra szánt változata. |
Név | Összidőszakra (∑100%) [%] |
Kovács Attila | 50 |
Szilágyi Lajos | 50 |