Et forsøk på definisjon [Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michael.preminger@hioa.no) 19/08-15 Engelsklignende språk, med rigid syntaks, som kan brukes til å skrive instruksjoner (eksempel nedenfor). Instruksjonene i et programmeringsspråk kan leses og skrives av mennesker (vi forstår hva ord som print betyr). Instruksjonene (samlet kalt programkode ) oversettes til maskinspråk (som bare datamaskinen forstår), slik at datamaskinen kan utføre dem. Hva er et dataprogram (litt forenklet) en sekvens med instruksjoner skrevet i et programmeringsspråk... Motivasjon: Hvorfor vi lærer å programmere (og hva er et programmeringsspråk) Om dynamiske, tjenerbaserte, interaktive nettsider Noen enkle programmer, bruken av print-funksjonen Om infrastrukturen, tjenermaskinen og andre verktøy Arbeide med øvelsesoppgaver... oversatt (eller tolket) til maskinspråk for å utføre nyttige handlinger. Eksempel 1 Programkode for et lite dataprogram (én instruksjon lang), skrevet i programmeringsspråket PHP: print("dette er et enkelt program"); kjør programmet Mye av innholdet på webben, er dynamisk, interaktivt og databasestyrt. For å kunne forstå hvordan dynamiske nettsteder (særlig slike som benytter databaser) lages, må vi kunne litt om programmering. For å kunne lage slike nettsteder må vi kunne programmere. Noen begrep: PHP er et programmeringsspråk brukt til å lage dynamiske, tjenerbaserte og interaktive nettsider Vi skriver våre programmer i PHP-filer, som oftest med navn som fil.php Disse filene lagrer vi på en webtjener, der hvor vi lagrer html-filer. En PHP-fil er, stort sett, en HTML-fil, med (potensielt) dynamisk innhold. Viktige bregreper å diskutere, er programmeringsspråk dynamiske nettsider interaktive nettsider "tjenerbasert" Idag: se på disse begrepene. lage de fø rste programmene, som utfø rer enkele oppgaver. En statisk nettside ser lik ut hver gang den hentes frem Samme visning, uansett av hvem, hvor og når siden hentes fram. Eksempel: en statisk nettside. (samme visning hver gang jeg klikker). En dynamisk nettside kan se annerledes ut fra gang til gang. Et eksempel: en dynamisk nettside (klikker 3 til 4 ganger: forskjellig innhold fra gang til gang!) statisk: HTML-fil, med "klokkeslettet" skrevet som tekst. dynamisk: krever en mekanisme, som "henter" det faktiske klokkeslettet og tilrettelegger for visning 1 of 12 19.08.2015 20:20 2 of 12 19.08.2015 20:20
Med PHP kan vi ta i bruk data fra brukere, ved hjelp av HTML-forms PHP-programmer er i stand til å ta i bruk data som brukere av nettsider legger i utlagte FORM-elementer. Hva heter du? Data fra FORM-elementer overføres via nettet til webtjeneren, som tilpasser nettsidens funksjon til dataene. PHP henter klokkeslettet på tjeneren (fritt etter Lash (2003), figur 1.2). En tjenerbasert, dynamisk nettside tilrettelegges på tjenermaskinen Vi bruker den dynamiske webklokken som eksempel. Følgende skjer når vi klikker på en lenke til en tjenerbasert dynamisk webklokke: nettleseren sender en forespørsel til tjeneren, som finner riktig PHP-program (med URL'en til PHP-filen) PHP-programmet etterspør det øyeblikkelige klokkeslettet gjør klokkeslettet om til en forståelig tekststreng (for eksempel "12.02.02") Det ferdig tilrettelagte innholdet overføres til vår nettleser over nettet. Webtjenerprogrammet (et annet program) sender strengen med klokkeslettet over nettet til vår nettleser, for visning. I dette eksemplet viser vår nettleser tjenerens klokkeslett. Hvis vår tjener er lokalisert i USA, risikerer vi å få et klokkeslett som ikke passer med vårt. Slike FORM-elementer ser vi på neste gang! Med PHP kan vi anvende databaser i våre dynamiske nettsider. De fleste dynamiske nettsteder bruker databaser. PHP-programmer gjør brukere istand til å hente spesifikke data over nettet, på forespørsel endre data i databaser på forespørsel Databasehåndtering i PHP er IKKE en del av dette kurset, men detaljbeskrevet i læreboken for interesserte. Kort svar: Mange steder. Et fagrelevant eksempel: biblioteksystemet Reindeks. 3 of 12 19.08.2015 20:20 4 of 12 19.08.2015 20:20
Eksempel 3: Flere linjer med HTML Vi vever PHP-instruksjoner sammen med "faste" HTML-setninger Eksempel 2: En HTML fil med én linje generert med PHP Dette eksemplet gjør lite utover genreringen av "vanlig", fast HTML-kode. "print" innenfor en PHP-blokk gjør at HTML-KODEN med blå bakgrunn flettes med den "faste" HTML koden (med grå bakgrunn) Teksten (grå HTML-kode) utenfor PHP-blokken kaller vi "maltekst" (template text). Den sammenflettede siden sendes til nettleseren. <!DOCTYPE html> <html> <head> <title>et første eksempel </title> </head> <body> print(" <p>dette er mitt første PHP-program</p>"); </body> </html> Her skriver vi PHP-kode som skal bli til 5 linjer med innhold. Vi bruker vanlig avsnittsstruktur: en overskrift, et avsnitt og en liste. <!DOCTYPE html > <html> <head> <title>det andre eksemplet</title> </head> <body> print("<h3>dette er en overskrift</h3>"); print( "<p>nå følger en liste med innførsler</p>"); print("<ul>"); print(" <li>første innførsel</li>"); print(" <li>andre innførsel</li>"); print(" <li>tredje innførsel </li>"); print("</ul>"); </body> </html> I nettleseren: Slik ser resultatet ut i sidevisning: og slik ser det ut i kildevisning. Man kan, altså, ikke se at tekstlinjen er PHP-generert. 5 of 12 19.08.2015 20:20 6 of 12 19.08.2015 20:20
Eksempel 4: Kode med innlagte kommentarer PHP tilbyr også instruksjonen echo. echo gjør temmelig nøyaktig samme nytten som print. Mange programmerere (og mange lærebøker) bruker "echo" istedenfor print. Dette er en smaksak. <!DOCTYPE html> <html> <head> <title>kommentarer</title> </head> <body> /* Dette programmet skriver noen linjer til en nettleser. Skrevet av Michael*/ Vi skriver kommentarer i programkoden for at vi (og andre) lettere skal kunne lese våre programmer Programkoden er ikke alltid selvforklarende. Det tar ofte tid å utvikle et program. Vi kan glemme hva vi "ville med" en kodebit (selv om den fungerer fint). Andre som overtar utviklingen av v rt program kan ha problemet med forst hvirdan vi tenkte. Kommentarer er gode ha! Påvirker ikke programmets funksjon. Blir ikke tolket! PHP tillater to typer kommentarer: énlinjet og flerlinjet. En linje i en PHP-blokk som begynner med to skråstreker er en kommentarlinje: // Kodelinjen nedenfor skriver overskriften print("<h3>dette er en overskrift</h3>"); print( "<p>nå følger en liste med innførsler</p>"); //Kodelinjene nedenfor skriver innførslene print("<ul>"); print(" <li>første innførsel</li>"); print(" <li>andre innførsel</li>"); print(" <li>tredje innførsel </li>"); print("</ul>"); </body> </html> // Neste kodelinje printer en linje med tekst til nettleseren print("<p> Denne linjen skrives til nettleseren</p>"); Denne linjen skrives til nettleseren En blokk-kommentar, mellom /* og */ kan strekke seg over flere linjer: /* Neste kodelinje printer en linje med tekst til nettleseren */ print("<p> Denne linjen skrives til nettleseren</p>"); Sidevisningen blir ikke påvirket av kommentarer. 7 of 12 19.08.2015 20:20 8 of 12 19.08.2015 20:20
Eksempel 5: Kode for den dynamiske webklokken Lagring av filer Det kreves ennå ikke at dere forstår PHP-koden for den dynamiske webklokken. Men siden vi snakket en del om den idag - kan det være greit å vise den... Merk linenummerne: ikke en del av koden!! Jeg kommer til å bruke linjenumre i noen av eksemplene i fremtiden. 1. <!DOCTYPE html> 2. <html> 3. <head> 4. <title>dynamisk klokke</title> 5. </head> 6. <body> 7. <p> klokka er 8. 9. // Hent klokkslettet fra tjeneren, og plasser i en tekststreng 10. $klokke_streng=date("g\.i\.s"); 11. 12. // Vis streng med klokkeslett i nettleservinduet 13. print($klokke_streng); 14. 15. </p> 16. </body> 17.</html> Dere Må lagre alle deres filer et sted under M:\public_html (bibin-maskinen). Filer med PHP-blokker skal ha ".php" til etternavn. Maskinen bibin.hioa.no er webtjeneren, som kjører våre PHP-programmer og sender den ferdig tilrettelagte nettsiden til nettleseren For eksempel: M:\public_html\minfil.php : filen er synlig gjennom http://bibin.hioa.no/~s<ditt studentnummer>/minfil.php Den må tolkes av webtjeneren for å vises riktig!!! I motsetning til (X)HTML-filer, får dere ikke vist filer som har ".php" til etternavn ved å dobbelklikke dem i windows utforsker vist filer med adresse som M:\public_html\minfil.php Dere må skrive hele adressen til filen: "http://bibin.hioa.no/~s123456/minfil.php" (eller klikke på en lenke til den) Med hjelp av programmeringsspråket PHP skal vi få vår tjenermaskin (bibin.hioa.no) til å lage dynamisk HTML-innhold. Instruksjonene i PHP er vevd sammen med "vanlige" HTML-koder og tekst. De skrives i PHP-blokker innenfor disse sidene. En PHP-blokk begynner med "" og avsluttes med "". Innholdet som genereres av PHP-blokker er dynamisk: det genereres hver gang vi henter fram nettsiden, og kan være forskjellig fra gang til gang Filen som viser 12.00.00 hele tiden heter, for eksempel, klokke_s.htm Filen som viser et annet (og riktigere) klokkeslett heter klokke_d.php PHP-skrevne nettsider kan også være interaktive, ved å bruke FORM-elementer 9 of 12 19.08.2015 20:20 10 of 12 19.08.2015 20:20
Programmering læres gjennom beina! Man lærer ved å programmere! Vi har prøvd å bygge opp lab-øvelsene gradvis, dvs. at vi starter med meget enkle oppgaver (kanskje kjedelige?), og bygger opp til litt mer krevende oppgaver. Det vil si at: Dere må løse enkle oppgaver, bl.a. for å bli fortrolig med verktøy og infrastruktur Dere må ta den tiden det tar å prøve og feile Dere må balansere mellom å gi dere for fort på den ene siden, og stange hodet unødvendig mot veggen på den andre siden. Denne balansegangen er individuell Dere finner fort ut hva dere trenger Utover det: Bruk oss (undertegnede og lab-instruktørene) Lab-ø velsene denne uken omhandler følgende: Forståelse av infrastrukturen: Viktig: PHP trenger en webtjener for å bli tolket Plassere filer på webtjeneren: Hvor de skal plasseres og hvordan de skal vises Vise HTML-avsnitt skrevet med print() på deres nettleser Skriving av linjeskift og kommentarer Sist oppdatert 19/08-15 av Michael Preminger, michael.preminger@hioa.no Valgfrie oppgaver Noen av oppgavene i oppgavetekstene er valgfrie, og er merket med (*). løs "ustjerna" oppgaver først prøv de "stjerna" oppgaver etterpå (hvis dere får tid / lyst) Vi har forsøkt å organisere det slik at de valgfrie oppgaver gir enten ekstra øvelse i obligatoriske kunnskaper, eller, en utfordring for de ekstra interesserte. Deltakelse på labøvelser er å ta ansvar for egen læring Vi bruker ressurser på å gi dere mulighet til veiledet oppgaveløsning. Bruk muligheten!! 11 of 12 19.08.2015 20:20 12 of 12 19.08.2015 20:20