nagykereskedelmi webáruház fejlesztése
TRANSCRIPT
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 1/56
SZAKDOLGOZATNagykereskedelmi webáruház fejlesztése
Konzulens:Ujvárosi György
Dózsa György Gazdaságiés MőszakiSzakközépiskola és SzakiskolaKalocsa
Készítette:Zsáki Erik Számítástechnikai programozóOKJ 54 4641 05
Dózsa György Gazdaságiés MőszakiSzakközépiskola és SzakiskolaKalocsa
2 0 0 7
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 2/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
1
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
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 3/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
2
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élyesentö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 formacsak 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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 4/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
3
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
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 5/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
4
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]
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 6/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
5
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ámavé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/
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 7/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
6
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 ( H yper T ext M arkup 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
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 8/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
7
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 (C ascading S tyle S heets) 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
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 9/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
8
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/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 10/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
9
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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 11/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
10
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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 12/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
11
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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 13/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
12
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ítiannak 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ókA 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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 14/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
13
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
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 15/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
14
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 folyamata1. 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ánttermé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óhozAmint 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 avevıvel, és megoldani a problémát.
4.1.5. Az oldallal szembeni elvárásokFontos 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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 16/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
15
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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 17/56
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 18/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
17
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ésA 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ár ba, olvashat a vendégkönyv ben. Í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ák ba 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, emailküldése az oldal email címére, vagy a navigálás az oldalon.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 19/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
18
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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 20/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
19
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ı doboztulajdonké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ók at 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>
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 21/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
20
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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 22/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
21
• 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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 23/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
22
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.
User tábla:
Itt tárolódnak a felhasználóknak az adatai. Nevük, jelszavuk, email címük, tartózkodásicí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 amegrendelések_fej táblához, egy a többhöz kapcsolattal.
Tábla USERFelhasználó azonosító(kulcs) user_idFelhasználó neve user_nevFelhasználó login neve user_loginFelhasználó jelszava user_jelszoFelhasználó email címe user_email
Felhasználó születésidátuma user_szul_idoFelhasználó országa user_orszagFelhasználó irányító száma user_ir_szamFelhasználó települése user_telepulFelhasználó utcája user_utFelhasználó ház száma user_haz_szamFelhasználó telefon száma user_telKér-e hírlevelet? hir_level
Tábla ADMINAdmin azonosító (kulcs) admin_idAdmin neve admin_nevAdmin login neve admin_loginAdmin jelszava admin_jelszo
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 24/56
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 25/56
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 26/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
25
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_FEJRendelés azonosító (kulcs) rendel_idVásárló azonosító vasarlo_idA vásárlás dátuma vasarlas_datumTeljesített vagy feldolgozás alatt allapotVá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 MEGRENDELESEKMegrendelés azonosító (kulcs) sor_idEz azonosítja, hogy a rendelés melyik fejheztartozik fej_idA megrendelés terméke aru_idAz á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_idA hozzászóló felhasználó azonosítója user_idHozzászólás dátuma datumHozzá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
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 27/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
26
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 SZAMLALOElküldött email-ek száma emailTörölt felhasználók száma torolt_user Az oldalt látogatók száma latogatokTeljesített rendelések száma rendelesElfelejtett jelszavak kérelmének száma felejt_emailVendégkönyvbe írások száma konyv_ir Vendégkönyvbe törlések száma konyv_torolBejelentkezé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
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 28/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
27
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égestá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`)
)
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 29/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
28
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
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 30/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
29
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 (G ROUP 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ó.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 31/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
30
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ésenem 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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 32/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
31
Eladói oldal
4.2.5.1. Admin beléptetéseAz 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");
}
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 33/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
32
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
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 34/56
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 35/56
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 36/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
35
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éseA 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/';
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 37/56
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 38/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
37
á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' WHERErendel_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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 39/56
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 40/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
39
$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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 41/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
40
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 INTOmegrendelesek_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;
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 42/56
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 43/56
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 44/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
43
{$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üllapozhatok. 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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 45/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
44
$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ı.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 46/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
45
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 aruWHERE 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éseA 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>";
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 47/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
46
}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,width=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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 48/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
47
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ínrekerü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ésA 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és bı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épetkaptam, 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!";
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 49/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
48
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ékek kel 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
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 50/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
49
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 adatok kal 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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 51/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
50
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égekA 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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 52/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
51
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 semmimá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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 53/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
52
5.2. Üzemeltetési leírásAz 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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 54/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
53
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.
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 55/56
Zsáki Erik Nagykereskedelmi webáruház fejlesztése
54
7. Felhasznált szakirodalom és források
[1] A magyar társadalom és az internet 2005 végénCím: http://www.tarki.hu/adatbank-h/kutjel/pdf/a880.pdf
[2] WikipediaCím: http://hu.wikipedia.org/
[3] Adatbázisok elmélete, tervezése, és egy gyakorlati alkalmazás a B2C elektronikuskereskedelembılCí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 alatt2001 Kiskapu Kft.
[7] Julie C. Meloni: Tanuljuk meg a MYSQL használatát 24 óra alatt2003 Kiskapu Kft.
[8] Varga Csaba: Webáruház fejlesztése
[9] Amit a CSS-rıl feltétlenül tudni kellCí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ébenGAMF 2005
[11] PHP kézikönyvCím: http://www.php.net/manual/hu/
[12] Prog.huCím: http://www.prog.hu/katalog/4670/PHP.html
[13] Weblabor Cím: http://weblabor.hu/
[14] Tutorial.huCím: http://www.tutorial.hu/
[15] Xampp telepítı készlet Cím: http://www.apachefriends.org/en/xampp.html
8/6/2019 Nagykereskedelmi webáruház fejlesztése
http://slidepdf.com/reader/full/nagykereskedelmi-webaruhaz-fejlesztese 56/56
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