Eindwerk aangeboden door Vandenabeele Tomas voor het behalen van de graad van Gegradueerde in de Multimedia en Communicatie Technologie Academiejaar 2001-2002
Departement Provinciale Industriële Hogeschool
Opzet van een internationale E-commerce site
2
Eindwerk aangeboden door Vandenabeele Tomas voor het behalen van de graad van Gegradueerde in de Multimedia en Communicatie Technologie Academiejaar 2001-2002
Voorwoord Na een niet te onderschatten opleiding van 3 jaar Graduaat Multimedia en Communicatietechnologie is het zover. De laatste beproeving. Vele opdrachten zijn hieraan voorafgegaan en hebben allemaal bijgedragen tot het voltooien van mijn eindwerk. Dit eindwerk handelt over het opzetten van een E-commerce-site voor wereldwijde verkoop van tapijten. Om dit werk te kunnen schrijven heb ik dus zelf zo ‘n applicatie moeten verwezenlijken. Het resultaat is te bekijken op www.rugs-carpets.biz en verliep in opdracht van Boomtex. Dit werk kan een leidraad zijn voor ontwikkelaars die iets gelijkaardig willen doen. Dit eindwerk is het resultaat van een jaar hard werken. Dit heb ik mede te danken aan de steun en inzet van de mensen rondom mij. Eerst en vooral wil ik de heer Koen Devos bedanken die veel van zijn kostbare tijd heeft opgeofferd bij het uitdenken van oplossingen bij problemen en om de bedrijfsvisie goed over te brengen. Hij had het volste vertrouwen in mij en in de moeilijke momenten heeft hij me altijd gesteund. Ook wil ik mijn promotor, de heer Hans Ameel, bedanken die altijd voor me klaarstond wanneer ik met moeilijke dilemma’s zat en bij het oplossen van technische problemen. Vooral ook wil ik mijn ouders en vriendin bedanken die altijd optimistisch gebleven zijn en mij door dik en dun gesteund hebben. Graag zou ik ook mijn vrienden en collega-MCTstudenten willen bedanken voor de hulp en nodige ontspanning in het afgelopen schooljaar. Pierre Huyssentruyt en Ruth Bossuyt wil ik ook bedanken voor de technische informatie betreffende de tapijten, de steun en om mijn project geregeld te evalueren. Tenslotte wil ik het volledige MCT-team bedanken voor de prachtige, boeiende opleiding die wij dankzij u konden beleven. Vandenabeele Tomas
4
Inhoudstafel Voorwoord .................................................................................................................. 3 Inhoudstafel ................................................................................................................ 4 Inleiding ...................................................................................................................... 6 1 Voorstudie – Research......................................................................................... 7 1.1 Bruikbare technologieën en diensten ........................................................... 7 1.1.1 De database.......................................................................................... 7 1.1.2 Programmeerwerk................................................................................. 7 1.1.3 Domeinnaam......................................................................................... 7 1.1.4 Webserver............................................................................................. 8 1.1.5 Beveiliging en betaling .......................................................................... 8 1.1.6 Transport............................................................................................... 8 1.1.7 GUI en grafische elementen.................................................................. 8 1.1.8 Orderafhandeling .................................................................................. 9 2 Concept.............................................................................................................. 10 2.1 Intern .......................................................................................................... 10 2.2 Extern......................................................................................................... 10 2.3 Uitwerking .................................................................................................. 10 2.3.1 Database............................................................................................. 10 2.3.2 Programmeerwerk............................................................................... 10 2.3.3 Domeinnaam....................................................................................... 11 2.3.4 Keuze webserver en hosting ............................................................... 11 2.3.5 Beveiliging en betaling ........................................................................ 11 2.3.6 Transport............................................................................................. 11 2.3.7 Grafische User Interface ..................................................................... 12 2.3.8 Grafisch............................................................................................... 12 2.3.9 Orderafhandeling ................................................................................ 12 2.4 Grafische voorstelling van het concept....................................................... 13 2.5 Te realiseren workpackages ...................................................................... 14 2.5.1 De database........................................................................................ 14 2.5.2 Het programmeerwerk ........................................................................ 14 2.5.3 Externe partners.................................................................................. 14 2.5.4 GUI en grafisch ................................................................................... 15 2.5.5 Varia.................................................................................................... 15 2.6 Planning ..................................................................................................... 15 3 Implementatie .................................................................................................... 17 3.1 Domeinnaam en Hosting............................................................................ 17 3.1.1 Domeinnaam....................................................................................... 17 3.1.2 Hosting ................................................................................................ 18 3.1.3 MyDomain.com ................................................................................... 19 3.2 Transport.................................................................................................... 19 3.2.1 De FedExDatabase............................................................................. 20 3.3 De hoofddatabase ...................................................................................... 21 3.3.1 Verzamelen van informatie.................................................................. 21 3.3.2 Wat moet er nu in de database komen? ............................................. 23 3.3.3 Soorten Relaties.................................................................................. 23 3.3.4 Het ER-diagram .................................................................................. 24
5
3.3.5 De tabellen .......................................................................................... 24 3.3.6 Relationeel model ............................................................................... 26 3.3.7 Het opvullen/aanpassen van de database .......................................... 26 3.4 Bank Card Company .................................................................................. 28 3.5 Implementatie van de website .................................................................... 29 3.5.1 Iets over de gebruikte talen ................................................................. 29 3.5.2 Schematisch overzicht van de navigatie ............................................. 30 3.5.3 Vertalen van de navigatie naar een framestructuur............................. 33 3.5.4 Het uitvergroten van de afbeeldingen (Thumb.js) ............................... 33 3.5.5 Global.asa ........................................................................................... 35 3.5.6 Het winkelsysteem .............................................................................. 36 3.5.7 Accountbeheer .................................................................................... 42 3.5.8 Het betaalsysteem (in samenwerking met banksys) ........................... 45 3.5.9 Overige pagina’s ................................................................................. 51 3.6 Grafisch...................................................................................................... 51 Besluit....................................................................................................................... 53 Bijlage....................................................................................................................... 54 1. Aansluitingsaanvraag Bank Card Company ...................................................... 54 3. Index.css ........................................................................................................... 57 2. Code van de confirmatie (conf.asp)................................................................... 61 Figurenlijst ................................................................................................................ 64 Verklarende woordenlijst .......................................................................................... 65 Bronnenlijst............................................................................................................... 66
6
Inleiding Tegenwoordig bestaan er al heel wat bedrijven die aan verkoop op afstand doen. E-comerce is één van die mogelijkheden. Er worden vooral boeken, cd’s en software te koop aangeboden op het internet. Mede omdat daar veel beoordelingen worden over geschreven. Nu deze methode van verkopen al wat meer ingeburgerd raakt, bedacht de heer Koen Devos, mentor van mijn eindwerk, de idee om zijn producten(tapijten) te koop aan te bieden op internet. Het doel van dit eindwerk is het opzetten van een volledig uitgebouwde E-commerce site voor de wereldwijde verkoop van tapijten. Dit eindwerk is extern en wordt gemaakt voor Devos-Caby / Boomtex. Boomtex verkoopt in tegenstelling tot Devos-Caby rechtstreeks aan particulieren. Daar in E-commerce meestal aan particulieren verkocht wordt, valt mijn eindwerk onder de hoede van Boomtex. Aangezien de maatschappelijke zetel van Boomtex zich bij Devos-Caby bevindt, verliep de eindwerkperiode vooral bij Devos-Caby. Voor de implementatie van het geheel sta ik er alleen voor. De heer Koen Devos zal me wel met raad en daad bijstaan bij het nemen van kritische beslissingen. Op welke manier ik dit project tot een goed einde zal brengen, is bijna volledig vrij. Het moet gewoon financieel haalbaar zijn en winstgevend op een termijn van 2 jaar. Ook werd er gevraagd om de database in Access te maken zodanig dat de mensen binnen het bedrijf later zelf eventueel aanpassingen kunnen doen. Een andere vereiste is dat het op gehuurde webservers gebeurd zodanig dat er geen risico bestaat dat het bedrijfsnetwerk in de problemen komt door één of andere reden. Het moet voor eender wie mogelijk zijn om een bestelling te plaatsen, net zoals een boek of CD door eender wie kan besteld worden. Het is de bedoeling dat de klant in een heel korte tijd zijn bestelling kan maken. De vervoerskosten moeten onmiddellijk in rekening worden gebracht en de klant kan betalen met VISA of Mastercard. Wanneer de transactie geslaagd is wordt de betaling met de koerierdienst direct afgehandeld en kan die koerierdienst diezelfde dag nog om de bestelde producten komen. Bij de ontwikkeling zal ik vooral trachten gebruik te maken van ASP omdat ik hier al enige ervaring mee heb. Dit gecombineerd met clientside javascript en HTML zou moeten voldoende zijn om tot een krachtige toepassing te komen.
Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
7
1 Voorstudie – Research 1.1 Bruikbare technologieën en diensten 1.1.1 De database De database ontwikkelen in Access, MySQL of SQLserver? De database vormt als het ware de basis van de inhoud van het E-commerce project. Het bevat de klantgegevens en de gegevens van de verschillende producten. De connectie tussen webapplicatie en webserver moet vlot verlopen. De database moest vooropgesteld gemakkelijk aanpasbaar zijn voor mensen binnen het bedrijf met weinig PC-ervaring en mocht geen extra kost inbrengen. Er wordt nog bekeken of er een stock wordt bijgehouden omdat er zwaar zal moeten worden geïnvesteerd in voorraad en ruimte.
1.1.2 Programmeerwerk Programmeren in ASP (VB-Script, Java-Script of C-Script), ASP.Net, PHP of JSP? Hier moest ik rekening houden met mijn eigen kunnen en kennis en ging mijn voorkeur al van in het begin uit naar ASP en ASP.net omdat ik daar het meest voeling mee heb. Daarbij aansluitend komt dan ook de vraag welke editor er gebruikt zal worden. Er bestaan vele soorten editors, ik geef een korte toelichting bij 2 meest gebruikte (op MCT vlak): • Textpad: o Goedkope oplossing o Geen intellisense o Krachtige editor o Geen debug functie o Geen bibliotheken o Redelijk overzichtelijk • Microsoft Visual InterDev: o Intellisense o Debugging mogelijk o Onderdeel van Visual Studio o Bevat bibliotheken en een krachtige helpfunctie o Heel overzichtelijk
1.1.3 Domeinnaam .com of .biz? .be is uitgesloten daar we internationaal te werk gaan. Met de komst van de nieuwe extensie, .biz, zijn E-commerce sites niet meer aangewezen op .com alleen. Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
8
.biz Is een goed alternatief wanneer de vooropgestelde .com’s al bezet zijn. Het nadeel is dat .biz nog niet zo bekend is als .com en dus minder vertrouwen wekt.
1.1.4 Webserver Kiezen voor IIS of Apache? Mijn aangewezen PC bevat Windows 2000. De applicatie moet extern draaien. Niet op een eigen webserver dus, maar op een gehuurde server. Dit uit enerzijds uit veiligheidsoverwegingen en anderzijds om een snelle verbinding te garanderen. Dus ging ik op zoek naar betaalbare, veilige webservers.
1.1.5 Beveiliging en betaling De beveiliging van gevoelige informatie (onder andere kredietkaartgegevens) zelf voorzien of overlaten aan een externe firma? Hier moeten we er rekening mee houden dat het gaat om een internationaal project en dat uitstraling dus heel belangrijk is. Iedere blunder op vlak van beveiliging kan fataal zijn voor een beginnend E-commerce project. (nationale) Bedrijven die hiervoor kunnen instaan zijn: Ogone: • Goedkoop • Minder bekend (internationaal) • Niet uitbreidbaar naar SET en banxafe modules Banksys: • Redelijk duur • Bekend • SET – Banxafe mogelijkheden (zonder extra kosten)
1.1.6 Transport Ook hier heerst een verscheidenheid aan mogelijkheden (FedEx, De Post, DSL, …) Het bedrijf heeft al een relatie en voordelen met FedEx. Ook biedt FedEx een web-API aan om de orders rechtstreeks aan hen door te geven. Toch moeten we bekijken of het transport van de goederen vlot en efficiënt verloopt met FedEx. De klant zal er niet tevreden mee zijn wanneer hij 6 weken moet wachten op een tapijt (het zijn geen superexclusieve producten).
1.1.7 GUI en grafische elementen Hoe gaan we de grote bitmap-bestanden (een 120-tal) van circa 1 MB omzetten naar kleine gif-bestanden (2 keer Æ thumbnails)? Dit moet in één keer kunnen gebeuren met een batch. Het enige programma dat dit kan en waarvan ik kennis heb, is Adobe Photoshop.
Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
9
De GUI moet overzichtelijk zijn en een internationale, zakelijke uitstraling hebben. Het is ook de bedoeling om in een mum van tijd te bestellen, zonder al te veel tussenstappen. Er mag in geen geval verwarring ontstaan bij de eindgebruiker.
1.1.8 Orderafhandeling Wordt er een dagelijks een update gedaan van de orderdatabase? Komt ieder order apart binnen per bestelling?
Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
10
2 Concept 2.1 Intern • • •
Het bedrijf beschikt over een licentie van Office 2000. Het bedrijf beschikt over een licentie van CuteFTP Het bedrijf beschikt over een licentie van Photoshop.
Mijn toegewezen PC is een Pentium III, 1000MHz met 128 MB RAM en is uitgerust met IIS.
2.2 Extern Wat is er zeker van buitenaf nog nodig? • Een (beveiligde) webserver die niet aan het bedrijfsnetwerk hangt. • Transport van de goederen. • Een SSL – verbinding op de betaalpagina’s • Kredietkaartvalidering en processing
2.3 Uitwerking 2.3.1 Database Waarom wordt er nu zonder stock gewerkt? Wanneer we alle aangeboden tapijten in alle kleuren optellen komen we aan 111 stuks. Deze zijn beschikbaar in 6 verschillende maten, dat maakt al 666 stuks. Wanneer we constant 10 stuks in stock willen houden komen we aan een totaal van 6660 stuks. Da vergt een grote opslagruimte en een grote investering van Boomtex aan Devos-Caby. Aangezien er een Office 2000 licentie voor handen was, kies ik voor Access. De mensen binnen het bedrijf zijn vertrouwd met de Office omgeving en moest de database enorm uitbreiden kan er later eenvoudig geëmigreerd worden naar SQL server.
2.3.2 Programmeerwerk Ik programmeerde in Textpad (Visual InterDev enkel daarom aanschaffen zou zonde zijn van het geld). In school wordt textpad ook veel gebruikt. Daarom kan ik er goed mee overweg. Het spreekt voor zich dat ik geen softwarepakket dien te gebruiken voor mijn winkelwagentje (we zijn ten slotte mct’ers). Programmeren gebeurt in ASP (VBscript) omdat dit mij het meest vertrouwd is en omdat daar veel informatie over te vinden is ivm E-commerce. Aanvankelijk zou de dot net syntax gebruikt worden, maar daar deze nog in een betatestfase zat in het begin van het schooljaar heb ik dan maar ASP gekozen. Uiteraard zal hier ook HTML - Javascript en CSS nodig zijn. Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
11
2.3.3 Domeinnaam Het registreren van een “.com” domeinnaam wordt wat bemoeilijkt doordat de aantrekkelijke namen onbeschikbaar zijn. Daarom zullen wij de komst van de “.biz” – extensie afwachten. De “.biz” – extentie slaat op “business” en komt in ons geval wel goed uit. Het zal in het begin wel wat moeilijk zijn om bekend te raken, maar dat komt wel.
2.3.4 Keuze webserver en hosting De keuze van de webserver was vooraf al bekend: IIS. Dit omdat ik meest met de Windows omgeving vertrouwd ben en er Windows 2000 op mijn aangewezen pc stond. Qua hosting bedrijven heb ik veel opties. Met Brinkster had ik al enige ervaring. Ook mensen uit de bedrijfswereld raden mij dit bedrijf sterk aan. Punten die mij extra beïnvloedden: • Goedkope oplossing (13$ setup; 13$ per maand) • FTP toegang • Databasebeveiliging en Access - ondersteuning • Uitbreidbaar met extra modules tegen betaling • 60 MB webruimte • snelle server • IIS • Uitstekende helpdesk
2.3.5 Beveiliging en betaling De kredietkaartvalidering en processing zullen we ook over laten aan een extern bedrijf. Dit omdat dit toch delicate zaken zijn om zelf te gaan valideren. Aanvankelijk zou Element daar voor instaan, maar hun modules hebben zij doorgegeven aan Banksys. Banksys laat vele betaalplatformen toe, en dit voor dezelfde prijs. Zij zorgen ook voor een beveiligde SSL verbinding wanneer de klant zijn kredietkaartgegevens invult, dus daarvoor moet ook al geen extra bedrijf meer voor worden gevonden. Om betalingen te mogen aanvaarden moeten wij eerst goedkeuring krijgen van Bank Card Company. Om die goedkeuring te krijgen, moeten nog een aantal formaliteiten doorlopen worden.
2.3.6 Transport Het transport van de tapijten gebeurt met FedEx omdat er al een contract loopt met FedEx onder Devos-Caby. De FedEX ship API zal waarschijnlijk niet worden gebruikt. Brinkster zal dit hoogst waarschijnlijk niet toelaten op hun servers. Ten tweede wordt er toch zonder stock gewerkt en dus moet er pas iets worden afgehaald wanneer het uit productie is (of in de stock van Devos-Caby aanwezig) en niet wanneer er besteld wordt.
Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
12
De persoon van Devos-Caby die nu verantwoordelijk is voor FedEx zal de bestellingen van de E-commerce site er ook bijnemen. Wanneer een besteld product klaar is wordt dit van productie uit naar die persoon gemeld. De vervoersprijzen liggen vast in een excellblad, specifiek opgemaakt voor Devos-Caby. Die prijzen zijn afhankelijk van het land van bestemming, het gewicht en de grootte van het tapijt. Aan sommige landen kan of wil FedEx ook niet leveren (zoals bv Afghanistan). Het spreekt voor zich dat wij daarin moeten volgen en deze landen niet opnemen in onze bestelformulieren.
2.3.7 Grafische User Interface De GUI moet zeer duidelijk en vlot zijn aangezien ons beeld van de eindgebruiker eerder naar een ‘computerleek’ gaat dan naar een ‘computerfreak’. Ingewikkelde navigatiesystemen zijn hier dus niet van doen.
2.3.8 Grafisch De bronbestanden van de tapijten die ik binnenkrijg zijn bmp-bestanden in 5 kleuren (het aantal kleuren in een tapijt) deze kleuren moeten ‘door elkaar’ worden gesmeten uit veiligheidsoverwegingen. Concurrerende bedrijven mogen deze bestanden in geen geval in 5 kleuren te zien krijgen. Met Photoshop (waar er al een licentie van is binnen het bedrijf) zal ik de grote bmp-bestanden dus verkleinen en opslaan als gif-formaat en dit in meer dan 5 kleuren. Hiervoor wordt een macro opgenomen die dan wordt uitgevoerd op een map. Om de site vlot te laten laden, werken we met zoveel mogelijk HTML-objecten om niet te veel extra figuren in te moeten laden. De opmaak van de HTML gebeurt allemaal in één CSS document. Dit zorgt voor aanpasbaarheid en herbruikbaarheid.
2.3.9 Orderafhandeling Er zal, bij een geslaagde transactie, een orderbevestiging gestuurd worden via e-mail naar de klant. In die orderbevestiging zullen de details staan van de producten die hij besteld heeft. Diezelfde e-mail wordt in BCC naar de salesafdeling gestuurd, die dan rechtstreeks naar productie gaat. Achteraf moet dan, door dezelfde persoon die instaat voor FedEx, de betaling volbracht worden in de backoffice van Banksys.
Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
Grafisch • Bitmaps verkleinen • Navigatieverfraaiiing Orderafhandeling • Orderemail • Updaten van de database • Productie in gang zetten • Backoffice afhandeling • Transport
Figuur 1: Grafische voorstelling van ons project
Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
14
2.5 Te realiseren workpackages 2.5.1 De database • • • • •
Verzamelen van alle mogelijke informatie die eventueel in de database zal moeten komen. Bekijken welke gegevens er zo allemaal in de database zullen moeten komen. Weer te geven gegevens en de te verwerken gegevens vertalen naar een gestructureerde database(tabellen en relationeel model). Formulieren maken met bijhorende query’s om op een eenvoudige manier de nieuwe producten in de database in te voegen (oude verwijderen). De gegevens in de tabellen brengen aan de hand van de gemaakte formulieren.
2.5.2 Het programmeerwerk Alles wordt geprogrammeerd in ASP (vbscript), HTML en javascript. • De navigatie schematisch uittekenen • Het maken van een winkelwagentje. o De productenpagina. o Het winkelwagentje. o De communicatie tussen beide pagina’s • Het maken van een functie om de producten groter te bekijken (thumbnails). • Het maken van een Signup/Login/Logout-gedeelte. • Validatie van de klantgegevens en paswoorden. • De pagina’s maken die moeten communiceren met de Banksys module. • Orderafhandelingspagina maken: email versturen naar de klant en de database updaten. • De navigatiepagina’s maken • De Home- en Companypagina’s maken
2.5.3 Externe partners • • • • •
Het registreren van 1 of eventueel meerdere ‘.biz’-domeinnamen. Opzetten van een Premium account bij Brinkster. Bespreken met FedEx of het geen probleem is om op de account van Devos-Caby uit te voeren onder Boomtex. Kijken of er eventueel tussenoplossingen mogelijk zijn met de FedEx ship API. De nodige documenten verzamelen bij Devos-Caby / Boomtex om door te sturen naar Bank Card Company. Een aanvraag indienen bij Banksys om een account op te zetten bij hen.
Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
15
2.5.4 GUI en grafisch • • • • •
Aanmaken van een css-bestand dat in elke pagina opgevraagd kan worden Schrijven van 2 macro’s in Photoshop: o één voor de kleine weergaven(thumbnails) in ± 30 kleuren. o één voor de grote weergaven, ook in ± 30 kleuren. Aanpassen van de logo’s van Banksys en van Fedex zodanig dat ze in het geheel passen. Het tekenen van een logo en andere zaken (verfraaiing van de navigatie). Zorgen voor een consistent geheel (herkenbaarheid) in zowel het uitzicht van de GUI als in de te versturen mails.
2.5.5 Varia • • •
Verzamelen van bedrijfsinformatie om op de Company- en Homepage te zetten. Testen en laten testen door derden Bekijken hoe de backoffice in elkaar zit (de betalingsafhandeling).
2.6 Planning De volgorde van plannen kan evengoed lichtjes afwijken van deze hier. De volgorde die ik hier aangeef is enkel een richtlijn waaraan ik mij zal proberen te houden. 1. 2.
3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Het vastleggen van de domeinnaam (namen). Verzamelen van de documenten die nodig zijn om goedkeuring te krijgen bij Bank Card Company. Deze documenten direct opsturen met de aansluitingsaanvraag (het kan lang duren vooraleer er goedkeuring komt) Contact opnemen met FedEx om een afspraak te regelen. Schematisch uittekenen van de navigatie. Verzamelen van alle gegevens die in de database zullen moeten komen. Weer te geven gegevens en de te verwerken gegevens vertalen naar een gestructureerde database(tabellen en relationeel model). Formulieren en query’s maken in Access om de tabellen op te vullen. De tabellen opvullen (met de aangemaakte formulieren). Excellblad van FedEx vertalen naar een Access database. Macro’s in Photoshop schrijven en ze laten batchen op de bmp’s. Het programmeren van de productenpagina, winkelwagentje en thumbnailfunctie. Programmeren van een SignUp/Login-gedeelte + validatie. Programmeren van een pagina voor mensen die hun paswoord vergeten zijn. Een Premium-account opzetten bij Brinkster. Een afspraak regelen met iemand van Banksys om wat meer informatie te verkrijgen in verband met hun betaalmodule. Schrijven van de orders naar de database (net voor betaling). Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
16
17. Schrijven van de pagina’s die met de Banksysmodule zullen moeten communiceren. 18. De orderafhandeling verzorgen(e-mail versturen naar de klant en naar Boomtex, winkelwagentje legen, database updaten). 19. De navigatie ineensteken. 20. De Home- en Companypagina maken. 21. Het CSS bestand overzichtelijk opstellen. Zorgen voor een eerder klassieke weergave door gebruik te maken van eenvoudige objecten en klassieke lettertypen. 22. Tekenen van een logo, bewerken van de Banksys en FedEx logo’s. 23. In de mate van het mogelijke, promotie maken voor de website. 24. Testen en laten testen van de applicatie. 25. Vereenvoudigen van de werkende code en commentaar voorzien.
Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
17
3 Implementatie 3.1 Domeinnaam en Hosting 3.1.1 Domeinnaam Al van in het begin van het schooljaar kreeg ik weet van de nieuwe domeinextensie “.biz”. .biz Staat voor business zoals .com voor commercial staat. De nieuwe extensie kwam als geroepen omdat de aantrekkelijke .com’s al niet meer vrij waren. Het toekennen van de biz domeinen gebeurde wel vrij eigenaardig: Je kon van eind september 2001 een optie nemen op een .biz domein voor 2$. Daarbij moest je vertellen waarvoor je dit domein later zou gebruiken. Het was mogelijk dat meerdere bedrijven optie namen op hetzelfde biz-domein. Bij de lancering (gepland midden november 2002) zou dan, wanneer meerdere bedrijven optie zouden nemen op hetzelfde domein, willekeurig (at random!) de toekenning gebeuren. Ik nam, in samenspraak met Koen Devos, optie op 3 domeinnamen: www.rugs-carpets.biz, www.rugs-online.biz en www.carpetsonline.biz. Dit om zeker te spelen. Om veiligheidsredenen hebben we dit bij een erkend bedrijf gedaan: VeriSign Network Solutions. De lancering van de nieuwe extensie heeft wel nog op zich laten wachten tot begin maart. De uiteindelijke prijs per domeinnaam bedroeg dan 35$/jaar per domein. De domeinen waar we optie op namen waren bij de lancering nog allemaal vrij. Dus ofwel hebben geen andere bedrijven optie genomen op deze namen, ofwel hebben we geluk gehad. De opdrachtgever wenst alle 3 de namen te kopen, en dus was het enkel nog een kwestie van de transactie te vervolledigen. Na de transactie kregen we toegang tot een sectie waar we (nu nog altijd) onze domeinen kunnen beheren.
Figuur 2: Beheersectie .biz domeinnamen Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
18
3.1.2 Hosting De hosting doen we niet zelf, zoal reeds aangegeven.We doen hiervoor een beroep op Brinkster (www.brinkster.com). We hebben wel gewacht tot april om voor de betalende account te kiezen omdat tot dan alles nog in testfase zat. Om tot dan te testen heb ik beroep gedaan op IIS en op de gratis diensten van Brinkster. De opzet bij van een account bij Brinkster is heel simpel: invullen van enkele formaliteiten in webformulieren. Bij de opzet van de betalende account konden we dan kiezen om de bestanden vanop de gratis account te verhuizen naar de betalende. Ook mogen we een geregistreerde .com aangeven (een .biz was ook goed blijkbaar). We kozen voor www.rugscarpets.biz. Wel moesten we dan bij de beheersectie van onze domeinnamen de nameservers veranderen naar deze die we van Brinkster hebben opgekregen (NS1.EWEBCITY.COM en NS2.EWEBCITY.COM). Extra opties kunnen ook direct aangevraagd worden tegen een extra vergoeding per maand (SSL gebruik, SQL server database, extra ruimte, extra emailaccounts, extra domeinnaam ….) De standaardopzet kost 13$, per maand betalen we nog eens 13$. Onze site is gehost op een “redundant architecture”. Dat betekent dat er 2 servers zijn in plaats van één. Als nu één van de 2 servers een probleem heft, kan de andere dit opvangen. Elke server heeft de volgende kenmerken: • Dual Intel Pentium III 1 Ghz Processors • 500 MB ECC RAM • Windows 2000 Server • IIS 5 Andere zaken die inbegrepen zijn in de prijs: • 60 MB aan Webruimte • 6000 MB/maand Data Transfer (bandbreedte) • 25 POP3 Email Accounts op ons domein ([email protected]) • FTP gebruik mogelijk. (CuteFTP, WSFTP, …) • ASP.NET / .NET Framework v1, Mobile Internet Toolkit v1 (voor in de toekomst?) • ASP 3.0 ondersteuning (ADO, FileSystemObject, global.asa) • XML 4.0 Installed more info Wij hebben voorlopig nog geen extra features nodig. Om de andere geregistreerde namen te kunnen gebruiken heb ik gebruik gemaakt van MyDomain.com (zie verder). Het uploaden van bestanden kan webbased gebeuren of met FTP. Ik verkies FTP en gebruik hiervoor CuteFTP, waarvan het bedrijf een licentie in handen heeft. Een groot voordeel bij de Premium account tov de free account is volgens mij de database die op dezelfde hoogte staat al de webroot. Dit maakt de database een stuk veiliger. Probeer nu maar eens de locatie te vinden van de database… De databasedirectory is ook de enige directory waar de eindgebruiker schrijfrechten heeft. Bij het inloggen op de website van Brinkster kom je ook hier in een beheermodule waar je gegevens kan veranderen. Ik zal hier wat dieper ingaan Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
19
op de Email Manager. Daar kunnen we tot 25 POP3 accounts aanmaken. Ik heb er voorlopig 4 aangemaakt en 3 aliassen. Een alias is een account die automatisch naar een ander adres forward wanneer er iets naar gestuurd wordt. De alias [email protected] zorgt ervoor dat alle rugs-carpets.biz accounts ingevuld worden, ook al bestaat dit emailadres niet in onze email manager.
Figuur 3: Email Manager op de Brinkster site
3.1.3 MyDomain.com Dit is een gratis dienst op internet(www.mydomain.com) die aan redirecting doet. Dit kunnen we gebruiken om de andere geregistreerde domeinnamen te laten pointen naar www.rugs-carpets.biz. We kiezen er voor om standaard te redirecten. We kunnen ook aan “stealth” forwarding doen zodanig dat de ingetypte URL (www.rugs-online.com of www.carpets-online) in de adresbalk blijft staan. Dit wint volgens mij niet aan vertrouwen omdat dezelfde content terug te vinden zou zijn in 3 verschillende URL’s. De klanten kunnen dit verdacht vinden. In de beheermodule van VeriSign, waar de domeinnamen geregistreerd zijn, moeten we dan enkel nog de nameservers voor die 2 domeinen aanpassen naar deze die we hebben gekregen bij myDomain.com.
3.2 Transport Om een snelle levering te garanderen doen we best beroep op een professionele firma. Wij kozen FedEx omdat er al een contract loopt met Devos-Caby. Dagelijks is er wel iets te versturen en dus komt er iedere dag een koerier langs. Indien er niets te versturen valt wordt dit vooraf gemeld. Nu is het nog de vraag of we met hetzelfde contract kunnen versturen onder de naam van Boomtex. Na een gesprek met Chantal Roobrouck, Account Executive van FedEx, bleek dat dus mogelijk te zijn. De FedEx Ship API konden we wel niet gebruiken omdat: • dit op de webserver moet draaien (Brinkster staat geen installatie van API’s toe op hun webserver). Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
20
• •
dit niet combineerbaar blijkt te zijn met een ASP toepassing; maar daar wordt aan gewerkt. wij momenteel zonder stockbeheer gaan werken. Dus kunnen we niet weten of een besteld product al dan niet in stock aanwezig is. Er is geen reden om de producten direct te komen laden.
Oplossing: Bij een binnenkomende bestelling via e-mail wordt deze asap doorgegeven aan de productie. Eens de bestelling klaar is geeft de FedEx verantwoordelijke binnen Devos-Caby(Heidi Devos) deze orders door aan FedEx (webapplicatie). Op die manier worden ze diezelfde dag nog opgehaald door de FedEx koerier. De vervoersprijzen zijn al vastgelegd voor Devos-Caby in een excelldocument. Daar staan de prijzen in functie van het te vervoeren gewicht en in functie van het bestemmingsland. Soms wordt er gerekend met de reële gewichten, maar soms wordt er ook gerekend met het volumetrisch gewicht. Dit laatste is van toepassing bij producten die groot van omvang zijn maar toch niet veel wegen. De grootte brengt een extra kost in. Het volumetrisch gewicht wordt als volgt berekend: VM[kg] = (lengte[cm] x breedte[cm] x hoogte[cm]) / 6000. Wanneer het volumetrisch gewicht groter is dan het reëel gewicht, dan wordt het volumetrisch gewicht aangerekend. Wij moeten dus rekening houden met de breedte van het tapijt en de diameter van het tapijt als het opgerold is. Deze diameter kan wat verschillen omdat het tapijt niet altijd even hard zal opgerold zijn. We zullen hiervoor dus maximummaten moeten voor instellen. Wanneer men nu 3 grote tapijten bestelt, dan zullen deze niet apart verstuurd worden. Meestal rolt men deze tapijten in elkaar waardoor er minder volume ingenomen wordt en er dus hoogstwaarschijnlijk met het reëel volume zal gerekend worden. Het kan nu echter zijn dat één van deze 3 tapijten veel later aangekondigd wordt(door productieproblemen) dan de 2 andere die al in stock aanwezig zijn. In dat geval wordt er in 2 keer verzonden en zal er dus meer moeten betaald worden aan verzendingskosten. Deze omstandigheden zijn vooraf echter niet te voorspellen. Dus wanneer de klant op de website komt zal er altijd gerekend worden alsof de tapijten één per één wordt verstuurd (al worden ze per 3 verstuurd). Op die manier worden de verzendingskosten wel redelijk hoog voor verre landen, maar we zijn tenminste zeker dat ons bedrijf geen verlies doet op het vervoer. Om dit wat te compenseren zullen de prijzen per tapijt heel laag gehouden worden.
3.2.1 De FedExDatabase Deze is apart opgenomen omdat dit minimum 1 maal per jaar dient aangepast te worden en omdat deze pas moet gebruikt worden eens het bestemmingsland van de bestelling gekend is (op het einde van het proces). Er staan 2 tabellen in en deze worden opgevuld aan de hand van het meegeleverde Excelldocument: TblLanden o Landnaam Æ Tekst; Max. 64 kar. o LandID ÆAutonummer Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
21
o LandCode (zoneletter waar het land zich in bevindt) Æ tekst; Max. 2kar. TblGewichten o ID Æ Autonummer o Kilogram (bovengrens in kg x 10) Æ Numeriek o A, B … (Prijs per Landcode en per gewicht in Eurocent) Æ Numeriek De landcode is een letter die aangeeft in welke zone dat land zich bevindt. Aan de hand daarvan en van het gewicht wordt de prijs opgesteld. Het aantal kilogram werd met een factor 10 vermenigvuldigd; de prijs met 100 omdat kommagetallen problemen konden opleveren bij het opvragen in ASP. In deze database zijn geen relaties aanwezig.
3.3 De hoofddatabase Voor de opslag van de gegevens in mijn toepassing gebruik ik een relationele database. In een relationele database (zoals Access) kan je tussen de verschillende tabellen uit de database relaties leggen, zodat het mogelijk wordt om gegevens uit meerdere tabellen tezelfdertijd te gebruiken. In een niet-relationele database zou je om hetzelfde te bereiken een hele grote complexe tabel moeten maken, die moeilijk aan te spreken is en traag zal laden. Het spreekt voor zich dat je dan vele overtollige gegevens zou moeten bijhouden. Relaties zijn gebaseerd op overeenkomsten tussen de sleutelvelden waartussen de relatie gedefinieerd is. Meestal wordt de “Primary key” (unieke identificatie voor een record in de tabel) vergeleken met de “Foreign key” (verwijzende sleutel) van een andere tabel.
3.3.1 Verzamelen van informatie Er worden op de site 4 collecties verkocht: Fiesta, Chinese Garden, Laila de Luxe en Tibet. Iedere collectie heeft een andere samenstelling van textiel en heeft dus een andere prijs en een ander gewicht. Het gewicht wordt gegeven in kilogram per vierkante cm, de prijs in euro per vierkante meter. De prijs werd laag gehouden omdat we een beginnend internetbedrijf zijn en omdat de vervoerskosten tamelijk hoog zullen liggen. Hieronder een overzicht: KwaliteitNaam Gewicht (kg / cm²) Prijs (euro / m²) Fiesta 0,000197 12,2 Chinese Garden 0,00017 9,7 Laila de Luxe 0,000145 7 Tibet 0,000197 12,2
Per collectie zijn verschillende kleuropstellingen mogelijk. De kleuropstelling krijgt de naam mee van het hoofdkleur. De groene kleuropstelling van bijvoorbeeld Tibet is een andere dan de groene kleuropstelling van bijvoorbeeld Fiesta. Daarom wordt ook een nummer met die kleuropstelling per kwaliteit geassocieerd. Die nummers werden door Devos-Caby gegeven en worden ook gebruikt om de bitmaps te benoemen. Hieronder een overzicht van de verschillende kleuren per collectie met hun kleurnummer:
Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
22
FIESTA KleurNaam Nr Ivory 1 Blue 2 Yellow 3 Orange 4 Navy 5 Green 6
CHINESE GARDEN KleurNaam Nr Red 2 Emerald Green 3 Brick 17 Hunter 18 Petrol Blue 23 Berber 27
Laila de Luxe KleurNaam
Nr
Red Emerald Green Brick Hunter Petrol Blue Berber
2 3 17 18 23 27
Tibet KleurNaam Nr Ivory 1 Havanna 2 Green 3 Brown 4
Het tapijtontwerp krijgt ook een nummer. En per ontwerp zijn dan alle kleuropstellingen mogelijk, gedefinieerd voor die kwaliteit (zie hierboven). Het nummer van het ontwerp begint per kwaliteit met hetzelfde nummer. Voor Fiesta is dat 6 (bvb: 6005), voor Chinese Garden 2 (bvb 2034), voor Laila de Luxe 3 (bvb 3019) en voor Tibet 5 (bvb 5508). De naamgeving van de bitmap gebeurt dan met een “_” tussen ontwerpnummer en kleurnummer. Bvb: 2038_23.bmp is een Chinese Garden ontwerp met als kleur: ‘Petrol Blue’. Per kwaliteit zijn dan nog verschillende afmetingen mogelijk. Die afmetingen komen soms terug in andere kwaliteiten. Dus niet iedere afmeting is terug te vinden in elke kwaliteit. Omdat we voor het vervoer moeten rekenen met het volumetrisch gewicht, heb ik ook nog op zoek moeten gaan achter de verschillende diameters per tapijtgrootte (het volume van een opgerold tapijt is nodig). Hieronder een overzicht van de afmetingen per kwaliteit: Fiesta Breedte (cm) Lengte (cm) Diameter (cm) 120 170 12 140 190 14 160 220 16 190 270 19 240 330 24
Van iedere bestelling moeten klantgegevens worden bijgehouden. Ook de leveringsdetails, die verschillend kunnen zijn van de klantgegevens, moeten worden opgeslagen. Na de transactie moet ook aangegeven worden in de database of deze al dan niet geslaagd is.
Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
23
De landen waarnaar uitgevoerd kan worden, worden in een aparte database bewaard, zie 3.2.1.
3.3.2 Wat moet er nu in de database komen? •
• • • • • • •
•
•
De kwaliteitsnaam o Fiesta o Chinese Garden o Laila de Luxe o Tibet Het gewicht (kg / m²) per kwaliteit De prijs (€ / m²) per kwaliteit De afmetingen (lengte, breedte, diameter) per kwaliteit De beschikbare kleuropstellingen per kwaliteit De tapijtnummers (3019, 6005, 6016, …) De bronbestandsnaam per tapijt (bvb 6016_2.gif) o De afbeeldingen worden niet in de database opgeslagen omdat de database anders te groot zou worden De klantgegevens o Naam en Voornaam o Adres o Plaats en Postcode o Land en Landcode (volgens de FedEx normen) o Staat/Provincie o Telefoon- en faxnummer o Emailadres o Paswoord De Verzendgegevens o Een unieke verzendID o Orderdatum o Orderkosten o Totaalkosten (inclusief de verzendingskosten) o Munteenheid o Verzendnaam en voornaam o Verzendadres o Verzendplaats en postcode o Verzendland o Verzendstaat / Provincie o Succesvolle transactie? (ja / nee) Orderdetails o Welke tapijten in welke kleuren en afmetingen per VerzendID o Daar moet meegegeven worden voor welke klant het order bestemd is.
3.3.3 Soorten Relaties Er zijn verschillende types van relaties tussen twee tabellen. We spreken van een 1 op 1 relatie als één gegeven uit de ene tabel juist overeen komt met één gegeven uit de tabel die er in relatie mee ligt. Deze relaties komen niet zoveel voor omdat de gegevens even goed in één en dezelfde tabel zouden kunnen Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
24
zitten. Deze relaties worden dan ook gebruikt om een grote tabel te splitsen in twee kleinere tabellen. Een tweede soort relatie is een 1 op veel relatie. Het is het meest voorkomende type relatie in een database. Bij een 1 op veel relatie kan een record uit de ene tabel (tabel A), verwijzen naar veel gegevens uit de andere tabel (tabel B). Omgekeerd kan een record uit tabel B ten hoogste één overeenkomstige record in tabel A hebben. Ten slotte hebben we nog de veel op veel relaties. In een veel op veel relaties heeft een record uit tabel A meerdere overeenkomstige records in tabel B en omgekeerd. Om deze relaties op te vangen moet er een tussentabel gemaakt worden. Bvb de tabellen producten en orders: Dit is een veel op veel relatie die als tussentabel de orderinformatie zal bevatten.
3.3.4 Het ER-diagram Een ER-diagram toont ons de relatie tussen de verschillende entiteiten. Een entiteit kan bijvoorbeeld Tapijt, Klant, Kleur,… zijn. Het is iets dat betekenis heeft voor de gebruiker binnen zijn database. 1 N N N Tapijt Orders Klanten A B N C
Afmetingen
N
N D
1 Kwaliteit
N
1 E
Kleuren
Figuur 4: ER-diagram van onze database
Bespreking van de relaties: • relatie A: Meerdere tapijten kunnen gekoppeld zijn aan een order en meerdere orders kunnen gekoppeld worden aan een tapijt. • relatie B: Een klant kan meerdere orders zetten, een order is specifiek voor één klant. • relatie C: Een kwaliteit bevat meerdere tapijten, een tapijt hoort toe aan één kwaliteit. • relatie D: Meerdere kwaliteiten kunnen gekoppeld worden aan een afmeting, meerdere afmetingen kunnen gekoppeld worden aan een kwaliteit. • relatie E: Een kwaliteit bevat meerdere kleuren, een kleur hoort toe aan één kwaliteit (zie 3.3.1 voor meer uitleg)
3.3.5 De tabellen De primaire sleutels van de tabellen zijn vet gedrukt. • TblKwaliteit o Kwaliteitsnaam Æ Tekst; Max. 20 kar. o KwaliteitsID Æ Numeriek Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
25
•
•
•
•
•
•
o Gewicht ( kg / m² ) Æ Numeriek; 6decimalen o Verkoopprijs ( € / m² ) Æ Numeriek; 2decimalen TblKleurKwaliteit o KwaliteitID Æ Numeriek o Kleurnaam Æ Tekst; Max. 22 kar. o KleurID Æ Numeriek TblAfmetingen o AfmetingID Æ Numeriek o Breedte ( cm ) Æ Numeriek o Lengte (cm ) Æ Numeriek o Diameter ( cm ) Æ Numeriek TblKwaliteitsgegevens (tussentabel) o AfmetingID Æ Numeriek o KwaliteitID Æ Numeriek o Gewicht (kg) Æ Numeriek; 2 decimalen o Prijs (€) Æ Numeriek TblTapijt o TapijtID Æ autonummer o TapijtNummer Æ Numeriek o KwaliteitID Æ Numeriek o Kleur Æ Tekst; Max. 22 kar. o Bron Æ Tekst; Max. 15 kar. TblKlanten o KlantID Æ autonummer o KlantNaam Æ Tekst; Max. 30 kar. o KlantVoornaam Æ Tekst; Max. 20 kar. o KlantAdres Æ Tekst; Max. 50 kar. o KlantPlaats Æ Tekst; Max. 30 kar. o KlantPostcode Æ Numeriek o KlantLand Æ Tekst; Max. 20 kar. o KlantStaat Æ Tekst; Max. 30 kar. o Klanttelefoonnumer Æ Tekst; Max. 20 rar. o KlantFaxnummer Æ Tekst; Max. 20 kar. o KlantEmail Æ tekst; Max 50 kar. o KlantPaswoord Æ tekst; Max. 15 kar o KlantLandcode Æ tekst; Max. 2 kar. TblOrders o VerzendID Æ autonummer o Orderdatum ÆDatum/Tijd o OrderKosten( € ) ÆNumeriek, 2 decimalen. o TotaalKosten( € ) ÆNumeriek, 2 decimalen. o Currency Æ Numeriek o VerzendNaam Æ Tekst; Max. 30 kar. o VerzendVoornaam Æ Tekst; Max. 20 kar. o VerzendAdres Æ Tekst; Max. 50 kar. o VerzendPlaats Æ Tekst; Max. 30 kar. o VerzendPostcode Æ Numeriek o VerzendLand Æ Tekst; Max. 20 kar. o VerzendStaat Æ Tekst; Max. 30 kar. o Betaald Æ Tekst; Max. 3 kar. Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
26
•
TblOrderInfo (tussentabel) o OrderID Æ Autonummer o TapijtID Æ Numeriek o KlantID Æ Numeriek o VerzendID Æ Numeriek o TapijtAfmeting Æ Tekst; Max. 10 kar.
3.3.6 Relationeel model Dit model is een vervolg op het ER-diagram en toont ons ook de relaties tussen de verschillende tabellen. In het relationeel model worden de n op n relaties vervangen door een ‘1 op n - n op 1’ - relatie. Er wordt dus een tussentabel ingevoerd. Hier worden ook alle attributen per tabel weergegeven. Het is in feite de volledige structuur van je database zoals die in Access is beschreven.
Figuur 5: Relationeel model
3.3.7 Het opvullen/aanpassen van de database Het invullen van de kwaliteiten, hun ID, het gewicht en de eenheidsprijs gebeurt manueel. De kleuren en afmetingen ook. Dit omdat deze gegevens standaard zijn en niet gauw zullen veranderen (en het maar een kleine moeite is ook ). Het opvullen van de gewichten per afmetingID / KwaliteitID (TblKwaliteitsgegevens) gebeurt aan de hand van een bijwerkquery:
Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
27
Figuur 6: Query voor het berekenen van de gewichten per afmeting en kwaliteit
Idem voor het opvullen van de prijzen per afmetingID / KwaliteitID:
Figuur 7: Query voor het berekenen van de prijzen per afmeting en kwaliteit
De oppervlakte wordt door 10000 gedeeld omdat we van cm² naar m² moeten gaan. Het opvullen van de tapijttabel gebeurt door een tapijtnummer in te vullen op een formulier dat gebaseerd is op een Toevoegquery in Access. Aan de hand van het eerste cijfer van dat tapijtnummer kan door de query uitgemaakt worden over welke kwaliteit het gaat en zo de andere velden opvullen.
Figuur 8: Een nieuw tapijt opnemen in de database
De klantgegevens en orderdetails zullen uiteraard door query’s op de website ingevuld worden. Het verwijderen van een tapijt uit de collectie gebeurt op quasi dezelfde manier. Er kan op het formulier gebladerd worden door de verschillende
Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
28
producten. Door een simpele klik op de verwijderknop wordt het tapijt in alle kleuren uit de collectie verwijderd door een verwijderquery.
Figuur 9: Een tapijt verwijderen uit de database
3.4 Bank Card Company Via het Internet uitgevoerde transacties worden als verkoop op afstand beschouwd aanzien en dus moeten wij ons aansluiten bij Bank Card Company. Om ons aan te sluiten moeten we een aansluitingsformulier invullen vergezeld van enkele documenten. In het aansluitingsformulier moeten een aantal juridische en administratieve zaken worden ingevuld. Ook wenst men te weten wat voor producten we zullen verkopen en tegen welke prijs ongeveer. Het aansluitingsformulier is terug te vinden in de bijlagen. De bijkomstige formulieren die in bijlage moeten verstuurd worden zijn: • een brochure of een catalogus van de aangeboden producten. • een kopie van de statuten van de maatschappij of een kopie van de inschrijving in het Handelsregister • een kopie van de laatste balans (of financieel plan) De brochure was rap gemaakt in Photoshop. Niet alle tapijten moesten erop komen, per dessin heb ik één kleur genomen (zolang we maar geen wapens of ander bezwarend materiaal verkopen ). De andere documenten hebben wat op zich laten wachten omdat de bedrijfsleiding van Boomtex deze documenten niet onmiddellijk ter beschikking had. Ook waren ze er niet gerust in om deze papieren zomaar vrij te geven. 2 weken na het versturen van deze papieren kregen we dan het bezoek van een vertegenwoordigster die nog enkele papieren mee had die ingevuld en ondertekend dienden te worden. Op die papieren werd onder andere aangegeven dat per VISA/MasterCard transactie een vergoeding aangerekend wordt van 2,5% op dat bedrag(zowel nationaal als internationaal). Verder worden geen aansluitingskosten gevraagd. Eens die papieren waren ondertekend waren was de aansluiting volbracht. Nu moet enkel nog de aansluitingsaanvraag en opzet van Banksys in orde gebracht worden om betalingen te mogen aanvaarden op internet.
Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
29
3.5 Implementatie van de website 3.5.1 Iets over de gebruikte talen De webpagina’s maken vooral gebruik van HTML, Javascript en ASP. HTML is een taal die je in staat stelt webpagina’s te voorzien van een eenvoudige opmaak. HTML is clientside. Javascript is ook clientside maar is een scriptingtaal. Daardoor kunnen wij bepaalde routines gaan uitvoeren en zaken binnen webpagina’s dynamisch gaan aanpassen. ASP is dan weer een serverside technologie waarbij elke scriptingtaal kan worden gebruikt. Ik ben meest vertrouwd met vbscripting, daarom kies ik ervoor om met vbscript te werken. Via ASP kunnen we ook gebruik maken van ADO(ActiveX data objects). Dit is een manier om rap en consistent data uit bvb een database te halen. Op die manier zal het mogelijk zijn om onze data uit onze database te halen of data er naar toe te schrijven. Dit doen we door SQL commando’s naar onze database te sturen. SQL staat voor Structured Query Language en daarmee kan de inhoud van tabellen worden geselecteerd(SELECT), gemaakt(INSERT), verwijdert(DELETE) of verandert(UPDATE). Meestal zullen we aan de hand van enkele criteria data uit (verschillende) tabellen selecteren om dan te gebruiken in onze webapplicatie. Wanneer we data uit verschillende tabellen nodig hebben die onderling relaties hebben, zullen we dit moeten beschrijven met een “INNER JOIN” in de querystring. In de ASP pagina’s zal ik dikwijls gebruik maken van de Request methode. Dit is om data op te halen die naar een pagina is verstuurd. Deze data kan bvb verstuurd worden in de URL (pagina.asp?var=”inhoud”). Hetzelfde gebeurt wanneer we een formulier met GET versturen. Met Request.Querystring(“var”) kunnen we dan de waarde van de verstuurde data te weten komen. Een andere manier is het formulier met POST te versturen. De data komt dan niet in de URL terecht. Met Request.Form(“var”) kunnen we dan de verstuurde variabelen te weten komen. Ook zal ik veel gebruik maken van Sessievariabelen. Sessievariabelen zijn variabelen die over de gehele website gebruikt kunnen worden en die gebruikerspecifiek zijn. Standaard duurt een sessie 20 minuten en zal de webserver deze variabelen voor 20 min onthouden voor die gebruiker, ook al verlaat hij de webpagina. De combinatie van al deze talen zorgt voor een sterke dynamische toepassing die vlot aanpasbaar is.
Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
30
3.5.2 Schematisch overzicht van de navigatie Home Home Shop Company Wat uitleg van het bedrijf, voorstelling collecties Login Fiesta Chinese Garden Logout (link naar shop, collectie Fiesta)
Shop Chinese
Laila de Luxe
Tibet
Winkelwagentje
Shop Lailla de Luxe Shop Tibet
Shop Home Fiesta | Chinese Garden | Laila de Luxe | Tibet Shop Company Login FIESTA COLLECTION Logout Tapijten, 3 per rij, afbeelding Clickable (thumbnail) Kleurkeuze Afmetingskeuze Prijs | Add to shopping basket
Winkelwagentje tapijtinfo Tap.gif Thumb Remove Total: ……Euro Check Out
Home Shop Company Login Logout
Login
Winkelwagentje Continue shopping
Loginname : … Password : …
tapijtinfo Tap.gif Thumb
Forgot passw Login
Sign In
Remove …
“KlantInformatie” : …… Sign Up
Validatie
Total: ……Euro
Validatie
Home
Shipping
Shop Company KlantInfo Login Logout
Winkelwagentje Continue shopping
Shipping Details ….
tapijtinfo Tap.gif Thumb
Pay Orders Remove …
Validatie
Total: ……Euro Shipping INCL.: ….
Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
31
Pay Home Shop Company Pay Half-Set VISA/MASTERCARD Login
Winkelwagentje Continue shopping tapijtinfo Tap.gif Thumb
Logout Pay Full-SET VISA/MASTERCARD
… Total: ……Euro
Validatie
De navigatie met de banksysmodule wordt later verder uitgediept.
Home Confirmation Winkelwagentje Shop Company Orders zijn geplaatst, Email met orderdetails wordt naar de klant en naar ons Login verstuurd. Logout Back
Home Home Shop Company Wat uitleg van het bedrijf, voorstelling collecties Login Logout
Fiesta
Chinese Garden
(link naar shop, collectie Fiesta)
Shop Chinese
Laila de Luxe
Tibet
Winkelwagentje
Shop Lailla de Luxe Shop Tibet
Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
32
Logout Home Shop Company Uitgelogd Login Logout
Winkelwagentje
Back Æ keert terug naar de Home-pagina
Nu gaan we terug inloggen maar deze keer zullen we ons paswoord vergeten om die navigatie te bekijken. Home Login Shop Company Loginname : … Login Logout
Winkelwagentje
Password : …
Forgot passw Login
Sign In Validatie
“KlantInformatie” : …… Sign Up
Forgot password Home Shop Company Email address: ………. Login Logout
Winkelwagentje
Send password
Validatie Output Password has been sent / Password doesn’t exist in database Back Æ keert ook terug naar de Home-pagina
Home Company Shop Company Uitleg wie we zijn en wat we doen contactgegegevens Login Logout
Winkelwagentje
Figuur 10: Schematisch overzicht van de navigatie
Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
33
3.5.3 Vertalen van de navigatie naar een framestructuur In default.asp zitten 3frames (kolommen). Links de navigatie; in het midden de inhoud en rechts het winkelwagentje default.asp nav.asp name = links
Home.asp name = midden
Cart.asp Name = rechts
Home Shop
Frames2.asp
Company
Company.asp
Login
Login.asp
Logout
Logout.asp
In Frames2.asp zitten ook 3 frames (rijen deze keer). Bovenaan de winkelnavigatie, in het midden de inhoud(producten en onderaan de info ivm bestelling en transport Frames2.asp; name = midden nav.asp name = links
shboven.asp; name = sboven
Cart.asp Name = rechts
shop.asp; name = sonder
nfo.asp; name = sooonder Figuur 11: Framestructuur van de website
3.5.4 Het uitvergroten van de afbeeldingen (Thumb.js) Dit script maakt het mogelijk om de tapijten die weergegeven worden, groter te bekijken. Het script is geschreven in javascript en krijgt de extensie .js mee (zoals u kan zien in de titel). Vandenabeele Tomas – Graduaat Multimedia en Communicatietechnologie Ontwikkelen van een internationale E-commerce site
34
Hier gaat het in feite om één grote functie met als argumenten: de oorspronkelijke bron en de kwaliteitsID van het geklikte bestand. Bij het binnenkomen van de functie stuiten we op een switch-case routine die opsplitst volgens kwaliteitID. In die cases moeten we de kleurID van de bestandsnaam te weten komen om te weten welk kleur er moet worden getoond. Bvb als we “http://www.rugs-carpets.biz/Images/6005_2.gif” als bestandsnaam binnenkrijgen, moeten we daar de 2 uithalen om de kleurID te weten; de 6005 kunnen we gebruiken om in de titel te zetten. Dit doen we met behulp van stringfuncties. Met een volgende switch-case kennen we dan een kleurnaam toe aan de kleurID(zie 3.3.1) om in de titel te plaatsen. De vergrootte versie van het geklikte tapijt tonen we in een nieuw venster dat als naam ‘Kleur’ meekrijgt. Dit om maar maximum één extern venster open te zetten. Het venster is in feite een variabele(var v in ons geval) die we dan kunnen gebruiken om data naartoe te schrijven (v.document.write(“INHOUD”);). Dit doen we dan ook en plaatsen er HTMLinhoud in. De grote versies van de tapijten hebben dezelfde bestandsnaam maar met een “g” vooraan geplaatst. Deze bestanden bevinden zich in een parallelle directory en kunnen dus met de stringfuncties van daarnet gemakkelijk worden gevonden. Daarenboven bieden we nog een combobox aan die toelaat om de kleur te veranderen van het afgebeelde tapijt. De options krijgen als value de kleurID. Bij de onChange-event wordt nog een andere functie uitgevoerd om de bestandsnaam van het getoonde tapijt te veranderen en om de titel te veranderen. In deze functie maken we gebruik van DOM (Document Object Model). Code: function Groot(figuur, kwal){ …….Switch(kwal) …… //figuur is de volledige bronbestandsnaam //bvb: http://www.rugs-carpets.biz/Images/6005_2.gif begin=figuur.lastIndexOf("/"); ….. // afscheiden van de titel, 6005 in dit voorbeeld titel=figuur.substring(begin+1,begin+5); …. //het voorstuk samenstelen om straks gemakkelijker het bestand te kunnen //veranderen var prep = "GrootImage/g" + titel + "_"; prep = "'" + prep + "'"; …… //Oproepen van de functie bij de onChange-event v.document.write('