0% found this document useful (0 votes)
883 views56 pages

Nagykereskedelmi Webáruház Fejlesztése

Uploaded by

informatikaanyag
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
883 views56 pages

Nagykereskedelmi Webáruház Fejlesztése

Uploaded by

informatikaanyag
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 56

SZAKDOLGOZAT

Nagykereskedelmi webáruház fejlesztése

Konzulens: Készítette:
Ujvárosi György Zsáki Erik
Számítástechnikai programozó
Dózsa György Gazdasági OKJ 54 4641 05
és Mőszaki
Szakközépiskola és Szakiskola Dózsa György Gazdasági
Kalocsa és Mőszaki
Szakközépiskola és Szakiskola
Kalocsa
2007
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

Tartalomjegyzék
1. BEVEZETİ ................................................................................................................................................. 2
2. A MAGYAR ONLINE KERESKEDELEM.............................................................................................. 3
3. HASZNÁLT ESZKÖZÖK .......................................................................................................................... 5
3.1. PHP ...................................................................................................................................................... 5
3.2. MYSQL ................................................................................................................................................ 6
3.3. APACHE ................................................................................................................................................ 6
3.4. HTML................................................................................................................................................... 6
3.5. CSS........................................................................................................................................................ 7
3.6. BÖNGÉSZİK .......................................................................................................................................... 8
4. A SZOFTVER-FOLYAMAT TEVÉKENYSÉGEI [5] ............................................................................ 9
4.1. SZOFTVER SPECIFIKÁCIÓ..................................................................................................................... 11
4.1.1. A megrendelı szemszögébıl .......................................................................................................... 11
4.1.2. Funkciók ........................................................................................................................................ 12
4.1.3. A vásárlás folyamata ..................................................................................................................... 14
4.1.4. A termék útja a vásárlóhoz ............................................................................................................ 14
4.1.5. Az oldallal szembeni elvárások...................................................................................................... 14
4.1.6. Felhasználói eset diagrammok ...................................................................................................... 16
4.2. SZOFTVER-TERVEZÉS ÉS IMPLEMENTÁCIÓ .......................................................................................... 17
4.2.1. Általános felépítés.......................................................................................................................... 17
4.2.2. Az adminisztrációs és a felhasználói (vevı) oldal kinézete............................................................ 18
4.2.3. Az adatbázis tervezése [4] ............................................................................................................. 20
4.2.4. Mysql használata PHP-ból ............................................................................................................ 27
4.2.5. Program kódolása ......................................................................................................................... 30
4.2.5.1. Admin beléptetése ..................................................................................................................... 31
4.2.5.2. Kategória törlése ...................................................................................................................... 33
4.2.5.3. Képek feltöltése ......................................................................................................................... 35
4.2.5.4. Rendelések teljesítése................................................................................................................ 36
4.2.5.5. A kosár mőködése ..................................................................................................................... 38
4.2.5.6. Keresés a termékek között ......................................................................................................... 41
4.2.5.7. Képek megjelenítése.................................................................................................................. 45
4.3. SZOFTVER VALIDÁCIÓ ......................................................................................................................... 47
4.3.1. Tesztelés......................................................................................................................................... 47
4.4. SZOFTVER KARBANTARTÁS ................................................................................................................. 50
4.4.1. Továbbfejlesztési lehetıségek ........................................................................................................ 50
5. FELHASZNÁLÓI DOKUMENTÁCIÓ .................................................................................................. 51
5.1. WEBÁRUHÁZ TELEPÍTÉSE .................................................................................................................... 51
5.2. ÜZEMELTETÉSI LEÍRÁS ........................................................................................................................ 52
5.3. TESZT ADATOK.................................................................................................................................... 52
5.4. SZÜKSÉGES HARDVER ÉS SZOFTVER .................................................................................................... 52
6. ÖSSZEFOGLALÁS................................................................................................................................... 53
7. FELHASZNÁLT SZAKIRODALOM ÉS FORRÁSOK........................................................................ 54
8. MELLÉKLET............................................................................................................................................ 55

1
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

1. Bevezetı

Egy nagykereskedelmi webáruház megvalósítása a célom, ami különféle növényeket,


mezıgazdasági termékeket, kész élelmiszereket, ıstermelık végtermékeit értékesít.

Az internet térhódításával az online kereskedelem is jelentıs tömegbázist tudhat maga


mögött. Ma Magyarországon ez a fajta értékesítési mód még nem annyira elterjedt, ennek oka
az internetes infrastruktúra, és a magyar vásárlói szokások.

Az áruház a virtuális és valós világ összekapcsolásával alkot kereskedelmi egységet majd.


A termékek kiválasztása és rendelése a világhálón, átvétele a valós világban, személyesen
történik. Így a vásárlók nagyobb bizalommal lesznek, gyorsabb szállítást és
problémamegoldást remélhetnek.
Könnyen használható és praktikus felülettel kell rendelkeznie, a vásárlók és az eladók felé
egyaránt. Biztosítva az egyértelmőséget, és egyszerő fizetési módot a vásárlók részére.
Funkcióiban lehetı legjobban közelítse meg a „megszokott” (nem interneten keresztül
történı) vásárlás formáját.
A vevık döntı többsége nem érdekelt az informatikában, számukra ez a vásárlási forma
csak egy eszköz (mint például egy gépjármő, pénztárgép, vagy banki szolgáltatás).
Természetesen némi tudás szükséges részükrıl, amit a lehetı legjobban minimalizálni kell a
fejlesztés során.

Megvalósításhoz a jól bevált Apache, MySQL, PHP hármast veszem igénybe. Az


információk tárolása adatbázisban történik, melybıl a php segítségével dinamikus, könnyen
karbantartható oldalt képez. Ma már ez az egyik legelterjedtebb technika, ami kiváló alapot
biztosít a webáruháznak.

Azért esett választásom erre a témára, mert az informatikán belül számomra az egyik
legérdekesebb téma az internet. A megvalósítás folyamán átfogó képet kapok a mőködésérıl,
és lehetıségeirıl, melyet késıbbi munkáim során kívánok kamatoztatni. Emellett családi
vállalkozásunk hasonló kereskedelemben érintett, ezért számomra ismertek a követelmények,
elvárások, és jól követhetı lesz számomra, miként állja meg helyét a termék egy esetleges
tényleges bevezetés után.

2
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

2. A magyar online kereskedelem

„Miközben Magyarországon több százezren használják az elektronikus banki


szolgáltatásokat, az internetes vásárlás egyelıre a hagyományos kiskereskedelem csupán 0,1
százalékát teszi ki. Az e-kereskedelem legnagyobb kerékkötıje, hogy ragaszkodunk a
hagyományos vásárlási formákhoz. Ám lassan felnı az a korosztály, amely hozzászokott a
világhálón való böngészéshez, és nem idegenkedik az on-line vásárlástól. A kereskedelem
szereplıinek is szemléletváltozásra van szükségük: üzleti modelljeiket át kell dolgozniuk az
on-line üzletmenetre.” (forrás: http://www.piacesprofit.hu/?r=10530 )

1.ábra
Áruház célcsoportja azok a felhasználok, akik a nagykereskedelemben érdekeltek. Az
1.ábra a korcsoportok és azok internet használatának százalékos arányát fejezi ki.
Célközönség életkora 25-50 év közé tehetı (természetesen nem zárt az intervallum), és ennek
a csoportnak kell, hogy megfeleljen a szolgáltatás.

2. ábra

3
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

A 2. ábrán látható hogy az évek múlásával nı az interneten történı vásárlások száma. Egy
jól kialakított kereskedelmi oldal esetében könnyebb megtartani, és „megszerezni” a
vásárlókat. Feltehetıen az elkövetkezı években jelentısen nıni fog az interneten vásárlók
bázisa, és nem lesz annyira idegen ez a vásárlási forma. A munkájukhoz internetet használók
nagyobb része hatékonyabbnak találja az internet használatát (3. ábra).

3. ábra
Cél, hogy a felhasználók szemében egy eszközként szerepeljen a weboldal. A webáruház
üzemeltetıjének az-az érdeke, hogy egyes felhasználók rendszerességgel vásároljanak a már
meglévı és új termékek közül. Amennyiben elégedettek a szolgáltatással, biztos lehet a
vásárlói kör kiszélesedésében, és az árú forgalom növekedésében.
Az interneten történı vásárlás elınyökkel jár a vásárló és az eladó számára egyaránt.

Eladó:
• Önkiszolgáló vendégek
• Vásárló adatainak gyors elérése
• Könnyebb elszámolás a hivatalos szervek felé
• Internet kapcsolattal bárhonnan elérhetı az áruház
• Kisebb munkaerıigény
• Hatékony kommunikáció a vevıkkel

Vevı:
• 24 órás nyitva tartás
• Könnyen áttekinthetı, és szelektálható terméklista
• Gyors ügyintézés

Információk forrása [1]

4
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

3. Használt eszközök

3.1. PHP
A PHP elterjedt nyílt forráskódú szerveroldali programozási nyelv. Szintaktikája leginkább
a C programozási nyelvéhez hasonlít. Megalkotója Rasmus Lerdorfd.

A PHP nyelv túlnıtt eredeti jelentıségén. Születésekor csupán egy makró készlet volt,
amely személyes honlapok karbantartására készült. Innen ered neve is: Personal Home Page
Tools. Késıbb a PHP képességei kibıvültek, így egy önállóan használható programozási
nyelv alakult ki, amely képes nagymérető webes adatbázis-alapú alkalmazások mőködtetésére
is.

A PHP jelenleg hivatalosan a PHP: Hypertext Preprocessor (Hiperszöveg Elıfeldolgozó)


elnevezést használja.

Tulajdonképpen kiszolgáló-oldali programozási nyelv, amit jellemzıen HTML oldalakon


használnak. A hagyományos HTML lapokkal ellentétben azonban a kiszolgáló a PHP
parancsokat nem küldi el az ügyfélnek, azokat a kiszolgáló oldalán a PHP-értelmezı dolgozza
fel. A programban lévı HTML elemek érintetlenül maradnak, de a PHP kódok lefutnak. A
kódok végezhetnek adatbázis-lekérdezéseket, dinamikusan létrehozhatnak képeket, fájlokat
olvashatnak és írhatnak, kapcsolatot létesíthetnek távoli kiszolgálókkal. A lehetıségek száma
végtelen. A PHP kódok kimenete a megadott HTML elemekkel együtt kerül az ügyfélhez. A
Zend Technologies a PHP mögött álló elsı számú cég, a PHP alapjainak készítıi indították.
Az értelmezıt támogató kereskedelmi termékeket fejlesztenek, terméktámogatással. A
honlapjukon található referenciák egyértelmővé teszik a PHP egyre szélesedı elfogadottságát
a magasabb üzleti szektorban. A PHP továbbra is ingyenes termék, minden feladatra
elérhetıek költségmentes megoldások.

A PHP-t alapvetıen úgy tervezték, hogy alkalmas legyen számos operációs rendszeren való
használatra, együttmőködve különbözı kiszolgálókkal és adatbázis-kezelıkkel.

Hivatalos honlap: http://www.php.net/

5
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

3.2. MySQL
A MySQL egy több felhasználós, többszálú, SQL-alapú relációs adatbázis-kezelı szerver.

Az MySQL az egyik legelterjedtebb adatbázis-kezelı, aminek egyik oka lehet, hogy a


teljesen nyílt forráskódú LAMP (Linux–Apache–MySQL–PHP) összeállítás részeként
költséghatékony és egyszerően beállítható megoldást ad dinamikus webhelyek szolgáltatására.

A MySQL adatbázisok adminisztrációjára a mellékelt parancssori eszközöket ( mysql és


mysqladmin) használhatjuk. A MySQL honlapjáról grafikus felülető adminisztráló eszközök
is letölthetık: MySQL Administrator és MySQL Query Browser.

Széles körben elterjedt és népszerő alternatíva a PHP nyelven írt, nyitott forráskódú
phpMyAdmin. A phpMyBackupPro (amelyet szintén PHP-ban írtak) adatbázisok (akár
idızített, ismétlıdı) mentésére szolgál eszközül. A phpMyAdmin a MySQL adatbázisok WEB
alapú, teljes körő adminisztrációját teszi lehetıvé.

3.3. Apache

A legelterjedtebb nyílt forrású, szabadon terjeszthetı webszerver, amelynek különbözı


változatai többek között Windows, Linux és OS/2 operációs rendszerek alatt is futtathatóak.

3.4. HTML
A HTML (HyperText Markup Language) egy leíró nyelv, melyet weboldalak készítéséhez
fejlesztettek ki. Az SGML leegyszerősített változata, amely ma már internetes szabvánnyá
vált, a W3C (World Wide Web Consortium) támogatásával. Az aktuális változata a 4.01
amelyet lassan kiszorít az XHTML.

A HTML-t egy bizonyos Tim Berners-Lee fejlesztette ki. Akkor vált igazán népszerővé,
amikor (1993) elkészült (az NCSA webszerverhez) a Mosaic, az elsı grafikus internet-
böngészı (Unix rendszereken), ami HTML-t jelenített meg. Ez a böngészı késıbb megjelent
Machintoson és Windowson is.

A Mosaic projektbıl késıbb kilépett néhány fontos ember, és megalapította a Netscape


Communications Corporationt, amely kifejlesztette a Netscape Navigátor böngészıt. Ez a

6
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

legelterjedtebb és legnagyobb tudású böngészı volt 1996-ig, amikor is az Internet Explorer


vált a leggyakrabban használt böngészıvé. A HTML nyelvet szabványosították, valamint
ápolását és továbbfejlesztését pedig a WWW Consorcium vette át.

HTML általában szöveges állományokban található meg olyan számítógépeken, melyek az


internethez kapcsolódnak. Ezek az állományok tartalmazzák azokat a szimbólumokat,
amelyek a megjelenítı programnak leírják, hogyan is kell megjeleníteni, illetve feldolgozni az
adott állomány tartalmát. Megjelenítı program lehet egy webböngészı (web browser), aural
böngészı (olyan, amelyik a felhasználónak felolvassa a megjelenítendı szöveget), levelezı
program (mint például: Mozilla Thunderbird, Microsoft Outlook, stb.), valamint egyéb
eszközök, például mobiltelefon.

Az XHTML a HTML megfogalmazása XML-ben (a HTML SGML-ben van definiálva).


Gyakorlatilag nincs jelentıs eltérés a két nyelv között, csak a formai követelmények lettek
szigorúbbak.

3.5. Css

A CSS (Cascading Style Sheets) egy stílusleíró nyelv, mely a HTML vagy XHTML típusú
strukturált dokumentumok megjelenését írja le. Ezen kívül használható bármilyen XML alapú
dokumentum stílusának leírására is. A CSS specifikációját a World Wide Web Consortium
felügyeli.

A CSS segítségével az oldalaknak professzionális megjelenítés adható, mindezt úgy, hogy


egy stíluslapot (css fájlt) kell hozzá rendelni az összes oldalhoz, így egy esetleges változást,
stílusbeli módosítást az összes szükséges helyen, egy mozdulattal végrehajtható, anélkül,
hogy hosszú órákat kellene tölteni a forráskódok kézi szerkesztésével.

Munkáim során a XAMPP telepítı csomagot használom, mely egyszerően és gyorsan


telepíti az Apache 2.2.4-t, a MySQL 5.0.33-t, a PHP 5.2.1 és PHP 4.4.5-t windows-os
környezetre.

http://www.apachefriends.org/en/xampp-windows.html

7
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

3.6. Böngészık

Ezek a programok felelısek a felhasználói felületek megjelenítéséért. A webböngészık a


webszerverekkel HTTP protokollon keresztül kommunikálnak. A HTTP segítségével a
böngészık adatokat küldhetnek a webszervereknek, valamint weblapokat tölthetnek le róluk.
A leggyakrabban használt HTTP szabvány a HTTP/1.1, melynek teljes leírása az RFC 2616
alatt található meg.

Mivel többféle grafikus böngészı létezik, ezért a három leggyakrabban használt böngészı
használatával végzem az oldal fejlesztését.

• Microsoft Internet Explorer 6


• Mozilla Firefox
• Opera

4. ábra

A 4. ábra szemlélteti az Adatbázis-szerver és a Web-szerver kapcsolatát Internetes


felhasználás esetén.[3]

Eszközökrıl szerzett információk [2]

8
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

4. A szoftver-folyamat tevékenységei [5]

A szoftver folyamat olyan tevékenységek és kapcsolódó eredmények egymás utána, amely


egy szoftver terméket állít elı.

A jó szoftver tulajdonságai:
• Rendelkezzen a felhasználó által elvárt funkciókkal és teljesítménnyel
• Legyen karbantartható, üzembiztos
• Használható

A szoftver folyamat négy alapvetı tevékenységre bontható

1. Szoftver specifikáció:
Itt történik a szolgáltatások, követelmények meghatározása. Szükség esetén
megvalósíthatósági elemzés is történhet. Az egyes funkciókhoz prioritás rendelhetı.

2. Szoftver-tervezés és implementáció:
Elkezdıdik a specifikációt megvalósító szoftver struktúra megtervezése. Arhitekturális,
interfész, komponens, adatstruktúra, algoritmus tervezés. A terv kóddá (programmá)
alakítása, és a hibák eltávolítása.

3. Szoftver validáció:
Szoftver vizsgálata, hogy a specifikációnak, és a megrendelı igényeinek eleget tesz-e.
Rendszer tesztelése, szoftverben lévı hibák feltárása, egység teszt, elfogadási teszt.

4. Szoftver karbantartás:
A szoftver javítása, adaptív változtatása, kibıvítése. Ez a szakasz tart legtovább a
szoftver-fejlesztésben.

A tervezés folyamán fontos jól ütemezni a megfelelı szakaszokat, a jól átgondolt tervezési
struktúra idıt és energiát takarít meg. Amennyiben a szoftver-fejlesztést csapatban (team)
végzik elengedhetetlen ez a struktúra, de egyszemélyes munkánál is célszerő betartani. Egy
komplex feladat esetén ez a struktúra leegyszerősíti, kezelhetı mértekre bontja az adott
feladatott.

9
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

Különféle statikus és dinamikus modellek jöttek létre a szoftver fejlesztés gyorsabb és


egyszerőbb elvégzése érdekében. Statikusra példa a vízesés modell (Waterfall), spirális
modell (Spiral), vagy az evolúciós fejlesztési modell (Evolutionary Prototyping), dinamikusra
pedig a Scrum.

Az itt leírt négy tevékenység és a hozzájuk tartozó altevékenységek egy általános szoftver
létrehozását adják meg. A webáruház esetében nincs szükség minden egyes részletre, és a
különbözı egységeket akár össze is lehet vonni. Ennek oka, hogy az oldal bonyolultsága nem
igényel ilyen színtő tervezést. Ezért a leírt egységet rugalmasan kezelve láttam neki az
áruház megalkotásának. Ez egy ilyen kisebb projekt esetében megengedhetı, egy túlzott
tervezés esetleg bonyolítaná a programot, de mindenképp idıveszteséggel járna. Ehhez a fajta
tervezéshez fontos ismerni az alapot jelentı szoftver-folyamat tevékenységeit, ezért kerülnek
leírásra a tevékenységek.

10
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

4.1. Szoftver Specifikáció


Ebben a részben a szoftver mőködését és a mőködésére vonatkozó megszorításokat
definiálom. Meghatározom a webáruház funkcióit és fıbb mőködési momentumait.

Fontos ezt a szakaszt jól átgondolni és megtervezni mivel késıbb a szoftver fejlesztés során
annál könnyebb lesz a munka. Validáció során ki fog derülni, hogy megfelel a szoftver a
követelményeknek. Ennek fényében lehet eszközölni változtatásokat a követelményekben, de
csak óvatosan, apróbb változtatások hasznosak lehetnek, viszont nagy átalakítások esetén
kérdéses, hogy meg fog-e felelni a szoftver a megbízónak.

Lényeges a megrendelıvel a hatékony kommunikáció, minél pontosabb leírást ad a


követelményekrıl, annál könnyebben és precízebben írható le a specifikáció.
Megvalósíthatósági tanulmány készítése, ez annak vizsgálata, hogy a megrendelı kívánságai
kielégíthetık-e az adott szoftver- és hardvertechnológia mellett. Esetleg felhozhatók példák,
illetve kiindulási alapnak már kész rendszer.

Ezek után az elemzési tevékenységekbıl összegyőjtött információkat rendszerezni kell.

4.1.1. A megrendelı szemszögébıl

Fogyasztók

Az áruház kivitelezés elıtt feltétlenül tisztázni kell a célközönség szokásait, igényeit,


elvárásait a szolgáltatással kapcsolatban.

Gyakorlatban bárki igénybe veheti a szolgáltatás, de általánosságban kereskedık,


viszonteladók, cégek, és egyéb nagykereskedelemben érdekeltek lesznek partnerek.

Fizetési mód

A vevık nagy része még mindig a készpénzes fizetési módszert favorizálják. Ennek
tükrében egy hitelesítı email elfogadása után kerülhet sor a tényleges (személyes)
vásárlásra.

Nyilvántartás

Remélhetıleg a vevık elégedettek lesznek a teljes szolgáltatással (az áru minısége is


megfelelı), és további megrendelésekre lehet majd számítani. İket szolgálja ki az-az
adatbázis, mely tartalmazza adataikat. Itt jelentkezik a „valóságos” vásárlás egyik eleme a
törzsvendég.

11
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

Hitelesség

Úgy kell megalkotni a webáruházat, hogy az általa létrehozott dokumentumok hitelesek,


hibamentesek, könnyen értelmezhetık legyenek, és bizonyítékul szolgáljanak a vásárlást
illetıen. Természetesen nem fog hivatalos dokumentumként szolgálni, de megkönnyíti
annak kitöltését (kézpénzfizetési számla).

Használhatóság

Alapkövetelmény mind az eladók, mind a vevık részére, hogy fizikai helytıl függetlenül
tudják használni az áruházat.

4.1.2. Funkciók
A vásárlói oldal:

Regisztráció:
Bárki nézelıdhet, és pakolhatja kosarába a termékeket, de a megrendelések teljesítése csak a
regisztrált, és bejelentkezett tagokat illeti meg.

Belépés:
A regisztráció után teljes jogú ügyfele lesz az áruháznak a felhasználó. Rendelhet, írhat a
vendégkönyvbe, feliratkozhat a hírlevélre. A feledékenyebb felhasználóknak van lehetıségük
arra, hogy lekérdezzék jelszavukat.

Kosár:
Az oldalon mindig látható lesz a kosár tartalma, és a végösszeg. A kosárban lévı tételeket
lehet módosítani, törölni, és érvényesíteni.

Hírlevél:
Bármikor fel és le lehet iratkozni.

Egy hírlevél modullal ellehet érni, hogy azok a látogatók, akik most csak nézelıdnek a
honlapon, késıbb vásároljanak.

Vendégkönyv:
Itt közölhetik a regisztrált felhasználók, észrevételeiket, problémáikat, igényeiket. Ennek
alapján befolyásolhatnak más felhasználókat, remélhetıleg jó tapasztalataikat írják le, és így
jobban megbíznak majd az áruházban.

12
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

Keresés:
A felhasználóknak lehetıségük van keresni a termékek között, megadhatják keresési
feltételeiket.

Navigáció az oldalon:
A felhasználók mindig pontosan tudni fogják, hogy az áruház melyik részén tartózkodnak
éppen.

Adminisztrációs oldal:

Az áruháznak több adminisztrátora lehet, mint ahogy egy boltban több eladó. Számukra egy
gyors és könnyen használható felület kell, amin a következıket végezhetik el:

• Új kategória létrehozása
• Kategória módosítása
• Kategória törlése

• Új termék létrehozása
• Termék módosítása
• Termék törlése
• Aktív termék
• Kép feltöltése a termékhez
• Keresés a termékek között

• Vendégkönyv karbantartása
• Felhasználó törlése
• Email küldése az összes, a hírlevélre feliratkozott, és az egyes felhasználóknak
• Oldal számlálóinak megtekintése, nullázása

• Adminisztrátori jelszó módosítása


• Új adminisztrátor felvétele
• Kiszerelések és áfák felvétele, módosítása, törlése
• Rendelések kezelése
• Rendelések kiírása szöveges fájlba

13
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

A szoftver kialakítása során nagyobb prioritást élveznek a vásárlással kapcsolatos


funkciók, ilyen a kategóriákkal, termékekkel, megrendelésekkel kapcsolatos mőveletek. Csak
ezek befejeztével jöhetnek az egyéb funkciók, vendégkönyv, hírlevél. Ennek elvében kerülnek
kialakításra az egyes részegységek, idıben és energiában.

4.1.3. A vásárlás folyamata


1. Regisztráció: fontos hogy valós, és helyes adatokat közöljön a vásárló. A termékek
böngészése, kosárba helyezése regisztráció nélkül is megtörténhet. Regisztrációra a
kosár tartalmának megrendelésekor van szükség.
2. Kategóriaválasztás illetve keresés: termékeket a jobb áttekinthetıség végett
kategóriákba kell sorolni. Innen, vagy keresés alapján választja ki a vevı a kívánt
terméket.
3. Termék kiválasztása: miután kiválasztotta a kategóriát vagy lefutatta a megfelelı
keresést, megjelenek az egyes termékek. Itt végezhetı el a kosárba helyezés. Az adott
termékhez tartozhat egy kép is.
4. A kosár: a vásárlás végeztével, az összesítés pontnál, ha be van jelentkezve
megrendelheti a kívánt termékeket.

4.1.4. A termék útja a vásárlóhoz


Amint a vásárló érvényesíti a kosár tartalmát, az eladóhoz megérkezik a rendelés kérelme.
Amennyiben a rendelés teljesíthetı, a vevı kap egy email-t, ami tudatja az üzlet létrejöttérıl.
A termékek átvétele az árusítónál történik, mivel az itt történı rendelések nagy része 100 kg
felett van, így a postai csomagküldés szóba sem jöhet. Ez a gyakorlatban bevett szokás.
Probléma estén jönnek jól a valós vásárlói adatok, lehetıség van felvenni a kapcsolatot a
vevıvel, és megoldani a problémát.

4.1.5. Az oldallal szembeni elvárások


Fontos szót ejteni a felhasználói felületrıl, ami mind a vásárlói, mind az adminisztrációs
oldalra igaz. Az oldalak kinézetét a html és a css nyelv fogja meghatározni.

14
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

A vásárlókör ismertében kell megtervezni az oldal felépítését, kinézetét. Figyelembe kell


venni a szabványokat, és az alapvetı ergonómiai szempontokat. Ez azért fontos, mert egy jól
kialakított webáruház szélesebb körben válik ismertté, népszerővé, remélhetıleg ennek
függvényében a vásárlások száma is nıni fog.
Ellenkezı esetben, ha egy oldal lassú vagy nem lehet tájékozódni rajta, a felhasználók
inkább továbbállnak és keresnek egy másik oldalt a témában.

Ehhez a következı tényezıket kell figyelembe venni:

• Fontos a gyorsaság. Minél hamarabb tölti le az oldal a felhasználó, annál


élvezetesebb lesz számára a böngészés. A sebességet sok tényezı befolyásolja, a
kiszolgáló szerver teherbírása, sebessége, a felhasználó sávszélessége.

• Az oldal kinézete ne menjen a gyorsaság rovására. Legfontosabb az információ


szerzése, ehhez az információhoz kell minél hamarabb hozzájutattni a felhasználót.
Ennél az oknál fogva nem használok flash animációkat, nagymérető képeket,
különféle grafikus elemeket. A jól kiépített, könnyen használható felületnek nagyobb
hasznát veszik a felhasználók, mint egy túl díszített, képekkel teletőzdelt oldalnak.

• Css használatával egyszerőbb egységes oldalakat készíteni, és változtatásokat is


könnyebben lehet eszközölni.

• Lehetıleg minden böngészı program azonos formában jelenítse meg az oldalt.


Kisebb eltérések persze adódnak, de ez az oldal használhatóságát nem csorbíthatja.

• Sütik (cookie) engedélyezése nélkül is teljes funkcionalitással mőködjön az oldal.

• Navigáció: Egy felhasználó, ha az oldalhoz ér, könnyen fel tudja térképezni, mi hol
van, mire kell kattintani. A legfıbb cél, hogy a felhasználó az adott információt a
lehetı legrövidebb idın belül megtalálja.

• Javasolt a legtöbb gépen lévı alapértelmezett fontok használata, mivel ezek


általában könnyen olvasható betők.

• Kerülendı a rikító, szemet fárasztó színösszeállítást.

15
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

4.1.6. Felhasználói eset diagrammok

5.ábra (Eladó esetei)

6. ábra (vevı esetei)

16
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

4.2. Szoftver-tervezés és implementáció

Ez az eljárás, amelynek során a specifikáció egy futtatható rendszerré alakul át.


Szoftver-tervezés: olyan szoftver struktúra tervezése, amely megvalósítja a specifikációt.
Implementáció: a tervezett struktúrának végrehajtható kóddá alakítása.

Az egész rendszert kisebb, kezelhetı mérető alrendszerekre kell bontani, melyek közt
definiálni kell a kapcsolatot (architekturális tervezés). Minden egyes alrendszer számára meg
kell tervezni a többi alrendszer felé mutatott interfészét (interfész tervezés). A
szolgáltatásokat el kell helyezni a komponensekben és meg kell tervezni a komponensek
interfészeit (komponens tervezés).
Meg kell határozni és részletesen meg kell tervezni az implementációban használandó
adatszerkezeteket (adatszerkezet tervezés). Végül a szolgáltatások biztosításához szükséges
algoritmusokat kell meghatározni (algoritmus tervezés).

4.2.1. Általános felépítés


A specifikációban leírt webáruház megvalósításánál két nagy komponenst különböztetek
meg. Az egyik a vevıi oldal, a másik az adminisztrációs oldal. Ezek mint funkcióban, mint
kinézetben különböznek, de mégis szoros kapcsolat van közöttük.

Felhasználói (vevı) oldal


Korábban már utaltam a felépítésének egyes részeire, mint például a regisztrálás. 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 oldalal, 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 email 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.

17
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

Fontos hogy ellenırizve legyenek a felhasználóktól bekért adatok.

Az adminisztrációs (eladó) oldal


Az admin belépése az admin.php oldalon történik, helyen login név és jelszó esetében.
Itt 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. Itt 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.

4.2.2. Az adminisztrációs és a felhasználói (vevı) oldal kinézete

Már a kódolás során egy jól áttekinthetı felület kellett, melyen elkülöníthetık az egyes
egységek. Mivel kódolás közben is végzek hiba vizsgálatot, illetve ellenırzöm az
algoritmusok mőködésének helyességét ezért is fontos volt, hogy errıl a felületrıl tudjam
ellenırizni magam.
Az admin oldalon css segítségével egy gombhatású menüsor látható, mely menü pontok a
különbözı funkciókat tartalmazzák.

18
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

7. ábra (admin felület kinézete)


A vevıi oldalon kinézetét és elrendezését szintén css segítségével, hoztam létre. Ennek a
résznek az érdekessége, hogy a jobb oldalon található úgynevezett „dobozok” minden egyes
oldalon szerepelnek. Innen tájékozódhat a vevı az aktuális állapotáról, az elsı doboz
tulajdonképpen a menü. Itt tud a vevı belépni, regisztrálni, vendégkönyvet megnyitni, jelszót
lekérdezni, információkat szerezni az oldal mőködésérıl. Abban az esetben, ha bejelentkezett
a felhasználó, itt tud kilépni, és adatott módosítani. Következı doboz a kategóriák, itt lehet
böngészni a termékek között, és itt érhetı el a keresés. A harmadik dobozban a kosár
aktuális tartalma látható, ha a kosár tartalmaz már terméket, akkor jelenik meg az összesítés
hivatkozás. A negyedik doboz a számlálókat tartalmazza. Mivel az oldal dinamikus
tartalommal él, ebbıl következik hogy a dobozok mérete sem álladó. A cél az volt, hogy a
négy doboz egyként mozogjon, és tartalmuk ne fedje a másikat. Ennek megoldására a négy
doboz belekerül még egy dobozba, amit én csak „oldal falnak” hívok. Minden egyes doboz
egy php oldal tartalmaz. Melyet a require() függvénnyel hívok be, a következıképpen.

<div id="oldal_fal">
<div id="login"> <?php require("include/login.php"); ?> </div>
<div id="kategoria"><?php require("kategoria.php");?> </div>
<div id="kosar"><?php require("kosar.php");?> </div>
<div id="lab"><?php require("lab.php");?></div>
</div>

19
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

8. ábra (vásárlói felület kinézete)


Mint látható a kinézetnek nem tulajdonítottam nagy jelentıséget, mivel elsısorban php
programozás a szakdolgozat alapja, és nem a html és css használata. Természetesen egy
minimális ismeret szükségez ahhoz, hogy a szoftver áttekinthetı, és használható legyen. Ez a
felület alkalmas erre a célra, és a korábban leírt egyszerőség is érvényes rá.

A két felvétel már a kész programról készült, így talán jobban szemlélteti az oldal
felépítését.

4.2.3. Az adatbázis tervezése [4]

• 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.

20
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

• 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óba-adatokkal 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
• 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

A fentebb említett tervezési pontokat most itt egybevonom, és úgy fejtem ki az adott táblát.

21
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

Admin tábal:
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
email 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 bevezetem 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ész 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ó jelszava user_jelszo
Felhasználó email 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

22
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

Aru 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 kiszereles
és afa 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 kiszereles vagy a az afa 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 kategoria 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 kepek 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 aru 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
Kategoria 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

Kategoria 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 aru 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

23
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

Kepek 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

Kiszereles és afa 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 aru táblában a kiszerelés és afa 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
Áfa értéke (kulcs) Afa

Tábla KISZERELES
A kiszerelés egysége
(kulcs) Kiszereles

Megrendelesek_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 megrendelesek 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

24
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

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

Megrendelesek 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
aru 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

Vendegkonyv 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

Szamlalo 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

25
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

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 email-ek száma email
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 konyv_torol
Bejelentkezések száma login
Regisztrációk száma regisztralt

Az adatbázis felépítését az 9. ábra szemlélteti

9. ábra

26
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

4.2.4. Mysql használata PHP-ból

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);

Ezek után végezhetık mőveletek az adott adatbázissal. Mivel minden olyan php oldalnak
tartalmaznia kell ezeknek az utasításoknak amiben adatbázis használ a program, ezért ez egy
külön php oldalon fog szerepelni amit mindig meg kell hívni. Így elkerülhetı a felesleges kód
ismétlés, és egy esetleges változtatást is csak egy helyen kell elvégezni.

Az sql.php fájl tartalmazza a táblák létrehozásához szükséges összes információt, ez az


oldal a böngészıbıl megnyitva, automatikusan telepíti az oldal mőködéséhez szükséges
táblákat, és adat sorokat.

Itt egy részlet, ami egyben példázza a táblák létrehozásának módját. Itt csak az az SQL
szkript szerepel, amely a termékek tárolásáért felelıs táblát hozza létre:

CREATE TABLE `aru` (


`aru_id` int(11) NOT NULL auto_increment,
`kat_id` int(11) NOT NULL,
`aru_nev` varchar(20) collate latin1_general_ci NOT NULL,
`kiszereles` varchar(20) collate latin1_general_ci NOT NULL,
`aru_netto_ar` int(20) NOT NULL,
`aru_leir` varchar(255) collate latin1_general_ci default NULL,
`afa` int(3) default NULL,
`allapot` enum('0','1') collate latin1_general_ci default NULL,
PRIMARY KEY (`aru_id`)
)

27
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

Következı lépés, hogy a tábla mezıit értékekkel kell feltölteni. Az elızı példánál maradva
egy termék felvétele lesz bemutatva. Részlet az admin felület termekek.php oldalról, ahol már
a PHP szkript továbbítja az INSERT lekérdezést a MySQL kiszolgálónak:
$query_str="INSERT INTO aru(aru_nev,kat_id,kiszereles,aru_netto_ar,afa,allapot,aru_leir)
VALUES('$_POST[uj_ter_nev]',$_POST[uj_ter_kat],'$_POST[uj_ter_kiszerel]',
$_POST[uj_ter_ar],$_POST[uj_ter_afa],'1','$_POST[uj_ter_leir]')";

if(mysql_query($query_str))
{$uzen=$admin_uzen[7];}
else
{$uzen=$admin_uzen[8];}

Ennek eredményeként bekerül az adatbázisba egy termék. A mysql_query() függvény


sikeres végrehajtás esetén TRUE-val tér vissza, hiba esetén pedig FALSE-al az INSERT-nél.
Ezt kihasználva egy feltételes elágazás segítségével, egyszerően tudatható az adminnal a
mővelet sikeressége.

Adatok bevitele után szükséges lehet az adatok törlése. Szintén ezen az oldalon található a
termékek törlésére vonatkozó részlet is.

$query_str="DELETE FROM aru WHERE aru_id=$ertek";


if(mysql_query($query_str))
{$uzen=$admin_uzen[6];}

A törlés esetében felmerülnek olyan problémák, amikor a kapcsolatban álló tábláknál az


egyik sor törlésével a másik táblából egy sor feleslegessé, értelmetlenné válik. Ebben az
esetben használatos a kaszkádolt törlés, ekkor az a bizonyos felesleges sor is törlıdik a
táblából. Az oldal esetében a legösszetettebb törlés, ha egy kategóriát kell törölni. Ebben az
esetben már nincs értelme megtartani azt az árut, aminek a kategóriája törölve lett, de az áru
törlésekor a hozzá kapcsolódó képeket is kell törölni, mivel azok is feleslegessé váltak. Ennek
megoldása az elıbb leírt sorrend fordítottja. Elıször a termékekhez kapcsolódó képeket, majd
a kategóriához tartózó termékeket, végül a kategóriát kell törölni.

Az adatbázis használatának lényege az adatok használata. Ebben az esetben lekérdezésre


kerülnek a megadott tábla vagy táblák sorai és oszlopai

Itt egy egyszerő lekérdezés, ami a kategoria tábla összes sorát és oszlopát adja meg.
SELECT * FROM kategoria

28
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

Lekérdezések estében jóval összetettebb formák is léteznek, adható meg egy vagy több
feltétel a WHERE záradékkal, több feltétel esetén azokat logikai mőveletekkel (AND/OR)
kapcsolhatjuk össze. Megadható több tábla lekérdezése a JOIN, LEFT JOIN, RIGHT JOIN
segítségével. A sorokat lehet rendezni (ORDER BY) csoportosítani (GROUP BY), és megadni
a lekérdezendı sorok számát (LIMIT). A LIMIT használata nagy könnyedséget jelent majd a
termékek lapozásánál.

Felmerülhet az igény már felvett sor módosítására is. A következı rész a kategoriak.php-ból
a már létezı kategóriák módosításáért felelıs.

$query_str="UPDATE kategoria SET kat_nev='$_POST[kat_mod_nev]',


kat_leir='$_POST[kat_mod_leir]' WHERE kat_id=$_POST[kat_mod_id]";
mysql_query($query_str);

A leírtak inkább mysql–el kapcsolatosak, nem pedig a php-val. Mégis fontosnak tartom
ezek ismeretét, hiszen a csak így képezhetı egyszerőn és gyorsan egy dinamikus
tartalommal rendelkezı weboldal. Számomra ez az egyik legérdekesebb rész a php-ban,
szerintem részben ennek köszönheti azt a széles elterjedést, ami manapság tapasztalható.

29
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

4.2.5. Program kódolása

Következzék a tervezés során megfogalmazott információk forráskóddá alakítása,


pontosabban azok felhasználása a kódoláshoz. Mivel az egész program forrásának ismertetése
nem fér a szakdolgozat keretei közé, ezért csak a kulcs fontosságú és a számomra érdekes
részek kerülnek bemutatásra, ismertetésre. A forráskódot szükséges helyeken a szükséges
információval kommenteztem, így jobban áttekinthetı és értelmezhetı a kód. Az
áttekinthetıséghez kapcsolódik még a kódsorok betördelése, elkülönítése. Ezek
használatával a már korábban kódolt részek is hamar értelmezhetıvé vállnak, és könnyebben
lehet összeilleszteni az egyes oldalakat. A részletek minden esetben a programból
származnak, azzal a kiegészítéssel, hogy a kommenteket nem jelenítem meg, mivel ezek
ebben az esetben inkább zavaró tényezık. Néhány részletett folyamatábrával is szemléltetek.

Programozás során a függvények használatával egyszerősödik a forráskód, könnyebb azon


változtatni és az egyes függvények újrahasznosíthatók. A programozás során két fájlban
győjtöttem össze a függvényeket, egyik a vevıi oldal függvényeit tároló fugveny.php, másik
az admin fugvenyek.php oldala. Elıfordul, hogy egyes függvényeket mindkét felület
használja.

A kódolás során használom a php szuperglobális változóit. Az egyik legfontosabb a


$_SESSION, ez tárolja a munkamenethez rendelt változókat. A php munkamenet kezelése
lehetıvé teszi adatok megırzését az egymást követı oldal lekérdezések között. Minden
látogató egy-egy egyedi azonosítót kap, az úgynevezett munkamenet azonosítót (session
azonosítót). Ez vagy egy sütiben (cookie) tárolódik a látogató gépén, vagy az URL-ben
közlekedik oldalról oldalra. A követelmények között szerepelt, hogy az oldal mőködjön a
sütik használata nélkül is. Ennek megvalósítására az URL-ben továbbítom a session
azonosítót, amit az SID érték tárol. Fontos még a $_POST és $_GET szuperglobál asszociatív
tömbök, amelyek a HTTP protokoll POST illetve GET metódusai által a kiszolgálónak
továbbított adatokat tárolják. A fenti tömbök kulcsai ezeknek az adatoknak az azonosítói,
mint karakterláncok. A $_POST tömb esetében például az őrlap egy adott mezıjének name
attribútum értéke.

30
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

Eladói oldal

4.2.5.1. Admin beléptetése


Az adminisztrátorok beléptetése az admin.php oldalon történik, ahol az adatbázisból vett
adatokkal ellenırzıdik a belépni kívánó eladó login neve és jelszava. Amennyiben helyesek
az adatok az admin felület index.php oldalán találja magát.

if(!empty($_POST[admin_login]) && !empty($_POST[admin_jelszo]))


{
$query_str="SELECT * FROM admin WHERE admin_login='$_POST[admin_login]'";
$eredmeny=mysql_query($query_str);
if(mysql_num_rows($eredmeny)==1)
{
$elem=mysql_fetch_object($eredmeny);
if($elem->admin_jelszo==$_POST[admin_jelszo])
{
$_SESSION[admin_id]=$elem->admin_id;
header("Location: admin/index.php?".SID);
}
}
}

A $_POST[admin_login] és a $_POST[admin_jelszo] értékek a bejelentkezni kívánó


adminisztrátortól jönnek, ezek az értékek kerülnek összehasonlításra az admin táblából,
elıször a login név majd a jelszó. Egyezés esetében eltárolódik sessionben az admin
azonosítója, amelynek köszönhetıen látogathatja az admin felület összes oldalát. A header()
függvény ezek után az admin felület index.php oldalára irányítja az eladót.

Az eltárolt admin azonosító segítségével nem kell minden egyes oldalon ezt a procedúrát
végigjárni. Az eladó simán váltogathat az oldala között, de az illetéktelenek elıtt továbbra is
rejtett kell, hogy maradjon az oldal. Ennek megoldása nagyon egyszerő, minden
adminisztrátori oldalon el kell helyezni a következı feltételt.

if(!isset($_SESSION[admin_id]))
{
header("Location: ../admin.php");
}

31
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

Ha a $_SESSION tömbben nincs beállítva az admin azonosító, akkor egyszerően


visszakerül a felhasználó a bejelentkezı oldalra, annál a felhasználónál, akinél be van állítva,
nem történik semmi.

Ezt kihasználva történik az eladó kiléptetése is.


if($_GET[kilep]==1)
{
session_destroy();
header("Location: ../admin.php");
}

Amikor az eladó kilépés linkre kattint, a GET[kilep] értéke 1 lesz, és ekkor teljesül a feltétel.
A session_destroy() függvényt törli a session összes változóját, és ettıl fogva ismét be kell
jelentkeznie az eladónak.
A beléptetés mőködését egy folyamatábrával is szemléltetem, ami a 10. ábra

10. ábra

32
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

4.2.5.2. Kategória törlése


Már említettem a kategória törlés problémáját, most ismertetem a részletesebb megoldását.
Feladat már ismert, kategória törlése maga után vonja a hozzá tartózó termékek, és a
termékekhez tartózó képek törlését is.

if($_GET[del]==1)
{
$query_str="SELECT kicsi_kep,nagy_kep FROM kategoria JOIN aru JOIN kepek
ON aru.kat_id=kategoria.kat_id AND aru.aru_id=kepek.aru_id
WHERE kategoria.kat_id=$_GET[id]";
$eredmeny=mysql_query($query_str);
while($elem=mysql_fetch_object($eredmeny))
{
unlink("../termek_kep/$elem->kicsi_kep");
unlink("../termek_kep/$elem->nagy_kep");
}

$query_str="SELECT aru_id FROM aru WHERE kat_id=$_GET[id]";


$eredmeny=mysql_query($query_str);
while($elem=mysql_fetch_object($eredmeny))
{
$query_str="DELETE FROM kepek WHERE aru_id=$elem->aru_id";
mysql_query($query_str);
}

$query_str="DELETE FROM aru WHERE kat_id=$_GET[id]";


mysql_query($query_str);

$query_str="DELETE FROM kategoria WHERE kat_id=$_GET[id]";


mysql_query($query_str);
}

Az elsı lekérdezés megkeresi az adott kategóriába tartózó termékek képeinek a nevét, és az


unlink() függvény segítségével törlıdnek a termek_kep mappából. Miután a képek törölve
lettek, jöhetnek a kepek tábla törlésre szánt sorai, majd a kategóriába tartózó összes termék,
végül maga a kategória.

Azt, hogy melyik kategóriát kell törölni a $_GET[id] értéke határozza meg, ami maga a
törlendı kategória azonosítója. Itt is fellépnek problémák, mivel a kategória törlésénél olyan
termék is törlıdhet, ami éppen egy nem teljesített rendeléshez tartozik. A kategóriák kiírását a
kategoria_kiir_tabla() függvény végzi el, és ı hívja meg a torolheto() függvényt. A

33
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

torolheto($aru_id,$kat_id,$user_id) egy olyan függvény, ami eldönti a neki átadott


értékekbıl, hogy megrendelés alatt áll-e az elem. Ezt a függvényt használom a kategória, az
áru, és a felhasználó vizsgálatára. Paraméterezése úgy történik, hogy a törölni kívánt elem
azonosítóját megadom, a maradék kettı paraméter értéke pedig 0, mindezt a megfelelı
sorrendben. Azért kap 0 értéket a másik két paraméter, mivel az azonosítók automatikusan
inkrementálódnak és a kezdı érték 1, vagyis nem lehet azonosító a 0 érték. A torolheto()
függvény visszatérési értéke 1 ha a keresett sorok száma nagyobb mint 0, vagyis van olyan
sora a megadott táblának, ami köthetı egy még nem teljesített megrendeléshez.

function torolheto($aru_id,$kat_id,$user_id)
{
if($aru_id!=0)
{
$query_str="SELECT aru_id FROM megrendelesek JOIN megrendelesek_fej
ON rendel_id=fej_id WHERE aru_id=$aru_id AND allapot='0'";
}

if($kat_id!=0)
{
$query_str="SELECT kat_id FROM aru JOIN megrendelesek JOIN megrendelesek_fej
ON megrendelesek.aru_id=aru.aru_id AND rendel_id=fej_id
WHERE kat_id=$kat_id AND megrendelesek_fej.allapot='0'";
}

if($user_id!=0)
{
$query_str="SELECT user_id FROM user JOIN megrendelesek_fej
ON user_id = vasarlo_id
WHERE user_id=$user_id AND megrendelesek_fej.allapot='0'";
}

$eredmeny=mysql_query($query_str);
if(mysql_num_rows($eredmeny)>0)
{
return 1;
}

A paraméter átadásra a legjobb példa, ha megmutatom a függvényhívását a kategóriák


esetében.

34
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

function kategoria_kiir_tabla()
{
$query_str="SELECT * FROM kategoria ORDER BY kat_nev";
$eredmeny=mysql_query($query_str);
while($elem=mysql_fetch_object($eredmeny))
{
echo "<tr><td>".$elem->kat_nev."</td><td>".$elem->kat_leir."</td><td>
<a href=\"kategoriak.php?id=".$elem-
>kat_id."&mod=1&".SID."\">Modosít</a></td><td>";

if(torolheto(0,$elem->kat_id,0)==1)
{
echo "Megrendelés alatt</td></tr>";
}
else
{
echo "<a href=\"kategoriak.php?id=".$elem-
>kat_id."&del=1&".SID."\">Töröl</a></td></tr>"; }}}
Az adott kategória esetében teljesül a törölhetıség (nem tartozik teljesítetlen rendeléshez),
egy töröl link jelenik meg, melyre kattintva kapja értékül a $_GET[id] a törlendı kategória
azonosítóját.

4.2.5.3. Képek feltöltése


A törlés kapcsán felmerült hogy, a termek_kep mappában lévı képeket is törölni kell. Most
az kerül kifejtésre, hogyan kerülnek oda a képek. Egy képpárt lehetıség van hozzárendelni
egy termékhez a módosítás opcióban.

if(strlen($_FILES[kicsi_kep][tmp_name]) && strlen($_FILES[nagy_kep][tmp_name]))


{
$query_str="INSERT INTO kepek (aru_id) VALUES($_POST[kep_aru_id])";
mysql_query($query_str);

$query_str="SELECT LAST_INSERT_ID() as id";


$eredmeny= mysql_query($query_str);
$elem=mysql_fetch_object($eredmeny);
$kep_id=$elem->id;

$kicsi_nev="k_".$_POST[kep_aru_id]."_".$kep_id.".jpg";
$nagy_nev="n_".$_POST[kep_aru_id]."_".$kep_id.".jpg";
$query_str="UPDATE kepek SET kicsi_kep='$kicsi_nev', nagy_kep='$nagy_nev'
WHERE kep_id=$kep_id";
mysql_query($query_str);

$mappa = '../termek_kep/';

35
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

$fajl = $mappa . $kicsi_nev;


if(move_uploaded_file($_FILES['kicsi_kep']['tmp_name'], $fajl))
{$uzen=$admin_uzen[2];}
else
{$uzen=$admin_uzen[3];}

$fajl = $mappa . $nagy_nev;


if(move_uploaded_file($_FILES['nagy_kep']['tmp_name'], $fajl))
{$uzen=$admin_uzen[2];}
else
{$uzen=$admin_uzen[3];}
}
elseif(isset($_POST[kep_aru_id]))
{$uzen=$admin_uzen[3];}

Miután vizsgálat alá esett a feltölteni kívánt képek neve az strlen() függvénnyel, utána egy
új sor lesz beszúrva a képek táblába, ami tartalmazza a kép és áru azonosítókat. A
LAST_INSERT_ID() mysql függvénnyel lekérdezhetı a legutolsó auto_increment azonosító
értéke, ezt felhasználva rakható össze a képek neve. Amikor elkészültek a képek nevei,
bekerülnek az elıbb felvett sorba. A kép nevének az összetétele, kicsi kép esetében „k” -val,
nagy képnél „n”-el kezdıdik, azt követi az áru azonosítója, utána a kép azonosítója, végül a
jpg kép kiterjesztés. Azért jpg a kiterjesztés, mivel webes környezetben az egyik
legelterjedtebb forma, és könnyő képet jpg-vé konvertálni. Miután megvannak a képnevek,
csak move_uploaded_file() függvénnyel fel kell tölteni, megadva paraméterként a feltöltendı
állomány eredeti nevét, és azt a nevet (útvonallal kiegészítve) amivel felkerül a termek_kep
mappába. A kép feltöltés sikerességérıl egy rövid üzenet tájékoztatja az admint. Hiba
vizsgálatot nem végzek a feltölteni kívánt állomány kiterjesztésére.

4.2.5.4. Rendelések teljesítése


A vevık által érkezett rendeléseket az eladói felület a megrendeles.php oldal tartalmazza.
Elsınek a megrendelések fej részei kerülnek kiírásra, amik a megrendeles_fej táblából jönnek.
Az allapot értéke teljesítet rendelés esetén 1, ellenkezı esetben 0. Kiíratáskor ezt az értéket
figyelembe véve kerül megjelenítésre az állapot.

$allapot=$elem->allapot=='0'?'<strong>Folyamatban</strong>':'Feldolgozva';

Minden rendelés fejnél van egy Megtekintés gomb, melyre kattintva megjelennek a rendelés
részletei, a megrendelı adatai, a rendelés adatai és a rendelt termékek. Amennyiben a rendelés

36
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

állapota Folyamatban, akkor a Teljesítés gombra kattintva lehet a rendelést teljesíteni. Az


állapot átállítása a következıképen történik.

$query_str="UPDATE megrendelesek_fej SET allapot='1' WHERE


rendel_id=$_GET[teljesit_id]";
mysql_query($query_str);

A $_GET[teljesit_id] tartalmazza a teljesített rendelés azonosítóját. Amennyiben az email


küldés lehetısége megvan (van email kiszolgáló telepítve), a rendszer értesíti a vevıt
rendelése elfogadásáról. Ehhez csupán a mail() függvényre van szükség.

mail($cim,$tema,$szoveg)

A teljesített rendelésekre tovább már nincs szükség, ezek egy txt fájlba kerülnek kiírásra.
Erre azért van szükség, mert ha módosítás történik az árukat illetıen, akkor a változtatás
jelentkezik egy már leadott rendelésen. Ez programozás technikailag helyesen mőködne, de
ellentmond az úgynevezett „üzleti logikának”. Hiszen ha egy rendelés alatt álló termék ára
módosítva lesz, akkor maga a rendelés összege is módosul. A rendelések kiírásának az is
haszna, hogy a megrendelesek és megrendelesek_fej táblák feleslegessé vált sorai törlıdnek,
de továbbra is megtekintheti az eladó a teljesített megrendeléseket a következı formában.

11. ábra (Rendelések formátuma a txt fájlban)


A kiírt rendelések helye az admin mappán belüli a rendelesek mappában találhatók, a pontos
dátummal címezve.

37
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

Vásárlói oldal

4.2.5.5. A kosár mőködése


A következı 12. ábra szemlélteti a kosár logikai mőködését, azt, hogy hogyan kerülnek a
termékek és a hozzájuk tartózó mennyiségek a kosárba.

12. ábra
Mivel bárki pakolhat a kosarába, és csak rendelés esetén kell belépni, ezért a kosár tartalmát
sessionban tárolom. A $_SESSION['kosar'] egy asszociatív tömböt tárol, melyet a kosárba
kerülés sorrendjével indexelek, az indexelés 0-tól indul. Egy index két értéket tartalmaz, az
egyik a megrendelni kívánt termék azonosítója, a másik a rendelni kívánt mennyiség. A kosár
értékeinek kinyerésére jó példa, a baloldalon található kosár tartalma doboz.

38
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

$tomb=$_SESSION['kosar'];

foreach($tomb as $i=>$ertek)
{
echo $tomb[$i][1]."db ".kosarba_kiiras($tomb[$i][0])."<br>";
$osszeg +=kosar_osszeg($tomb[$i][0],$tomb[$i][1]);
}

Foreach segítségével bejárható az egész tömb, ez azért fontos mert, ha törlıdik egy termék
a kosárból, akkor is kinyerhetı minden elem. A kosárban szereplı áru azonosítóját
$tomb[$i][0] a rendelt mennyiséget pedig $tomb[$i][1] tartalmazza. A kosár logikai
mőködését szemléltetı 12. ábrán látható, hogy mik a kosárba helyezés feltételei. Fontos
vizsgálni a rendelt mennyiséget, nem adható meg csak 0-tól nagyobb egész szám, mivel nincs
értelme például -1 vagy „a” mennyiségnek. Ezek után fontos eldönteni, hogy a kosár
tartalmazza már a megrendelt terméket, ha igen akkor csak a mennyiséget kell növelni,
ellenben bekerül a kosárba a termék és a mennyiség is.

if($_POST[db]>0 && (((string)(int)$_POST[db]) === $_POST[db]))


{
$van=0;
foreach($tomb as $i=>$ertek)
{
if($tomb[$i][0] ==$_POST[kos_aru_id])
{
$van=1;
$van_id= $i;
}
}

if($van==1)
{
$tomb[$van_id][1]+=$_POST[db];
$_SESSION['kosar']=$tomb;
}
else
{
$tomb[]=Array($_POST['kos_aru_id'],$_POST['db']);
$_SESSION['kosar']=$tomb;
}
}

A $_POST[db] tartalmazza a rendelt mennyiséget, a $_POST['kos_aru_id'] pedig a termék


azonosítóját.

39
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

A vevı dönthet úgy, hogy nem szeretné érvényesíteni a megrendelést, vagy kezdene egy
másikat, erre az esetre tudja a kosár teljes tartalmát üríteni. Ennek megoldása, hogy egy üres
tömböt kap értékül.

$_SESSION[kosar]=array();

A kosár összesítésénél lehetıség van egyesével törölni termékeket, és változtatni a rendelt


mennyiségen. Az unset() függvény segítségével van lehetıség a tömb egy sorának törlésére, a
$_GET[sor] tartalmazza a törölni kívánt sort.

unset($tomb[$_GET[sor]]);
$_SESSION['kosar']=$tomb;

Mennyiség módosítás esetében, ismét kell vizsgálni az értékre.

if($_POST[mod_db]>0 && (((string)(int)$_POST[mod_db]) === $_POST[mod_db]))


{
$tomb[$_POST[sor_id]][1]=$_POST[mod_db];
$_SESSION['kosar']=$tomb;
}

Ezen lehetıségeket használva a vevı összeállíthatja a rendelést, és ha be van jelentkezve


meg is rendelheti azt. A rendelést elıször az adatbázisban el kell tárolni, majd az elıbb leírt
módon üríteni a session-t. Az adatbázisba írásért a megrendeles() függvény a felelıs.
Mőködése a következı. Elıször a megrendelesek_fej táblába szúrja be az új megrendelés
adatait, majd az azonosítót lekérdezve a megrendelesek táblába belepakolja a fejhez tartozó
rendelt termékeket, és mennyiségeket.

function megrendeles()
{
$query_str="INSERT INTO
megrendelesek_fej(vasarlo_id,vasarlas_datum,allapot,osszeg)
VALUE($_SESSION[id],now(),'0',$_SESSION[kosar_osszeg])";
mysql_query($query_str);

$query_str="SELECT LAST_INSERT_ID() as id";


$eredmeny= mysql_query($query_str);
$elem=mysql_fetch_object($eredmeny);
$megrendel_id=$elem->id;

40
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

$tomb=$_SESSION['kosar'];
foreach($tomb as $i=>$ertek)
{
$query_str="INSERT INTO megrendelesek(fej_id,aru_id,mennyiseg)
VALUES($megrendel_id,".$tomb[$i][0].",".$tomb[$i][1].")";
mysql_query($query_str);
}
}

A kosár megrendelésekor hívódik meg ez a függvény, és ezek után az eladó már láthatja a
megrendelést. A rendelés után a vevı a kezdı oldalon találja magát, ahol értesül a rendelés
beírásáról.

if($_GET[megrendel]==1)
{
megrendeles();
$_SESSION[kosar]=array();
$_GET[megrendel]=0;
header("Location: index.php?rendel=1&".SID);
}

4.2.5.6. Keresés a termékek között


A megvalósítás során ez volt az a terület, aminél sok probléma jelentkezett. A problémák
onnan erednek, hogy a felhasználónak mindig az általa keresett termékeket kell látnia. Mivel
több száz termék is szerepelhet, ezért lapozást vezettetem be, egy oldalon egyszerre 5 termék
látható, így könnyebb az áttekintés. Vagyis lapozás során mindig a megfelelı 5 termék
jelenjen meg. Akkor is, ha egy terméket kosárba pakol a vevı, vagy éppen akkor jelentkezik
be.
Elsı lépésnek elı kell állítani a keresési stringet, amit a vevı egy őrlapról küld el. Ezt a
mőveletet a keresesi_string() függvény végzi, melynek egyetlen paramétere, hogy ki kéri a
lekérdezést. Mivel ezt a függvényt használja az eladó is.

function keresesi_string($ki)
{
if($ki=="user")
{
$query_str="Select * from aru join kategoria On aru.kat_id=kategoria.kat_id WHERE
aru.allapot='1'";
$and=1;
}
else
{

41
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

$query_str="Select * from aru join kategoria On aru.kat_id=kategoria.kat_id";


$and=0;
}
if(!empty($_POST[keres_nev]))
{
if($and==0)
{$query_str.=" WHERE aru_nev LIKE '%$_POST[keres_nev]%'";}
else
{$query_str.=" AND aru_nev LIKE '%$_POST[keres_nev]%'";}
$and=1;
}

if(isset($_POST[keres_ter_kat]) && $_POST[keres_ter_kat]!="all")


{
if($and==0)
{$query_str.=" WHERE aru.kat_id=$_POST[keres_ter_kat]";}
else
{$query_str.=" AND aru.kat_id=$_POST[keres_ter_kat]";}

$and=1;
}

if(isset($_POST[keres_ter_kiszerel]) && $_POST[keres_ter_kiszerel]!="all")


{
if($and==0)
{$query_str.=" WHERE aru.kiszereles='$_POST[keres_ter_kiszerel]'";}
else
{$query_str.=" AND aru.kiszereles='$_POST[keres_ter_kiszerel]'";}

$and=1;
}

if(!empty($_POST[min_ar]) && !empty($_POST[max_ar])&&


(((string)(int)$_POST[min_ar]) === $_POST[min_ar]) &&
(((string)(int)$_POST[max_ar]) === $_POST[max_ar]))
{

if($and==0)
{$query_str.=" WHERE aru_netto_ar BETWEEN $_POST[min_ar] AND
$_POST[max_ar]";}
else
{$query_str.=" AND aru_netto_ar BETWEEN $_POST[min_ar] AND
$_POST[max_ar]";}

$and=1;
}

if(isset($_POST[keres_ter_afa]) && $_POST[keres_ter_afa]!="all")


{
if($and==0)

42
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

{$query_str.=" WHERE afa=$_POST[keres_ter_afa]";}


else
{$query_str.=" AND afa=$_POST[keres_ter_afa]";}

$and=1;
}

if(isset($_POST[ker_rendez]))
{
$query_str.=" ORDER BY $_POST[ker_rendez]";
}

$_SESSION[sor]=mysql_num_rows(mysql_query($query_str));

return $query_str;
}

A lekérdezés aszerint kerül összeállításra, hogy milyen keresési értékek lettek átadva. A
függvény visszatér a keresési stringgel, és megadja, hogy az adott kereséshez hány
eredménysor tartozik. Ez a lapozásnál hasznos, mivel ez alapján lehet eldönteni, hogy hány
terméket kell lapozhatóvá tenni. A lapozás megoldására a mysql LIMIT elıírását használtam.
Aminek meg kell adni azt, hogy hányadik sorttól, és mennyi sor írjon ki az adott
lekérdezésben. A lapozás mőködtetéséhez linkeken keresztül állítom be a kívánt oldalt.
A lekérdezés sessionban eltárolom, így mindig a megfelelı keresési feltételen belül
lapozhatok. Akkor, ha a vevı a kosárba helyez, pontosan ugyan arra az oldalra kerül vissza,
ez igaz a bejelentkezésre is. Fontos ezt lekezelni, mivel ha ez nem így mőködne, az
megnehezítené a vásárlást, hiszen mindig újra kéne keresni, majd lapozni.

Az áttekinthetıség érdekében külön jönnek az egyes kód részletek, abban a sorrendben,


ahogy a forráskódban is vannak.

Amikor egy termék a kosárba kerül, marad az aktuális oldal.

$sor_szam=$_SESSION[sor];
$elso=$_GET[elso];
$query_str=$_SESSION['query_string'];

Itt hívódik meg a keresesi_string() függvény, minden egyes új keresés során.

43
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

$query_str=keresesi_string("user");

Ez a rész akkor teljesül, ha léptetés van az oldalak között.

$query_str=$_SESSION[query_string];

Majd jöhet a megfelelı keresés beállítás után a mysql futtatás.

$sor_szam=$_SESSION[sor];
$eredmeny=mysql_query($query_str." LIMIT $elso,5");
if(mysql_num_rows($eredmeny)==0)
{echo "<center>".$user_uzen[2]."</center>";}
while($elem=mysql_fetch_object($eredmeny))
{

A while ciklusban íródnak ki megfelelı formában a termékek. A forma kiírását nem


részletezem, ez inkább a html-hez tartozik. Az adatbázisból kinyert adatokat, táblázat
segítségével rendeztem a következı formába.

13. ábra(a termék kiírás elrendezése)


A kosár gomb hatására lesz elküldve a termék azonosítója és a rendelt mennyiség.
Majd a mysql lekérdezést sessionban eltárolom.

$_SESSION['query_string']=$query_str;

Ez után jön az oldalak léptetését beállító kód sor. Vizsgálni kell, hogy van e léptetési
lehetıség valamely irányban. Ezt mindig az $elso értékéhez kell viszonyítani, ezért kell
például a lekérdezés összes sorának a száma, mert így tudható meg, hogy az utolsó oldalon jár
a vevı.

44
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

if($elso>0)
{
echo "<a href=\"".$_SERVER[PHP_SELF]."?elso=
".($elso5)."&keres=3&".SID."\"> Elızı </a>";
}

echo ($utolso/5).". oldal ";

if($elso<$sor_szam-5)
{
echo "<a href=\"".$_SERVER[PHP_SELF]."?elso=
".$utolso."&keres=3&".SID."\"> Következı </a>";
}

Ez a lapozás hasonlóan mőködik, ha a vevı a kategóriák szerint kíván válogatni, csak ott a
keresési string helyett egy lekérdezés van állandóan.

mysql_query("SELECT aru_id FROM aru


WHERE kat_id=$_SESSION[kategoria] AND allapot='1'");

Az eladónak lehetısége van egy terméket aktivá, vagy passzivá tenni. A vevık csak az aktív
termékeket látják.

4.2.5.7. Képek megjelenítése


A termékekhez tartózó képek megjelenítéséért a kep_kirak() függvény a felelıs, amely
paraméterként a termék azonosítóját várja. Egyszerő kivitelezés érdekében használok itt
javascript-et. Akkor, ha az áruhoz nem tartozik kép, a kep mappában lévı k_nincs_kep.jpg
képet illeszti be. Azoknál a termékeknél ahol van kép, ott a termek_kep mappában található
hozzátartozó képet jeleníti meg. A képre kattintva megjelenik a termékhez tartózó nagy kép,
ezért felelıs a script. Ekkor a nagy_kep.php oldat nyitja meg egy külön ablakban, ami
megkapja a kép azonosítóját. A függvény egy <IMG> html elemmel tér vissza, ami bekerül az
elıbb leírt termék kiírásba.

function kep_kirak($aru_id)
{
$query_str="SELECT * FROM kepek WHERE aru_id=$aru_id";
$eredmeny=mysql_query($query_str);

if(mysql_num_rows($eredmeny)==0)
{
$kep ="<img src=\"kep/k_nincs_kep.jpg\" border=0 width=100 height=100>";

45
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

}
else
{
$elem=mysql_fetch_object($eredmeny);
$kep="<a href=\"nagy_kep.php?kep_id=".$elem->kep_id."\" onclick=\"javascript:
window.open('nagy_kep.php?kep_id=".$elem-
>kep_id."','','resizable=no,toolbar=no,menubar=no,scrollbars=no,status=no,directories=no,wi
dth=600,height=500, top=200, left=200');return false\"><img src=\"termek_kep/".$elem-
>kicsi_kep."\" border=0 width=100 height=100></a>";
$_SESSION[kep_id]=$elem->kep_id;
}
return $kep;
}

A programban természetesen ennél több funkció van, és az általam leírt megoldások más
módszerekkel is megvalósíthatók. A programozás során voltak olyan problémák melyek
igényelték azt, hogy más módszerrel közelítsem meg, mint ami az eredeti elképzelés volt. A
kódolás során igyekezetem úgy alkotni a forráskódot, hogy az esetleges változtatások minél
könnyebben menjenek.

46
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

4.3. Szoftver validáció

Ebben a szakaszban a már kész programot kell vizsgálni. Ellenırizni kell, hogy a
specifikációban leírtaknak eleget tesz-e a program. Majd tesztelni kell, hogy felszínre
kerüljenek az egyes hibák.

A specifikációban foglalt összes megvalósítani kívánt egységet, sikeresen kódoltam. Az


egységek képesek együtt mőködni, és így egy rendszert alkotni. Igyekeztem már a tervezés
során úgy kialakítani a rendszert, hogy az esetleges javítások, és változtatások hamar és
könnyen elvégezhetık legyenek. Illetve új elemek, funkciók könnyen beépíthetık legyenek.

4.3.1. Tesztelés
A megvalósított rendszert tesztelni is kell, mivel így derül ki, hogy a specifikációnak
megfelelı termék jött-e létre. A tesztelésnek több módszere is van, ezek közül igyekeztem
minél többet használni.

Elsı a kódolás közbeni tesztelés. Célszerő a kódoláskor professzionális fejlesztıi


környezeteket használni, mint például a PHPED,a ZendStudio, vagy EMS SQL Manager.
Ezeknél az eszközöknél már pusztán a szintaktikai kiemeléssel észrevehetık a hibák, és
egyes hibákat már ık is feltárnak. Elsıdleges hibaforrás az elgépelésbıl, a rossz
szintaktikából fakad. Ezeket általában nem nehéz felderíteni és javítani, köszönhetıen az
eszközöknek, és a php által küldött hiba üzeneteknek, melyek megadják a hiba helyét is.

A kódolás során folyamatosan teszteltem, mint az egységeket, mint az addig kész


rendszert. A teszteléshez nagy segítség volt az echo() amivel az egyes értékeket tudtam
megjeleníteni. Fontos volt ez, mivel az oldalak között áramló adatokról mindig pontos képet
kaptam, az értékek kiíratásával mindig eljutottam a probléma forrásához. Másik nagy segítség
a mysql_error() függvény volt, amely a mysql-tıl érkezı hibaüzeneteket jeleníti meg.

Egyes hibákról az admint és a vevıt is kell tájékoztatni, erre létrehoztam az uzen.php oldalt,
ahol tömbben tárolom az egyes üzeneteket.

$hiba[11]="Érvénytelen email forma!";

47
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

Majd a megfelelı feltétel esetén iratom ki az üzenetet.

if(mysql_query($query_str))
{$uzen=$admin_uzen[9];}
else
{$uzen=$admin_uzen[10];}

echo $uzen;

Így egyrészt megállapíthatom az adott egységrıl a mőködés helyességét a tesztelés során, és


a késıbbiekben informálhatom a felhasználókat.

Fontos a vizsgálni a felhasználóktól érkezı adatokat, arra az esetre, ha nem a megfelelı


értéktartományból kívánnak értéket átadni. Ezen szélsıséges értékekkel is végeztem
teszteléseket, ebbıl tudhattam meg, hogy mőködnek-e a hibakezelési funkciók. A vizsgálatra
itt van két példa.

Ez a feltétel vizsgálja, hogy megfelelı-e a rendelt mennyiség


if($_POST[db]>0 && (((string)(int)$_POST[db]) === $_POST[db]))

Például ha, a rendelt mennyiségre „aaa” értéket adom meg, nem fog változni a kosár tartalma.

Ez pedig, hogy megfelelı-e a vevı által megadott email.


if(ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]
([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$",$_POST[reg_email]))

Ez az ellenırzés a http://weblabor.hu/forumok/temak/1809 helyrıl származik, úgy


gondoltam valamilyen szintő ellenırzést az email is kíván, ezért kerestem hozzá ezt a
kódrészletet, amely egy úgynevezett reguláris kifejezéssel veti össze adott email címet [13].

A tesztelés folyamán többször is kipróbáltam teljesen végig járva a vevık és eladók


lehetıségeit, elvégeztem a rendelés összeállítását, bejelentkeztem, rendeltem, az admin
oldalról teljesítettem a rendelést. Termékeket, kategóriákat vittem fel, módosítottam, töröltem,
az adatokat, és visszaellenıriztem az adatbázisból. Igyekeztem a felhasználók szemszögébıl
elvégezni a tesztelést, bár a rendszerre már nem tudok laikus szemmel nézni. Éppen ezért
töltöm fel az oldalt egy ingyenes php kiszolgálására is alkalmas tárhelyre. Így élesben az
internetrıl is tudom tesztelni, és felmérhetem a hatékonyságát is. A tesztelésben megkértem

48
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

számos ismerıst, hogy ellenırizzék le a rendszer mőködését, és osszák meg velem az


észrevételeiket. Abban az esetben, ha hibát vélnek felfedezni, kértem ıket a pontos
hibaismertetésre, esetleg dokumentálására. Az oldal üzemeltetése és tesztelése nem zárul be a
szagdolgozat elkészítésével, vagyis a mellékletben megadott címen bárki kipróbálhatja.

A tesztelés megkönnyítésére létrehoztam tesztadatokat, ami az áruház esetében valós


termékeket, árakat, kategóriákat, kiszerelések jelent. Azért jó valós adatokkal dolgozni, mert
így könnyebb észrevenni a hibákat. Ezeket az adatokat mellékelem a programhoz.

A tesztelés során felmerülı hibák nagy részét javítottam, de elıfordultak hibák, amiket
nem sikerült. Ilyen például a vendégkönyvbe íráskor, ha a szöveg automatikusan tördelıdik, a
hiba nem az oldal fı funkcióiban jelentkezett. Megoldás jelent, hogy az admin tudja törölni a
hozzászólást.

Hiba jelentkezik a mail() függvény használatakor, ha nincs email kiszolgáló telepítve. Az


email tesztelésénél az ingyen tárhelyen aktiváltam a mail használatát, és mindent rendben
találtam.

A tesztelés során felmerült egy hiba a keresésnél. Az volt a hiányosság, hogy ha keresési érték
nem számot kap értékül az összegnél, akkor hibás keresési eredményt ad vissza. Ezt a hibát az
egyik tesztelı ismerısöm jelezte, amit ki is javítottam.

Az oldal feltelepítettem egy szerverre, telepítettem a teszt adatokat, majd regisztráltam a


személyes adataimmal. Pakoltam termékeket a kosárba, változtattam a kosár összetételén,
majd megrendeltem. A telepítés során létrehozott adminnal belépve, érvényesítettem a
megrendelést, és meg is érkezett a hitelesítı email a címemre.

Teszteltem a jogosultságokat is. Megpróbáltam jogosultság nélkül belépni az admin


felületre úgy, hogy az URL-ben megadtam az egyik admin oldal címét. Az elvártak szerint
mőködött, visszadobott a beléptetı oldalra. Szintén ellenıriztem, hogy csak abban az esetben
tudok rendelni a vásárlói oldalról, ha be vagyok jelentkezve, és itt is rendben volt.

49
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

4.4. Szoftver karbantartás

A szoftver karbantartása a rendszeren történı változtatások folyamata, miután a rendszer


egyszer „munkába” állt. A karbantartás költsége akár a fejlesztés költségeinek többszöröse is
lehet, de sokkal kisebb kihívás, mint egy eredeti szoftver kifejlesztése. A szoftver
életciklusának ez teszi ki a legnagyobb részét. Használat közben jelentkezı problémák
kiküszöbölésébıl, és a felmerülı új igények kielégítésébıl áll ez a rész.

4.4.1. Továbbfejlesztési lehetıségek


A program fejlesztése közben felmerültek már bennem fejlesztési lehetıségek, illetve már
bejáratott webáruházak megtekintésével is sok hasznos funkciót lehet ellesni.
1. Egy adott termékhez tartozó hozzászólások, ahol ki lehet fejteni a termékkel
kapcsolatos észrevételeket, véleményeket. Ennek a megoldása hasonló, mint a
vendégkönyvé.
2. Több kép hozzárendelése egy termékhez, ehhez az adatbázis készen áll.
3. Az áruház forgalmától függıen akár az eladó is kiszállíthatja a rendeléseket.
Ebben az esetben egy szállítási költség kalkulátor kell létrehozni.
4. Egy termék több kategóriába sorolása, ehhez egy kapcsolótáblát kellene
felvenni. Elıfordulnak olyan termékek, amiket nem is olyan egyszerő csak egy
kategóriába sorolni.
5. A gyakran ismételt kérdések (GYIK) oldal létrehozása. Az oldal üzemeltetése
során felmerülı kérdések, és megválaszolásuk egy dokumentumba győjtése.
6. Az adminisztrátori tevékenységek naplózása. Ebbıl tudható meg, hogy az egyes
eladók milyen tevékenységeket és mikor végeztek. Ehhez egy olyan függvényt kell
létrehozni, amely az adott tevékenységnek megfelelı paramétereket eltárolja egy
dokumentumban.
7. Stílus lapok kialakítása. A felhasználóknak lehetıségük lenne az ı ízlésüket
kielégítı színsémákat használni. Ehhez a már létezı 1.css fájlt kellene átalakítani,
és tárolni melyik felhasználónak mi a sémája.
8. Az oldal kinézetét egy grafikus szakemberrel együttmőködve továbbfejleszteni.

50
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

5. Felhasználói dokumentáció

5.1. Webáruház telepítése

1. Az áruházhoz tartozó fájlokat fel kell másolni a szerverre.


2. A config.php fájlban a megadott helyen meg kell adni az oldal email címét, és a pénz
nemét.
3. Az include/db.php fájlban meg kell adni a mysql használatos paramétereket, itt egy
példa erre.

4. Az sql.php állomány futatása a böngészıben, amennyiben helyesek a mysql


használatához magadott paraméterek, ez a szkript telepíti a táblákat a megadott
adatbázisban. Alapértelmezésként létrehoz egy admint, ezzel lehet bejelentkezni
elıször az admin felületre.
5. Amennyiben a futtatás után a „Törölje az sql.php állományt” kiírás látható, és semmi
más. Akkor a táblák telepítése sikeres volt. A késıbbi véletlen futtatás megelızve,
törölni kell a sql.php állományt.
6. Az oldal használatra kész.

Az admin felületre a belépést, azt automatikusan létrejött admin felhasználóval történik.


Login név: admin
Jelszó: admin

A belépést követıen ajánlott a jelszavat módosítani, illetve fel lehet venni új


adminisztrátort is.

Az oldal telepítésének leírást mellékeltem az a webáruházhoz is, Telepites.txt néven.

51
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

5.2. Üzemeltetési leírás


Az adminisztráció felület használatát tartalmazó leírás az Oldal adatai menüpontban a
Segítség linkre kattintva érhetı el. Azért döntöttem úgy, hogy az áruházba beépítem, mert így
mindig elérhetı lesz az oldal mőködésének leírása.
A vevıi oldalon is mellékelve van a használati útmutató, amit az Információk menüpont
megnyitásával lehet elérni.

A teljesített rendelések elérhetık az admin mappán belüli rendelesek mappában.


A termékekhez rendelt képek a termek_kep mappában találhatók.

5.3. Teszt adatok


Az áruházhoz mellékeltem teszt adatokat. Amiket a következıképpen kell telepíteni.
1. A teszt_adat mappában lévı teszt_adat.php fájt futatni kell a böngészıben.
2. A teszt_adat mappán belüli termek_kep mappa tartalmazza a termékekhez
kapcsolódó képeket, ennek a tartalmát az áruház termek_kep mappájába kell
másolni.

5.4. Szükséges hardver és szoftver


A vevı és az eladói oldal használatához és mőködtetéséhez egy internet böngészı program
szükséges.
Javasolt böngészık:Mozilla Firefox, Opera, Internet Exploer
Ajánlott felbontás: 1024 X 786

Az áruház telepítéséhez szükséges egy webszerver, egy adatbázis kiszolgáló, és egy php
értelmezı. Ezen eszközök legegyszerőbb telepítési módja a XAMPP telepítı csomag
használata. Ami ingyenesen letölthetı a http://www.apachefriends.org/en/xampp.html címrıl,
de mellékelem a program mellé is.

52
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

6. Összefoglalás

A szakdolgozat célja egy nagykereskedelemben használható, könnyen kezelhetı, és


karbantartható, termékek értékesítésére alkalmas program volt. A rögzített követelményeknek
eleget téve sikerült létrehoznom ezt a kereskedelmi egységet. A fı funkciók mellet sikeresen
megvalósítottam az áruház hatékonyabb mőködését elısegítı egységeket is. Legfontosabb
funkció volt, a termékek és a hozzá tartozó adatok felvétele, karbantartása, majd a termékek
értékesítése. A tesztelés során már kibontakozott egy kép bennem, hogy milyen
hatékonysággal képes ellátni a feladatát a szoftver, de az egyik fı célom, hogy az oldalt valós
vásárlói tevékenységek alatt mőködjön. Vagyis szeretném megoldani, hogy olyan
környezetben használják, mint amire terveztem. Remélhetıleg a közeljövıben ez meg fog
valósulni, és így tudni fogom milyen színvonalú terméket készítettem.

A téma kiválasztása óta szélesítettem ismereteimet és tapasztalataimat, átfogó képet kaptam


az aktuális technikákról. Megismertem a szoftverkészítés menetét, sikerült alkalmaznom a
nagyobb projektek esetében használatos elveket. Elsajátítottam a MySQL adatbázis kezelı
használatát alapszinten, és betekintést nyertem az adatbáziskezelés elméletébe. Sikeresen
telepítettem és használtam az Apache webszervert, és megfigyelhettem az internet mőködését
kicsit részletesebben. Ami számomra a leghasznosabb volt, hogy megtanultam egy olyan
programozási nyelvet, ami egyesíti az elıbb leírtakat, könnyen használható, bıséges
szakirodalommal rendelkezik, és rengeteg feladat megoldására képes. Ezért is kívánom mind
ez irányú tudásomat, mind az elkészített programot tovább bıvíteni. Reményeim szerint
szakdolgozatom jó ajánlólevél lehet, mivel ezen e területen áll szándékomban dolgozni a
jövıben.

53
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

7. Felhasznált szakirodalom és források


[1] A magyar társadalom és az internet 2005 végén
Cím: http://www.tarki.hu/adatbank-h/kutjel/pdf/a880.pdf

[2] Wikipedia
Cím: http://hu.wikipedia.org/

[3] Adatbázisok elmélete, tervezése, és egy gyakorlati alkalmazás a B2C elektronikus


kereskedelembıl
Cím: http://www.peetsoft.hu/publikaciok/B2C_adatbazis_modellezes.pdf

[4] forrás: http://www.ujhelyi.sulinet.hu/x3/c3/e_4.htm

[5] Szervezési ismeretekkel kapcsolatos információk


Cím: http://rs1.szif.hu/~heckenas/okt/lifecyc.pdf

[6] Matt Zandstra: Tanuljuk meg a PHP4 használatát 24 óra alatt


2001 Kiskapu Kft.

[7] Julie C. Meloni: Tanuljuk meg a MYSQL használatát 24 óra alatt


2003 Kiskapu Kft.

[8] Varga Csaba: Webáruház fejlesztése

[9] Amit a CSS-rıl feltétlenül tudni kell


Cím: http://web.axelero.hu/fodorsi/html/css1.html

[10] Horváth Sándor: Web oldalak használhatósága a példák tükrében


GAMF 2005

[11] PHP kézikönyv


Cím: http://www.php.net/manual/hu/

[12] Prog.hu
Cím: http://www.prog.hu/katalog/4670/PHP.html

[13] Weblabor
Cím: http://weblabor.hu/

[14] Tutorial.hu
Cím: http://www.tutorial.hu/

[15] Xampp telepítı készlet


Cím: http://www.apachefriends.org/en/xampp.html

54
Zsáki Erik Nagykereskedelmi webáruház fejlesztése

8. Melléklet

• A webáruház megtekinthetı az interneten a http://www.zoldsegshop.extra.hu/ címen.


Létrehoztam egy vásárlót, amivel be lehet jelentkezni.
Login név: vasarlo
Jelszó: vasarlo
• Az eladói oldalra a bejelentkezés a http://www.zoldsegshop.extra.hu/admin.php
címen, az alapértelmezett adminnal.
Login név: admin
Jelszó: admin

A mellékelt CD tartalma:
• A szakdolgozat szövege doc és pdf kiterjesztésben
• A weboldal forrása
benne az adatbázist, és a teszt adatokat létrehozó php fájlok
• Xampp telepítı csomag

55

You might also like