IT- eksamensprojekt. Campingplads. Vejleder: Mette Frost. Danielle Bacarda 3.4 RTG



Relaterede dokumenter
Om styles / typografier / typografiark / stylesheets

Projekt-studieweb. Om kommunikationsteorierne. Morten, Jacob, Kristian og Cihat

ØVELSE 11: TABLES & FORMS (Individuel)

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

Grafisk workflow. Se siden her:

1-1 Usability evaluering af den simple udgave

DPSD undervisning. Vejledning til rapport og plan opsætning

HTML, PHP, SQL, webserver, hvad er hvad??

Indholdsfortegnelse If-sætningen... 3 Opgaver... 4 OR, AND sammen med if-sætningen... 5 Rand() funktion... 5 Opgave... 5 Include() funktionen...

_2_mulighederAfgive vælgererklæring eller tilbagetrække støtte?

Denne rapport er skrevet af:

Interaktionsudvikling

Digitale uddannelsesaftaler. Vejledning til virksomhed

Vigtige funktioner i Word 2003

Velkommen til ABC Analyzer! Grundkursusmanual 2 vil introducere dig til ABC Analyzers mere avancerede funktioner, bl.a.:

Eksamen, DSDS, efterår 2007

Opstart og adgange til Ejersiden

Mini Afsluttende Projekt

Nyhedsmodul brugermanual

Afsluttende opgave Webdesign Den 24. maj 2007 Klasse 1.2

Brug Photo Story 3 en let introduktion

Guide til at udfylde klageskema. når du som patient vil klage over sundhedsfaglig behandling

Lav din egen forside i webtrees

PHP kode til hjemmeside menu.

Bruger Manual. Version: Add-On Products Skovgade 2 DK-7100 Vejle Europe Denmark Phone: Fax:

Tagwall med Php & MySQL

Vejledning til Jobcenter Planner

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

PSYKIATRIENS VIKARCENTER. MinTid. Quickguide. Version 7.0

Søren Christiansen

KUNDEVEJLEDNING APRIL 2014

Kom godt i gang med OneDrive

Portfolie Redesign. Forord. Det tekniske. Tema ide. Css. opløsning.

Guide. Administration af FDF.dk/Nyborg. 1. Udgave Ide og layout Christoffer S. Rasmussen

Diagrammer visualiser dine tal

Brugervejledning til Kvikbook

PSYKIATRIENS VIKARCENTER. MinTid. Quickguide. Version 6.0

BRUGERMANUAL. Ruteplanlægning i RUT. Røde Korsindsamlingen 8. MARTS RødeKors.dk

Redaktørvejledning for Skriv en artikel

Grundformen for et website: aside, tabeller, formularer og tekstformatering

Brugervejledning til udfyldelse og udstedelse af Europass Mobilitetsbevis i Europass Mobilitetsdatabasen

Bruger manual, SDN-aftalesystem

Side 1 af 13 NETLYDBOG.DK. - Sådan downlåner du - Sådan overfører du til en MP3-afspiller

Tema MitHelbred på din ipad

Sitecore - basisvejledning Version 2. September 2010

Manual og Hjælp Skoletasken 2

Tillykke Med Fødselsdagen

Vejledning til Jobcenter Planner

menuen kan sende s ud til forbrugerne både til alle eller til nogle efter bestemte udvælgelseskriterier.

4 ARBEJDE MED SEKTIONER

Nyheder i Untis KMD Educa Skema

Webteknologi evalueringsopgave Vinter Niels Sundstrup

Indholdsfortegnelse resultat- & kritikprogrammet.

I denne manual kan du finde en hurtig introduktion til hvordan du:

Indholdsfortegnelse. Indledning...2. Tidsplan...2. Målgruppe...3. Spørgeskema...3. Kode eksempler...5. Procesbeskrivelse...7. Evaluering...

BRUGER KURSUS RAMBØLL HJEMMESIDE

Manual til overføring af fotografier fra kamera til harddisk.

Udbud.dk Brugervejledning til leverandører

Projekt i Programmering C Menu til hjemmeside.

Indhold Windows Phone

Brunata WebMon Brugermanual for beboer

Online-timeseddelregistrering

Vagtplan Version 4.0. Kom-godt-i-gang-vejledning. Aktiviteter og Kvalifikationer

Herning Centerby Guide til Umbraco

Gæstebog med validering opbygget med MySQL

Novotek Planning Systems A/S 2013 Version 1.0 Jan 2013 ROB-EX 4.2

Anamorphic Widescreen

RUTruteplanlægningsvejledning. Folkekirkens Nødhjælp Sogneindsamling 2015

Opret og godkend betalinger i mapper

Brugervejledning til. BBB s hjemmeside. BEMÆRK: Denne vejledning fungerer bedst til Windows. Senest opdateret: :45

Tastevejledning Windows XP

Brugervejledning til testsystemet for de nationale test

Indholdsfortegnelse. Indholdsfortegnelse.. side 2. Adgang til webgraf 3. Opslag adresse Styring af layout.. 5. Zoom funktioner..

Indholdsfortegnelse. Indhold

Lektion 1 - Beskæring til given størrelse

GECKO Booking Vejledning til spørgeskema-modul. Læsevejledning. Indholdsfortegnelse

Eksamen, DSDS, efterår 2008

SDBF QUICKGUIDE SKOLERNES DIGITALE BLANKET FLOW - BRUGER-GUIDE -

Transkript:

IT- eksamensprojekt Campingplads Vejleder: Mette Frost 3.4 RTG IT-eksamensprojekt 2009 Side 1 af 25

Indholdsfortegnelse Problemformulering... 3 Tidsplan... 4 Valg af systemudviklingsmetode... 4 Analyse... 5 Menu:... 6 Database til bookning... 6 Implementering... 7 Bookingsystem... 8 Test... 12 Teknisk test... 12 Brugstest... 13 Konklusion... 14 Bilag... 15 Heuristisk inspirationstest... 15 Tænke højt test... 16 Kildekoder: index2.php... 17 info.php... 18 priser.php... 19 billeder.php... 20 aktiviteter.php... 21 booking.php... 22 booking_gem.php... 25 IT-eksamensprojekt 2009 Side 2 af 25

Problemformulering I mit afsluttende projekt vil jeg lave en hjemmeside for en campingplads 1 i Frankrig. Det skal ikke nødvendigvis være en forbedring af campingpladsens side, men en anden måde at fremstille campingpladsens ydelser på. Jeg vil hovedsageligt fokusere på den database som kommer i brug når man vil booke en plads eller hytte. Foruden dette skal siden selvfølgelig også indeholde forskellige informationer om hvad der er på pladsen og hvilke aktiviteter der finder sted. Jeg vil foruden dette forsøge at oprette en blog hvor gæsterne kan skrive om deres oplevelser i området. Den sidste del vil dog komme til at afhænge af tiden, selvom jeg vil forsøge at holde mig til min tidsplan. Min målgruppe i dette projekt er campister. Jeg vil give dem en overskuelig side hvor de kan finde relevante informationer om deres campingplads. Fordelen ved at lave et bookningssystem på campingpladsen hjemmeside, er at man hjemmefra kan sikre sig at man kan få plads på den ønskede campingplads således at man sent på aftenen ikke køre forgæves efter en plads, samt at campisterne på denne plads oftest er stamkunder og derfor ved hvilken plads de gerne vil være på. Jeg har kigget på to løsningsmodeller, hvori den eneste forskel egentlig er menu linjens placering Fordelen ved at menuen er i venstre side er at man læser fra venstre mod højre og derfor hurtigt vil bemærke den. Fordelen ved at have menuen i toppen af siden dvs. over selve teksten som er det relevante indhold er at den er let at overskue. I bund og grund handler det mest om hvilket design man hælder mest til. I forhold til at jeg publicerer noget på nettet til andres benyttelse har det en vis relevans at undersøge sikkerheden. Sikkerheden kan undersøges på flere måder, man kan undersøge risikofaktoren, som skal indeholde mulige problemer, sandsynlighed for at det kan finde sted, konsekvenserne hvis det lykkedes at bryde sikkerheden og mulige konsekvenser hvis brydning af sikkerheden finder sted. I en sikkerhedsanalyse undersøger man risikofaktoren som er ting så som fjendtlig indtrængen eller tekniske uheld. Foruden risikofaktoren skal man også tage stilling til hvor stort sikkerhedsbehovet reelt er for den pågældende side. I henhold til sikkerhedsbehovet tager man stilling til hvordan den anvendte netværksopkobling er. Når man laver en risikoanalyse, skal man i første omgang vælge et interval, det kunne fx være 1-5 hvor 1 er lav risiko, mens 5 er meget høj risiko. De værdier vurderer man i forhold til nogle mulige problemer, hvorefter man kan beregne Risikotallet ved at gange sandsynligheden for gennemtrængning med konsekvenserne for gennemtræning. Hvis vi tager udgangspunkt i et problem som hacking kunne risikoanalysen se således ud: Mulige Sandsynligheden for Konsekvens for Risikotal Mulig foranstaltning problemer gennemtrængsel gennemtrængsel Hacking 3 4 12 Brugernes oplysningen vil blive udnyttet af andre. 1 http://www.lemanoir-ardeche.com/ IT-eksamensprojekt 2009 Side 3 af 25

Ud fra denne risikoanalyse får man en nogenlunde fornemmelse af hvilke konsekvenser det kan have, hvis nogen bryder igennem ens system. Pga. sikkerhedsmæssige årsager, har jeg i mit booking system heller ikke valgt at man skal betale med det samme, da der i tilfælde af hacking, kan drages udnyttelse af lejerne på campingpladsen. Jeg har valgt at arbejde alene med dette projekt og af den årsag har jeg ikke fundet det nødvendigt at specifikciterer arbejdet i min tidsplan. Tidsplan Uge Aktivitet 4 Opstart 5 Interne prøver 6 Foreløbigt emne ligger fast 7 Afl. Projektbeskrivelse (12.2) 8 Vinterferie 9 Endelige rettelser i projektbeskrivelsen 10 Overvejelser omkring design 11 Valg af systemudviklingsmetode 12 Overvejelser omkring databasens opbyggelse og indhold 13 Påbegyndelse på hjemmesidens indhold 14 Fortsættelse på hjemmesidens indhold 15 Påskeferie 16 Test af hjemmeside 17 Afrunding på rapport 18 Aflevere tirsdag (28.4) Valg af systemudviklingsmetode Til dette projekt har jeg valgt at bruge spiralmodellen, da jeg mener det er vigtigt at få testet hver enkelt del i databasen, så jeg ikke ender i en situation til sidst, hvor der er en del der ikke virker, hvor det senere viser sig at være en af de første stadier i databasen som er skyld i det. Så ved at bruge spiralmetoden kan jeg i mit tilfælde starte med min database omkring perioden (kalenderen) og antallet af pladser. Når jeg har sikret mig at databasen fungere efter min hensigt, vil jeg påbegynde databasen som fastholder pladsen og informationer om den valgte plads. Når denne del fungere optimalt, vil jeg afprøve den i forhold til kalenderen, og afprøve samarbejdet mellem de to databaser. Når jeg har afprøvet at min database fungere optimalt, vil jeg implementere den på min hjemmeside for campingpladsen. IT-eksamensprojekt 2009 Side 4 af 25

Analyse I henhold til databasens opsætning, har jeg gjort mig nogle overvejelser omkring, hvordan det i sidste ende vil komme til at fungere bedst. Den ene mulighed til opstilling af databasen, kunne være følgende: Hvor man først vælger perioden i en kalender, hvorefter databasen finder frem til hvilke pladser der er ledige inden for perioden, hvor man dernæst får informationer om den plads man har valgt (dette er informationer som til enhver tid er oplyst på selve siden). Til sidst dvs. når man har valgt plads og periode går man videre til betaling. Den anden mulighed jeg har overvejet er at starte med hvilken pladstype man er interesseret i, da pladsen tilbyder både vogn/teltplads, hotel og mobilhomes er det naturligt at man også skal tage stilling til hvad det helt præcis er man vil have oplysninger omkring inden for den periode man er interesseret i. Så i mit andet forslag, starter man med at vælge, hvilken specifik pladstype man er interesseret i, derefter vælger man hvilken periode man ønsker oplysninger om, hvorefter man indenfor den periode får oplyst hvilke pladser eller værelser der er ledige, når man har valgt hvilken plads ma er interesseret i går man videre til betalingen. IT-eksamensprojekt 2009 Side 5 af 25

Design Målgruppen for projektet er alle campister som er glade for Frankrig, dette betyder at designet skal henvende sig til unge såvel som gamle. Det medfører at designet skal være enkelt, men samtidig indeholde alle de nødvendige oplysninger. Som det fremgår af min projektbeskrivelse tager jeg udgangspunkt i den oprindelige sides design i henhold til menuen, da jeg mener at deres menulinje er med til at få siden til at virke simpel. Foruden dette, mener jeg at hjemmesiden skal indeholde følgende: Menu: Informationer om pladsen udlejningsmuligheder Priser og tilgængelighed Billeder fra pladsen hvad ser man på billederne Aktiviteter på pladsen skema over ugens aktiviteter både for børn og voksne, Bookning specifik bookning af telt og vognpladser, overfladisk bookning af hotel og udlejningsvogne Database til bookning I bookningsdatabasen skal man i første omgang vælge den periode man er interesseret i at se ledige pladser. Derefter skal man ud fra en kalender der oplyser ledige pladser og antal ledige dage i den valgte periode, vælge hvilken plads man er interesseret i at leje. Hvor det også skal være muligt at se oplysningerne om de ledige pladser, så som om der er tale om en skygge eller solrig plads mm. Den første figur, er en illustration over hvordan man skal vælge hvilken periode man ønsker at undersøge ledigheden. På næste figur, er en illustration over hvordan det skal oplyses over for kunden om pladsen er ledig i den pågældende periode. Hvis pladsen ikke er ledig i perioden, er den rød og hvis pladsen er ledig er den grøn. så hvis man ser på illustrationen, betyder det at plads 4 er ledig hele den pågældende periode, mens de tre resterende pladser kun er ledig i noget af perioden. IT-eksamensprojekt 2009 Side 6 af 25

Implementering Hjemmesiden er bygget op ved brug af HTML. Det vil sige at den grundlæggende struktur har formen <html> <head>...</head> <body>...</body> </html> - hvor der i body-sektionen er selve den information, man ser i browseren. I head-sektionen har jeg valgt at inkludere CSS-stylesheets som en ekstern reference for ikke at skulle skrive den samme CSS-kode på hver HTML-side. CSS-koden indeholder information om formattering af hjemmesiden; fx baggrundsfarve, tekstfarve, skrifttype og størrelse og meget andet. Koden, der inkluderer stylesheetet på HTML-siden er <link rel= stylesheet type= text/css href= style.css > I body-sektionen er alle siderne på hjemmesiden bygget op efter samme skabelon : Øverst er overskriften, der viser hvilken side man er på. Herunder er menu-linien i en boks, og lige herunder er boksen med selve indholdet for den pågældende side. På forsiden består indholdet fx af et stort billede af pladsen samt en kort beskrivende tekst. Selve menuen er lavet som en separat fil (menu.php) for igen at undgå at skrive samme kode flere gange. Menu-filen bliver inkluderet på hjemmesiden vha. PHP med koden <?php include("menu.php");?> Skabelonen til siderne er: <center> <h1>overskrift her</h1> <div style="border: 2px solid black; width: 85%; margin-bottom: 15px;">(menu her) <div style="border: 2px solid black; width: 85%;">(indhold her) </center> IT-eksamensprojekt 2009 Side 7 af 25

Bookingsystem Bookingsystemet er implementeret på hjemmesiden vha. PHP og en MySQL-database. Databasen, der skal holde styr på bookingerne, består af to tabeller; en tabel over campingpladsens pladser, og en tabel over selve bookingerne med information om plads, periode og div. kundeinformationer. Tabellen camp_plads er opbygget således: Felt Type Evt. ID tinyint auto_increment, primær nøgle Navn Varchar Type Varchar Beskrivelse Text Pris Smallint Datatyperne tinyint og smallint betegner tal, mens varchar og text er tekst. ID-feltet er tabellens primære nøgle, dvs. den unikke identifikation af en række. Når man indsætter en række i tabellen, vil feltet ID automatisk tælles op takket være auto_increment -indstillingen. camp_booking : Felt Type Evt. ID smallint auto_increment, primær nøgle Plads smallint Start_dato Date Slut_dato Date Personer tinyint Dyr tinyint Navn varchar Adresse tinytext Mail varchar Telefon varchar Ordrenummer varchar IP varchar Dato datetime Betalt tinyint Betalingsfrist Date Brugernote Text Ejernote text Text-felter kan indeholde mere data end varchar, så i de tilfælde hvor der ikke er behov for så meget tekst er det en god ide at bruge varchar for at spare plads i databasen. Det samme gælder for de forskellige typer af heltal (integers). Selve den interaktive del foregår i PHP. Først skal brugeren angive hvilken type plads/lejemål og periode, som brugeren er interesseret i. Det sker i en HTML-formular, hvor der er et antal input-felter af typen checkbox, så man kan vælge at få vist én eller flere typer ad gangen: IT-eksamensprojekt 2009 Side 8 af 25

<input type="checkbox" name="pladstype[]" value="telt/vognplads" id="chk1"> Navnet name="pladstype[]" er konstrueret således at PHP-scriptet, der modtager formularens data, automatisk lægger de tre bokses værdier i et array og så er det lettere at håndtere dynamisk. I to tekstfelter skal brugeren indtaste datoen (i et bestemt angivet format ellers kan PHP ikke genkende tekststrengen som en dato se mere nedenfor). Der er også inkluderet et skjult felt: <input type="hidden" name="send" value="yes"> - så PHP kan tjekke om værdien af feltet send er yes. Er den ikke, behøver vi ikke håndtere data fra formularen endnu, ellers begynder vi næste trin i bookingen, hvor brugeren skal vælge hvilken af de ledige pladser han vil booke: Nu skal PHP forbinde til databasen og udtrække data, der afgør om den pågældende plads er ledig i perioden eller ej. Først indsamles de data, der er overført fra foregående formular, nemlig $startdato = strtotime($_post["startdato"]); $slutdato = strtotime($_post["slutdato"]); $pladstype = $_POST["pladstype"]; Her konverteres de overførte tekststrenge startdato og slutdato til datoer og lægges i variablerne med tilsvarende navne. Når PHP forbinder til MySQL-databasen foregår kommunikationen i sproget SQL, som vi opbygger forespørgslen i. Det sker ledvis for at kunne håndtere 1, 2 eller flere markerede pladstype -felter. Første del af SQL-kommandoen gemmes i PHP-variablen $strsql. Den fortæller, at vi er interesserede i felterne ID, Navn og Type fra tabellen camp_plads : $strsql = "SELECT ID, Navn, Type FROM camp_plads WHERE "; Så gennemløber vi array et af pladstyper for at tilføje mere til $strsql. For hver valgt pladstype vil denne algoritme tilføje teksten "Type = '(type)' OR " til SQL-forespørgselsstrengen (PHP-operatoren.= tilføjer tekst i slutningen af en streng): while (list ($key,$val) = @each ($pladstype)) { $strsql.= "Type = '". $val. "' OR "; Den sidste linie der bliver tilføjet forespørgslen vil slutte med OR, når algoritmen er lavet så simpel. Så indsætter vi teksten 1=2, som databasen altid evaluerer som falsk. Så vil forespørgslen have den ønskede effekt; at udtrække de angivne felter for de pladser i tabellen camp_plads, der har en af de angivne pladstyper. Til sidst sorterer vi resultaterne efter type og navn, så brugeren præsenteres for en systematisk visning af pladserne: $strsql.= "1=2 ORDER BY Type ASC, Navn ASC"; Nu er vi klar til at forbinde til databasen, som vi gør med PHP s indbyggede kommandoer IT-eksamensprojekt 2009 Side 9 af 25

$con = mysql_connect("(server)","(brugernavn)","(kode)"); mysql_select_db("(database-navn)", $con); Forespørgslen køres vha. $result = mysql_query( $strsql ); - og de returnerede data gemmes i de tre PHP-arrays $navne, $ids og $typer. Samtidig tælles variablen $maxr op, så den efter at have løbet samtlige resultater igennem indeholder antallet af rækker, der er blevet trukket ud. Så begynder vi at bygge HTML-tabellen, der viser om pladserne er ledige i den valgte periode. Først laver vi en dato-række som inddeler tabellen i dage i den valgte periode. Vi gennemløber en variabel $dato fra den angivne startdato ($startdato) til slutdatoen ($slutdato) og skriver så længe at $dato<$slutdato følgende: echo '<th style="background-color: silver;">'. date("d/m",$dato). '</th>'; Her indeholder tabelcellen den pågældende dato formatteret som dag/måned (d/m). Datoen tælles 1 dag op vha. kommandoen $dato = mktime(0,0,0, date("m",$dato), date("d",$dato)+1, date("y",$dato) ); Nu begynder vi at opbygge selve plads-visningen: Først indsættes en tabelcelle med pladsens type og navn. Derefter gennemløber vi igen datoerne mellem start- og slutdatoen, og laver hver gang en forespørgsel til databasens camp_booking -tabel, der undersøger om der er en eksisterende booking af den pågældende plads på den pågældende dag: $result = mysql_query("select * FROM camp_bookning WHERE Start_dato <= '". date("y-m-d",$dato). "' AND Slut_dato >= '". date("y-m-d",$dato). "' AND Plads = ". $plads); Hvis pladsen er ledig på dagen, markeres den med grøn ellers med rød. I den sidste tabelcelle er der plads til en radio-boks, som kun vises hvis pladsen er ledig i hele perioden. Dette gentages for de øvrige pladser, der er gemt i de tre arrays $navne, $ids og $typer. Sidst i formularen er indsat tekstfelter til de øvrige informationer der er påkrævet før bookingen kan gennemføres. Når man trykker OK book, vil formularens data blive sendt til siden booking_gem.php, hvor et PHP-script via SQL indsætter dataene i databasen. Først forbinder man på samme måde som i booking.php til databasen, og så udføres SQLkommandoen, der indsætter dataene i databasen. SQL-kommandoen er på formen INSERT INTO (tabel) (Kolonne1, Kolonne2,...) VALUES (Værdi1, Værdi2,...) IT-eksamensprojekt 2009 Side 10 af 25

Dataene som gemmes, kommer primært fra formularen på foregående side. Der er dog et par undtagelser; fx IP-adressen. Den kan man få tilgang til i PHP ved at bruge kommandoen $_SERVER['REMOTE_ADDR'] Hvis alt er gået vel, og dataene er blevet indsat, skriver PHP-scriptet en OK-meddelelse til skærmen, og ellers en fejlmeddelelse. Der er ikke gjort noget særligt ud af fejlhåndtering eller formvalidering, som er klare forbedringsmuligheder. IT-eksamensprojekt 2009 Side 11 af 25

Test Teknisk test Som beskrevet i den indledende del, har jeg i dette projekt valgt at benytte mig af spiralmodellen, men da der kun har været et mindre problem i forhold til hjemmesiden og bookingsystemet, har jeg valgt, kun at beskrive dette problem i min tekniske test. Problemet består i at bookingsystemet ikke fungerer ens i de forskellige browsere. I Microsoft Internet Explorer version 7 flytter indholdsboksen med, hvis man vælger en længere periode, hvilket også er det ønskede: Mens menuboksen stadig forholder sig centreret til indholdsboksen. I Mozilla Firefox version 3 går den såkaldte kalender ud af indholdsboksen IT-eksamensprojekt 2009 Side 12 af 25

Dette problem kan løses ved at indsætte hele tabellen i en div, hvor man sætter CSS-egenskaben overflow-x til scroll. Så vil indhold, der er for stort til den angivne bredde (x-retningen) blive skjult indtil man scroller vandret (lige som scrollbaren på selve siden), fx: <div style= width: 99%; overflow-y: scroll; >(tabel her) Brugstest Jeg har tænkt mig at udfører tre forskellige test på to forskellige personer. Den ene person skal teste siden ved Heuristisk inspiration, der går ud på at analysere siden i forhold til målgruppen. Den anden skal vurdere test ved hjælp af; tænke højt metoden. I den Heuristiske inspirartionstest blev der nævnt ting så som at der i forhold til brugergrænsefladen, godt måtte være et argument for hvorfor man skal vælge den plads i forhold til nabopladsen og at det kunne være rart med et kort over Frankrig, hvor man kan se hvor pladsen er placeret. Til bookingen som er den centrale del i denne her opgave blev det kritiseret at man havde mulighed for at booke i den engelske datoformat og ikke kun som den viste format nemlig (dd-mmåååå). I testen omkring tænke højt metoden blev der nævnt ting så som at det ville være bedre hvis lejemulighederne blev opremset i rangorden, med det centrale først. Herudover var der nogle kommentar omkring bookingsystemet om at det ville være smart hvis man inddelte oplysningerne man skal videregive i flere bokse, så bookingen ville blive mere overskuelig. Jeg har valgt at lægge de fulde testkommentar under bilag. IT-eksamensprojekt 2009 Side 13 af 25

Konklusion Jeg er blevet meget tilfreds med resultatet. Mit hovedmål med denne opgave, var at opstille en database så man selv havde mulighed for at vælge hvilken plads man vil ligge på, til dels fordi mange af gæsterne er nogle der kommer hvert år og har derfor dannet sig et indtryk af, hvilken plads de helst vil ligge på. Hvis jeg skulle arbejde videre med dette projekt, ville jeg først og fremmest fokusere på sikkerhed og fejlhåndtering for bookingsystemet, og dernæst selve sidens indhold. Jeg kunne helt sikkert godt udvide de informationer, som jeg på nuværende tidspunkt har oplyst på siden. Desværre fik jeg ikke tid til at oprette en blog på siden, men det ser jeg ikke som et stort minus, da de fleste campister på denne plads er stamkunder og derfor kender til pladsen, oplevelserne og omgivelserne. IT-eksamensprojekt 2009 Side 14 af 25

Bilag Heuristisk inspirationstest Overordnet: Funktionalitet: godt at det er muligt at bruge tabtast og entertast i stedet for mus Brugergrænseflade: Forsiden: det fremgår ikke klart om der er andre muligheder i forhold til hotel, end halvpension Et godt billede af pladsen, jeg kunne dog godt tænke mig nogle ord på hvorfor jeg lige skulle vælge dette sted, du må gerne putte nogle superlativer på Kunne man på forsiden eller infosiden sætte et frankrigskort med markering af hvor pladsen ligger? Info: Jeg mangler oplysning om hvor mange sengepladser, der er på et værelse: er det dobbeltværelser, eller er der enkeltværelser? Er der mulighed for ekstra opredning på værelse? Priser: jeg savner oplysning om prisen for hotelværelse er med eller uden pension, er priserne de samme uanset hvornår på sesonnen man kommer Det kunne have været rart, og en god finesse at når man klikkede på de enkelte bomuligheder, at der så blev vist et billede af hvad det var man bookede. fx: ved klik på mobilhome blev det vist Billeder: du har valgt nogle gode billeder, der viser meget godt om området Aktiviteter: godt at se at der sker noget på pladsen, men du må gerne krydre det med billeder af aktiviteterne Booking: er det muligt at sætte en kalender ind. Så man kan klikke på den i stedet for at skrive dato Det bør ikke være muligt at vælge den 31-04 Jeg savner en forklaring på hvad jeg skal gøre for at kunne booke en plads det er en god ide, at man kan vælge en plads, jeg savner bare en tegning over pladsen (jeg ved godt du ikke har en tegning over det) måske du kan lave en fiktiv, eller bare skrive det) det vil i hvert fald være en hjælp når man skal booke Det er forvirrende at fluebenet ikke bliver stående, når jeg valgt telt, og dato og klikker videre, forsvinder fluebenet det kan være en fordel, at man sætter en stjerne der hvor den der booker skal udfylde felterne Når jeg tester ved at skrive måned før dag, bør jeg få en fejlmeddelelse, eller den bør ændre datoformatet til det korrekte, det er forvirrende at jeg kan komme videre og skrive navn Når jeg tester med at vælge amerikansk datoformat er det muligt at booke- er det en fejl? Bookingen kan gennemføres Datoformatet når jeg booker svarer ikke til det der står man skal Dejligt at tabtasten virker så man ikke behøver at bruge musen IT-eksamensprojekt 2009 Side 15 af 25

Jeg får denne fejl, når jeg siger ok til booking: Tænke højt test Det kunne være godt med noget rangorden på forsiden over hvilke bookingmuligheder der er på pladsen. Denne rangorden skulle sættes op med det centrale først, som i dette tilfælde er vognplads og til sidst hotelværelse. Under priser ville det være positivt hvis man kunne få oplyst hvor meget strøm kostede pr. døgn. Mere præcision omkring billedteksten. Mere detaljeret booking, hvori land også indgår som en oplysning. Oplys et sted på bookingsiden at alle felter på nær antal dyr og note skal udfyldes, før bookingen kan godkendes. IT-eksamensprojekt 2009 Side 16 af 25

Kildekoder index2.php <html> <head> <title>camping</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <center> <h1>camping Le Manoir</h1> <div style="border: 2px solid black; width: 85%; margin-bottom: 15px;"> <?php include("menu.php");?> <div style="border: 2px solid black; width: 85%;"> <center> <img src="forside.jpg" style="width: 60%;"> <br><br> Velkommen til campingpladsen for ophold med telt, campingvogn, mobilhome hytter,<br> autocamper, leje af bungalowtelt eller hotelophold for én nat eller halvpension.<br><br> </center> </center> </body> </html> IT-eksamensprojekt 2009 Side 17 af 25

info.php <html> <head> <title>camping</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <center> <h1>info</h1> <div style="border: 2px solid black; width: 85%; margin-bottom: 15px;"> <?php include("menu.php");?> <div style="border: 2px solid black; width: 85%;"> <table border="0" style="width: 100%;"> <td style="width: 25%;"><img src="frankrig.jpg" width="275"></td> <td style="width: 50%;"> <center> På pladsen er der mulighed for at leje følgende:<br> - Hotelværelse<br> - Telt bungalow<br> - Campingvogn<br> - Mobil home<br> Men selvfølgelig er det også muligt at få en campingplads<br> til dem der selv har telt eller vogn med. <br><br> Adresse og telefon:<br> Camping et hôtel Le Manoir<br> 222 route de Lamastre<br> 07300 Tournon sur Rhône<br> contact : M.Faure Nicolas<br><br> Reservér hurtigere pr. tlf.:<br> 04 75 08 02 50<br> 06 70 00 06 13<br><br> E-mail: <a href="mailto:info@lemanoir-ardeche.com">info@lemanoir-ardeche.com</a> </center> </td> <td style="width: 25%;"> </td> </table> </center> </body> </html> IT-eksamensprojekt 2009 Side 18 af 25

priser.php <html> <head> <title>camping</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <center> <h1>priser</h1> <div style="border: 2px solid black; width: 85%; margin-bottom: 15px;"> <?php include("menu.php");?> <div style="border: 2px solid black; width: 85%;"> <table border="0" style="width: 50%; text-align: center;"> <th>plads</th> <th>pris</th> <td>campingplads</td> <td>18 pr. dag</td> <td>hotel</td> <td>28 pr. dag</td> <td>telt bungalow</td> <td>340 pr. uge</td> <td>campingvogn</td> <td>380 pr. uge</td> <td>mobil Home 18m<sup>2</sup></td> <td>420 pr. uge</td> <td>mobil Home 24m<sup>2</sup></td> <td>550 pr. uge</td> <td>strøm</td> <td>1 pr. dag</td> </table> </center> </body> </html> IT-eksamensprojekt 2009 Side 19 af 25

billeder.php <html> <head> <title>camping</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <center> <h1>billeder</h1> <div style="border: 2px solid black; width: 85%; margin-bottom: 15px;"> <?php include("menu.php");?> <div style="border: 2px solid black; width: 85%;"> <table border="0" style="text-align: center;"> <td><img src="billede1.jpg" width="200"></td> <td><img src="billede2.jpg" width="200"></td> <td><img src="billede3.jpg" width="200"></td> <td>her ses pladsens pool, med hotellet i baggrunden</td> <td>her er det den ugentlige vinaften der er i gang</td> <td>det lille røde tog, der kører mod Lemastra. Toget kan til tider høres køre rundt oppe i bjergene</td> <td colspan="3"> </td> <td><img src="billede4.jpg" width="200"></td> <td><img src="billede5.jpg" width="200"></td> <td><img src="billede6.jpg" width="200"></td> <td>her står man i Tournon og ser over på Tain l' Hermitage</td> <td>en lille sidegade i det ellers så store Lyon</td> <td>her ses et billede af det naturskønne Pontd'arc</td> <td colspan="3"> </td> <td><img src="billede7.jpg" width="200"></td> <td><img src="billede8.jpg" width="200"></td> <td><img src="billede9.jpg" width="200"></td> <td>her ses den aktive plads i Tournon, hvor der ugentligt er marked</td> <td>et billede af poolen, med udsigt bag til pladsen</td> <td>her ses Rhöne-floden, der snor sig rundt i landskabet</td> <td colspan="3"> </td> </table> </center> </body> </html> IT-eksamensprojekt 2009 Side 20 af 25

aktiviteter.php <html> <head> <title>camping</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <center> <h1>aktiviteter</h1> <div style="border: 2px solid black; width: 85%; margin-bottom: 15px;"> <?php include("menu.php");?> <div style="border: 2px solid black; width: 85%;"> <table border="0" style="width: 100%;"> <td> <center><img src="billede10.jpg" width="300"></center></td> <td> MANDAG<br> vand-polo / bordtennis<br> aften-swimmingpool<br> <br><br> TIRSDAG<br> vandgymnastik / beach-volley<br> (baby-foot?) / karaoke<br> <br><br> ONSDAG<br> børneaktiviteter / vand-volley<br> børnespil / stigespil<br> strand-fodbold / male T-shirt<br> børne-biograf<br> <br><br> TORSDAG<br> aquagym / pétanque<br> dart / aften-swimmingpool<br> <br><br> FREDAG<br> vandretur / vand-polo<br> badminton / dans<br> <br><br> SØNDAG<br> Velkomstdrink<br> </td> <td> <center><img src="billede11.jpg" width="300"></center> </td> </table> </center> </body> </html> IT-eksamensprojekt 2009 Side 21 af 25

booking.php <html> <head> <title>booking</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <center> <h1>booking</h1> <div style="border: 2px solid black; width: 85%; margin-bottom: 15px;"> <?php include("menu.php");?> <div style="border: 2px solid black; width: 85%; text-align: left;"> <form action="booking.php" method="post"> <input type="hidden" name="send" value="yes"> <? $check1=$check2=$check3=""; $pladstype = $_POST["pladstype"]; while (list ($key,$val) = @each ($pladstype)) { if ($val == 'Hotelværelse') { $check1 = ' checked="checked"'; elseif ($val == 'Telt/vognplads') { $check2 = ' checked="checked"'; elseif ($val == 'Mobilhome') { $check3 = ' checked="checked"';?> Vælg type:<br> <input type="checkbox" name="pladstype[]" value="hotelværelse" id="chk2"<?= $check1?>> <label for="chk2">hotelværelse</label><br> <input type="checkbox" name="pladstype[]" value="telt/vognplads" id="chk1"<?= $check2?>> <label for="chk1">telt/vognplads</label><br> <input type="checkbox" name="pladstype[]" value="mobilhome" id="chk3"<?= $check3?>> <label for="chk3">mobilhome</label><br> <br>vælg periode:<br> Start: <input type="text" name="startdato" value="<?= $_POST['startdato']?>"> (dd-mmåååå)<br> Slut: <input type="text" name="slutdato" value="<?= $_POST['slutdato']?>"> (dd-mmåååå)<br> <input type="submit" value="ok... næste trin..."> </form> <?php if ($_POST["send"] == "yes") { echo "<h2>vælg plads/værelse</h2>\n\n"; echo '<form action="booking_gem.php" method="post">'; echo '<input type="hidden" name="startdato" value="'. $_POST['startdato'].'">'; echo '<input type="hidden" name="slutdato" value="'. $_POST['slutdato'].'">'; $key = $val = ""; $startdato = strtotime($_post["startdato"]); $slutdato = strtotime($_post["slutdato"]); $pladstype = $_POST["pladstype"]; IT-eksamensprojekt 2009 Side 22 af 25

$strsql = "SELECT ID, Navn, Type FROM camp_plads WHERE "; while (list ($key,$val) = @each ($pladstype)) { $strsql.= "Type = '". $val. "' OR "; $strsql.= "1=2 ORDER BY Type ASC, Navn ASC"; $con = mysql_connect("localhost","mariadb06","loveciano"); if (!$con) { die('could not connect: '. mysql_error()); mysql_select_db("mariadb06", $con); $result = mysql_query( $strsql ); $navne = array(); $ids = array(); $typer = array(); $maxr = 0; while($row = mysql_fetch_array($result)) { //echo $row['navn']. '<br>'; $navne[$maxr] = $row['navn']; $ids[$maxr] = $row['id']; $typer[$maxr] = $row['type']; $maxr++; $r = 0; echo '<div id="d1"><table border="0">'."\n"; echo "<th>dims</th>\n"; $dato = $startdato; while ($dato <= $slutdato) { echo '<th style="background-color: silver;">'. date("d/m",$dato). '</th>'."\n".''; $dato = mktime(0,0,0, date("m",$dato), date("d",$dato)+1, date("y",$dato) ); echo "<th>valg</th>\n"; while ($r < $maxr) { $navn = $navne[$r]; $type = $typer[$r]; $plads = $ids[$r]; $godkendt = 1; echo ''."\n".'<td><label for="rd'.$r.'">'. $type.' '. $navn. '</label></td>'."\n".''; $dato = $startdato; while ($dato <= $slutdato) { $result = mysql_query("select * FROM camp_bookning WHERE Start_dato <= '". date("y-md",$dato). "' AND Slut_dato >= '". date("y-m-d",$dato). "' AND Plads = ". $plads); $color = "green"; while ($row = mysql_fetch_array($result)) { $color = "red"; $godkendt = 0; echo '<td style="background-color: '. $color. ';"> </td>'."\n".''; $dato = mktime(0,0,0, date("m",$dato), date("d",$dato)+1, date("y",$dato) ); IT-eksamensprojekt 2009 Side 23 af 25

echo '<td>'; if ($godkendt == 1) { echo '<input type="radio" name="plads" value="'. $plads. '" id="rd'.$r.'">'; else { echo ' '; echo '</td>'."\n".''."\n".''; $r++; echo '</table>'."\n".'';?> Navn: <input type="text" name="navn" value="" size="40"><br> Adresse (vej, nr., postnr., by, land):<br> <textarea name="adr" cols="50" rows="6"></textarea><br> Telefonnummer: <input type="text" name="tlf" value="" size="20"><br> E-mailadresse: <input type="text" name="mail" value="" size="50"><br> Antal personer: <input type="text" name="pers" value="" size="3" maxlength="3"><br> <input type="checkbox" value="1" name="dyr" id="dd1"> <label for="dd1">dyr medtages</label><br> Note:<br> <textarea cols="40" rows="10" name="note"></textarea><br><br> <input type="hidden" name="send" value="yes"> <br><input type="submit" value="ok - book"> </form> </center> <?php mysql_close($con);?> </body> </html> IT-eksamensprojekt 2009 Side 24 af 25

booking_gem.php <html> <head> <title>booking</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <center> <h1>gem booking</h1> <div style="border: 2px solid black; width: 85%; margin-bottom: 15px;"> <?php include("menu.php");?> <div style="border: 2px solid black; width: 85%; text-align: left;"> <?php if ($_POST["send"] == "yes") { $con = mysql_connect("localhost","mariadb06","loveciano"); if (!$con) { die('could not connect: '. mysql_error()); mysql_select_db("mariadb06", $con); $plads = $_POST["plads"]; $startdato = strtotime($_post["startdato"]); $slutdato = strtotime($_post["slutdato"]); $pers = $_POST["pers"]; $dyr = $_POST["dyr"]; if ($dyr == "") { $dyr = "0"; $navn = $_POST["navn"]; $adr = $_POST["adr"]; $tlf = $_POST["tlf"]; $mail = $_POST["mail"]; $ordrenr = date("ymd-his")."-".$tlf; $ip = @$REMOTE_ADDR; $dato = strtotime("now"); $betalt = "0"; $betalingsfrist = strtotime("-1 month",$startdato); $enote = ""; $bnote = $_POST["note"]; $strsql = "INSERT INTO camp_booking (Plads, Start_dato, Slut_dato, Personer, Dyr, Navn, Adresse, Mail, Tlf, Ordrenummer, IP, Dato, Betalt, Betalingsfrist, Brugernote, Ejernote) VALUES (".$plads.",'".$startdato."','".$slutdato."',".$pers.",".$dyr.",'".$navn."','".$adr."','".$mail."','".$tlf."','".$ordrenr."','".$ip."','".$dato."',".$betalt.",'".$frist."','".$bn ote."','".$enote."')"; if (!mysql_query($strsql,$con)) { // die('error: '. mysql_error()); echo 'Der er desværre opstået en fejl! Har du husket at udfylde alle felterne???<br><br><br>'; else { echo "Tilføjede bookingen!"; mysql_close($con);?> </body> </html> IT-eksamensprojekt 2009 Side 25 af 25