EKSAMEN. Emne: Webprogrammering med PHP (kont.) Webprogrammering 1 (kont.) Eksamenstid:

Størrelse: px
Begynne med side:

Download "EKSAMEN. Emne: Webprogrammering med PHP (kont.) Webprogrammering 1 (kont.) Eksamenstid: 09.00-13.00"

Transkript

1 EKSAMEN Emnekode: ITM20606 ITF10208 Dato: Emne: Webprogrammering med PHP (kont.) Webprogrammering 1 (kont.) Eksamenstid: / Hjelpemidler: 2 A4 ark (4 sider) med egenproduserte notater (håndskrevne/maskinskrevne) Faglærer: Tom Heine Nätt Eksamensoppgaven: Oppgavesettet består av 7 sider inklusiv denne forsiden og vedlegg, og er inndelt i 3 deler med henholdsvis 5, 3 og 5 oppgaver. Du er selv ansvarlig for å kontrollere at oppgavesettet er komplett. Det er på hver del og oppgave angitt hvor mye disse teller av totalen. Karakter fastsettes dog på basis av en helhetsvurdering av besvarelsen. Les gjennom alle oppgavene før du begynner. Husk at det ikke er gitt at oppgavene står sortert etter økende vanskelighetsgrad. Det alltid er bedre å svare noe, om så bare hvordan du ser for deg at oppgaven kunne vært løst, enn å ikke skrive noe i det hele tatt på en oppgave. Lykke til! Sensurdato: 22/ Karakterene er tilgjengelige for studenter på studentweb senest 2 virkedager etter oppgitt sensurfrist. Følg instruksjoner gitt på: Side 1 av 7

2 Del 1 Kodeforståelse (10%) Her skal du kun svare på selve spørsmålet, og du trenger ikke forklare hvordan du kommer frem til svaret. NB! Les koden og selve spørsmålet nøye, for det kan være mange feller å gå i her... Oppgave 1.1 (2%) $a = 5; $b = 4; $a--; if($a>$b) echo A ; else if($a==$b) echo B ; Oppgave 1.2 (2%) $a=4; while($a<15) $a++; echo $a; Side 2 av 7

3 Oppgave 1.3 (2%) function fun($p1,$p2) echo A ; return $p1+$p2; $c = fun(4,3); $p = fun($c,3); echo $p; Oppgave 1.4 (2%) $arr = array(4,1,5,2,6); for($i=0;$i<5;$i++) echo $arr[4-$i]; Oppgave 1.5 (2%) for($i=0;$i<3;$i++) echo A ; for($j=0;$j<2;$j++) echo B ; Side 3 av 7

4 Del 2 Grunnleggende programmering (40%) Oppgave 2.1 (15 %) Skriv ferdig følgende funksjoner: a) Funksjon som finner og returnerer summen av alle heltall mellom en fra- og en til-verdi. function sum($fra,$til) b) Funksjon som finner ut og returnerer om et tall er i en liste eller ikke. function inneholder($tall,$liste) c) Funksjon som genererer og returnerer en array med et gitt antall tilfeldige tall i et intervall mellom en fra- og en til-verdi. function generertilfeldigliste($antall,$fra,$til) Tips: Koden rand($fra,$til) gir tilfeldig heltall i intervallet. Oppgave 2.2 (15 %) Gå ut i fra at du har følgende array ferdig definert: $bokstaver = array( A, B, C, D, E, F,osv, Z ); Skriv kode som produserer følgende utskrift ved hjelp av løkker: 1:A 2:BB 3:CCC 4:DDDD 5:EEEEE 6:FFFFFF osv 26:ZZZZZZZZZZZZZZZZZZZZZZZZZZ Tips: En ytre løkke styrer hvilket bokstavnummer du er på, en indre løkke skriver ut et antall bokstaver. Side 4 av 7

5 Oppgave 2.3 (10 %) Et idrettsstevne har en fil med informasjon om deltakernummer og poengsum fra 3 ulike grener i dette formatet: deltakernummer;poeng1;poeng2;poeng3 Et utdrag av en slik fil kan dermed se slik ut: 34;12;78;25 36;53;43;23 Lag et enkelt PHP-script som leser fila (resultater.dat) og produserer følgende utskrift: Deltaker 34: Gren 1: 12 poeng Gren 2: 78 poeng Gren 3: 25 poeng Sum: 115 poeng Deltaker 36: Gren 1: 53 poeng Gren 2: 43 poeng Gren 3: 23 poeng Sum: 119 poeng Innrykk kan i HTML gjøres ved å skrive ut et antall Du kan her klare deg med tre slike. Side 5 av 7

6 Del 3 Parametere, skjemaer og databaser (50%) Du skal i denne oppgaven lage et svært forenklet system for restplasser i et reisebyrå. Systemet baserer seg på en databasetabell som er definert slik: CREATE TABLE restplass ( reisekode CHAR(5) PRIMARY KEY, avreise DATETIME, retur DATETIME, destinasjon VARCHAR(255), informasjon TEXT, aktiv INT ) Feltet aktiv indikerer om denne restplassen fortsatt skal kunne bestilles. Tallet 0 betyr nei(passiv), tallet 1 betyr ja(aktiv). Som et eksempel kan derfor tabellen være fylt slik: reisekode avreise retur destinasjon informasjon aktiv PZ34W Chania Bra hotell 1 IR34S Dakar Kort tur 0 PQ34T Athen 1 Databasen er plassert på samme server som ditt PHP-script, og har brukernavnet flyme, passordet drossap og databasenavnet flymedb. Oppgave 3.1 (10%) Lag en opplisting (ledigerestplasser.php) av alle restplasser som er aktive (kode 1) på følgende tabellform: Reisekode Destinasjon Avreise Retur Informasjon Side 6 av 7

7 Oppgave 3.2 (10%) Hvilke endringer må til i koden for at man skal kunne kalle scriptet med en link på følgende form, og da kun få opp de aktive restplassene som passer til søket : ledigerestplasser.php?avreise= &retur= destinasjon=dakar Med andre ord foretas det i eksempellinken et søk etter alle restplasser som oppfyller kravene: Avgang 12/6-10 Retur 30/6-10 Går til destinasjonen Dakar Oppgave 3.3 (10%) Lage en ny webside (restplassok.php) med et skjema for scriptet i oppgave 3.2. Du skal her benytte standard tekstbokser for alle de tre feltene, og resultatet skal som sagt sendes til ledigerestplasser.php som da vil vise resultatet av søket. Du velger selv hvordan selve søkesiden skal se ut. Oppgave 3.4 (10%) Følgende SQL-setning gir deg en liste over alle destinasjoner (listet én gang) som har minst én aktiv restplass: SELECT DISTINCT destinasjon FROM restplass WHERE aktiv=1; Hvilke endringer må du gjøre med restplassok.php for at valg av destinasjon skal kunne gjøres via en nedtrekksliste fylt med mulige destinasjoner istedenfor en tekstboks. Oppgave 3.5 (10%) Følgende kode gir $i en tallverdi som forteller hvor mange sekunder aktuelle dato er etter 1. Januar 1970: $i = strtotime(" ") Bruk funksjonen strtotime for å gjøre en kontroll på at verdiene er gyldige for avreise og retur. Dvs. at avreisedato produserer et lavere antall sekunder enn returdato. Hvilke endringer må du gjøre (restplassok.php og/eller ledigerestplasser.php) får å få en feilmelding dersom brukeren skriver inn en retur som kommer tidligere enn avreise. Side 7 av 7