Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Like dokumenter
Når en bruker skriver sitt navn ("Ole") i et form-element med name="fornavn" som attributt. klikker på submit-knappen

Aritmetiske operasjoner. Litt om forrige times øvelsesoppgaver

Introduksjon til beslutningsstrukturer

[Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michaelp@hio.no) 07/ Vi holder orden på verdier med hjelp av variabler

$antall_maaneder =12; Variablene $pris og $antall_maaneder i eksemplet ovenfor har

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Verdier, variabler og forms

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

</html> </head> <form action= rtkst.php > <p> Fornavn? <input type= text name= fornavn <input type= submit />

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Utvikling av dynamiske nettsteder med PHP og databaser, våren 2009

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Tilgjegelighet av XHTML-forms

while-løkker while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt Eksempel 1: en enkel while-løkke

while-økker while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt Eksempel 1: en enkel while-løkke

En enkel while-løkke. 1 of :28. 2 of :28. while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Et forsøk på definisjon

Betinget eksekvering og logiske tester i shell

Innføring i bruk av CGI4VB

Et forsøk på definisjon

HØGSKOLEN I SØR-TRØNDELAG

Hvor gammel er du? Hvor gammel er du? Del 1: Skrive ut til skjerm. Gjøre selv. Skrevet av: Sindre O. Rasmussen, Kodeklubben Trondheim

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

HØGSKOLEN I SØR-TRØNDELAG

Innføring i bruk av CGI4VB

Python: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Webprogrammering høsten 2017

Et forsøk på definisjon. Eksempel 1

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

<?php. count tar en array som argument, og returnerer et tall som uttrykker antallet innførsler i arrayen.

Øvingsforelesning 1 Python (TDT4110)

Læringsmål og pensum. if (be): else (not_to_be):

if-tester Funksjoner, løkker og iftester Løkker og Informasjonsteknologi 2 Læreplansmål Gløer Olav Langslet Sandvika VGS

$i < 5 forsettelsesbetingelsen - false => Løkken slutter.

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

Et forsøk på definisjon. Eksempel 1

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

}?> <!DOCTYPE... <html xmlns=" <head>... </head> <body> <p>nå skal vi printe hallo:</p> <?php //funksjonskall

Repetisjon Novice Videregående Python PDF

Oblig 4 Undervisningshefte i grunnleggende JavaScript programmering

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

Plenumsregning 1. Kapittel 1. Roger Antonsen januar Velkommen til plenumsregning for MAT1030. Repetisjon: Algoritmer og pseudokode

TDT4105 Informasjonsteknologi grunnkurs Øvingsforelesning 2. Iver Dihle Skjervum Vit.ass. ITGK

9. ASP med databasekopling, del II

Oblig 5 Webutvikling. Av Thomas Gitlevaag

Leksjon 3. Kontrollstrukturer

MAT1030 Diskret matematikk

Web-programmering med JSP Løsningsforslag leksjon 4

TDT4110 IT Grunnkurs Høst 2014

MAT1030 Plenumsregning 1

ToPlayer. Introduksjon: Skrevet av: Ruben Gjerstad Eide og Kine Gjerstad Eide

ToPlayer. Steg 1: Kom i gang med metodene setup og draw. Gjør dette: Introduksjon:

INF1000 undervisningen INF 1000 høsten 2011 Uke september

INF 1000 høsten 2011 Uke september

TDT4105 IT Grunnkurs Høst 2016

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

MAT1030 Diskret Matematikk

HØGSKOLEN I SØR-TRØNDELAG

Velkommen til plenumsregning for MAT1030. MAT1030 Diskret matematikk. Repetisjon: Algoritmer og pseudokode. Eksempel fra boka. Eksempel

HØGSKOLEN I SØR-TRØNDELAG

Denne oppgaven innfører funksjoner, og viser hvordan vi kan skrive og teste funksjoner i Ellie.

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Kodetime for Nordstrand barneskole

Programmering Høst 2017

SELECT DISTINCT Fornavn, Etternavn, Programtittel FROM Program P, Medvirkende M, Deltagelse D. SELECT Tilgjengelighet FROM Program

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

Mattespill Nybegynner Python PDF

INF uke 2. Inputt, beslutninger, kontrollflyt og prosedyrer

Steg 1: Vår første datamaskin

HØGSKOLEN I SØR-TRØNDELAG

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!

Verden - Del 2. Steg 0: Oppsummering fra introduksjonsoppgaven. Intro

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

Plenumsregning 1. MAT1030 Diskret Matematikk. Repetisjon: Algoritmer og pseudokode. Velkommen til plenumsregning for MAT1030

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

HØGSKOLEN I SØR-TRØNDELAG

Brukerdokumentasjon. Webservices og webklient for kodeverk/ kodeverdi verifisering

Bygg et Hus. Introduksjon. Steg 1: Prøv selv først. Skrevet av: Geir Arne Hjelle

Verden. Steg 1: Vinduet. Introduksjon

Webformularer, PHP og databaser

Øvingsforelesning 5 Python (TDT4110)

TDT4110 IT Grunnkurs Høst 2016

En liten rekap. Spørrespråk. I dag SELECT

Læringsmål og pensum. Oversikt

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Øvingsforelesning 5 Python (TDT4110)

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Verktøy for boligkartlegging

Verktøy for boligkartlegging

Steg 1: Lag bildedeklarasjon

Snurrige figurer. Steg 1: En snurrig figur. Sjekkliste. Introduksjon

Feilmeldinger, brukerinput og kontrollflyt

Oppsummering fra sist

Verden. Introduksjon. Skrevet av: Kine Gjerstad Eide og Ruben Gjerstad Eide

IN uke 1. Komme i gang med programmering

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang. Sjekkliste. Introduksjon

Transkript:

Page 1 Page 2 [Kurssidene] [ JBI] [ ] Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006 Introduksjon til kontrollstrukturer Michael Preminger (michaelp@hio.no) 07/09-06 I denne forelesningen En liten repitisjon Betinget utføring: Enkle if-setninger if-else strukturer enkle og sammensatte logiske uttrykk Ole Når en bruker skriver sitt navn ("Ole") i et form-element med name="fornavn" som attributt klikker på submit-knappen... legges verdien "Ole" i variabelen $fornavn i PHP-programmet som er henvist til fra Actionelementet PHP-programmet kan bruke den verdien på mange forskjellige måter. Her, for eksempel, printes den til nettleseren. Vi har sett tilsvarende verdioverføring fra radioknapper og nedtrekksmenyer Magien bak verdioverføringen Variabelverdier overføres fra HTML-formen til php-programmet som parametre en klikk på "submit"-knappen utløser en URL, som ser slik ut: http://bibin.hio.no/~s123456/uke_35/respons_tekst.php?fornavn=ole altså: URLen til programmet etterfølges av parametre. parametre kommer i par: variabelnavn=verdi. Repitisjon fra forrige gang Vi holder orden på verdier med hjelp av variabler Vi lagrer verdier i variabler. Variabler uttrykker verdienes rolle i programmet, og bør få beskrivende navn. Navngitte form-elementer henger sammen med variabler av samme navn Våre programmer mottar verdier fra HTML-forms bruker disse til å tilpasse innholdet på websiden til brukernes behov Reset <form action= "respons_ tekst.php"> <input type="text" name= "fornavn" id="id_fornavn" /> <input type="submit" /> <input type="reset" /> Respons på tekstelementet: <?php print( $fornavn );?> tekst.htm (utdrag) respons_tekst.php(utdrag)

Page 3 Page 4 Ved flere variabler overføres også flere "parameterpar", adskilt med '&'. 8. print ("din favorittforfatter er $favorittfor "); Eksempel 13 fra forrige gang: Et større skjema som sender flere parametre 9.?> 10. (merk at her har vi, for å spare plass, plassert slik at den starter rett under visningen og fortsetter i neste kolonne.) Er du student? Ja Nei Din favorittforfatter? Jonas Lie Reset <form action= "respons_stor.php" method="get"> tekstfelt <input type="text" name= "fornavn" /> radioknapprekke Er du student? name= "erstudent" value=""/> Ja name= "erstudent" nedtrekksmeny Din favorittforfatter? <select name= "favorittfor"> option> <option> Henrik Ibsen</option> <option> Knut Hamsun</option> <option> Henrik Wergeland</option> <option selected="selected" > Jonas Lie</ <option> Ivar Åsen</option> <option> Erlend Loe</option> <option> Aleksander Kjelland</option> </select> knapper <input type="submit" name="submit" /> <input type="reset" name="reset"/> 11. og på spørsmålet om du var student, svarte du 12. <?php 13. print( $erstudent ); 14.?> 15. 16. takk og på gjensyn! respons_stor.php Kontrollstrukturer - introduksjon Betinget utføring: if-test Våre programmer foretar beslutnninger basert på valgalternativer. If- testen Variabler gir oss mulighet til å foreta meningsfylte valg i våre programmer. Slike valg foretas ofte ved hjelp av kontrollstrukturer og variabelverdier. Betinget utføring er hjertet av programmeringen. datamaskiner / dataprogrammer "tenker" ikke datamaskiner / programmer tar beslutninger (foretar valg), basert på klart formulerte betingelser. En "betingelse" uttrykkes ved hjelp av et logisk uttrykk. If-testen tester om et logisk uttrykk er sant Det logiske uttrykket (mellom klammer, rett etter if - ordet) kan være enten sant eller usant. (engelsk: true eler false) Hvis uttrykket er sant, blir instruksjonene som står mellom krøllparentesene utført. value=""/> Nei Ved klikk på "submit"-knappen, sendes URL'en http://bibin.hio.no/~s123456/uke_35/respons_ stor.php?fornavn=michael&erstudent=&favorittfor=jonas+lie til PHP-programmet listet nedenfor. 1. Takk for din respons: Ditt fornavn er: 2. <?php 3. print ( $fornavn ); 4.?> 5. 6. == leses "er lik": "Hvis $tall er lik 0" Et logisk uttrykk kan ta forskjellige former. Ofte knyttes det til at en variabel har en bestemt verdi, (==) en verdi mindre enn noe (<) en verdi større enn noe (>), osv. Logiske uttrykk kan knyttes til tall, men også til tekststrenger 7. <?php

Page 5 Page 6 Eksempel 1 == om en variabelverdierlik en annen variabelverdi; eksempel: Anta at variablene $fornavn, $etternavn og $antallbarn nedenfor er sent inn fra et HTMLskjema på folkeregisterets nettsted, og personene registrerer seg med fornavn, etternavn og antall barn. 1. //verdier for variablene $fornavn, $etternavn og $antallbarn kommer fra en form 2. <?php 3. print("goddag, $fornavn $etternavn!") ; 4. if ($antallbarn > 0){ 5. print("vennligst klikk her for å registrere dine barn "); 7. print("takk for din registrering"); 8.?> Programmet utføres sekvensielt, instruksjon etter instruksjon. Først utføres instruksjonen i linje 3, uansett verdi på $antallbarn. instruksjonen i linje 5 utføres deretter, bare dersom $antallbarn er større enn 0. instruksjonene i linje 7 utføres til slutt, uansett verdi på $antallbarn. ( Vedkommende får bare anledning til å registrere barn hvis han / hun har noen. ) Eksempel 2: et valg basert på data fra en radioknapp. ( $tall1 == $tall2 ) er sant hvis begge variabler har samme verdi) < om en variabelverdi er mindre enn en annen; eksempler: ( $tall1 < 5 ) er true hvis verdien i $tall1 er eks. -1, 0, 4, 4.9. false hvis $tall1 har verdien 5) ( $tall2 < $tall3 ) er true når verdien i $tall2 er mindre enn verdien i $tall3 > om en variabelverdi er større enn en annen; eksempler: ( $tall1 > 7 ) er true når $tall1 er eks. 10, 40, 1000000. false når $tall1 er lik 7 ( $tall2 > $tall1 ) er true når verdien i $tall2 er større enn verdien i $tall1 >= om en variabelverdi er større enn eller lik en annen; eksempler: ( $var1 >= 0 )(true når $var1 er eks. 1, 5, 9; true også når $var1 har verdien 0. false for negative verdier i $var1) <= om en variabelverdi er mindre enn eller lik en annen; eksempler: ($var3 <= 1) (true hvis $var3 er eks. -1, 0, 1) Et logisk uttrykk puttes alltid i klammer (se for eksempel linje 4 i eksempel 4). Bemerk: Noen PHP-bøker bruker "test-uttrykk" på det jeg kaller "logisk uttrykk". Igjen: Et logisk uttrykk er et utsagn som er "sant" eller "usant" (engelsk: true eller false ). Student? <form action= "respons_radio.php"> Student? name="erstudent" value= "" /> name="erstudent" value="" /> <input type="submit"> 1. <h1>respons på radioknapper:</ h1> 2. Er jeg student? 3. <?php 4. if ($erstudent == ""){ 5. print ("Du er student!</ p>"); 7.?> 8. Takk og farvel! respons_radio.php(utdrag) verdien av variabelen $erstudent bestemmer om setningen "Du er student" skal skrives til nettleseren eller ikke. Dersom verdien er "Ja" - får vi "Du er student!" i nettleseren, etterfulgt av "takk of Farvel!". Dersom verdien er "Nei" - får vi bare "Takk og farvel!". Et logisk uttrykk kan, som sagt, stilles på forskjellige måter PHP støtter flere testoperatorer som kan brukes i logiske uttrykk: == om en variabelverdi er lik et bestemt tall; eksempler: ($tall == 0) er true hvis $tall er lik 0 i testøyeblikket ($student == "" ) er true hvis variabelen $student har verdien "")

Page 7 Page 8 if - else strukturen Eksempel 4 - konferansepåmelding Ofte trenger programmet vite eksplisitt hva det skal gjøre dersom det logiske utrykket er usant (og bare da): Dette ordnes med en else-gren som settes rett etter if-grenen Tenk deg et PHP-program som støtter webbasert påmelding til en konferanse. Programmet skal, bl. a. prise konferansedeltagelsen slik: halv pris for pensjonister full pris for alle andre Den påmeldte bes oppgi sin alder. Alderen (si 66) skrives i et tekst-element med navn "alder", verdien overføres til et PHP-program, og lagres i en variabel med navn $alder. I programmet testes så $alder mot en fast tallverdi, som representerer pensjonsalderen: Eksempel 3 : legger en else-gren til forrige eksempel 2. if ($alder > 65){ 3. $pris=250; 4. } 5. else{ 6. $pris=500; 7. } 8. print("vennligst innbetal konf.avgift, kr. $pris snarest!"); 9.?> Student? <form action= "respons_radio_else.php"> Student? name="erstudent" value= "" / > name="erstudent" value="" /> <input type="submit"> radio_else.htm(utdrag) 1. <h1>respons på radioknapper:</h1> 2. Er jeg student? 3. <?php 4. if ($erstudent == ""){ 5. print ("Du er student!</ p>"); 7. else{ 8. print ("Du er ikke student!"); 9. } 10.?> 11. Takk og farvel! respons_radio_else.php(utdrag) Alder? Hvis $alder oppgis til å være 66 eller mer, settes $pris lik 250. (linje 3) Hvis $alder oppgis til å være 65 eller mindre, settes $pris lik 500 (linje 6) Med formen: Reset <form action="respons_tekst.php"> <br /> <input type="text" name="fornavn" /> <br /> <input type="text" name="alder" size="5"/> <input type="submit"/><input type="reset"/> <?php print ("Velkommen $ fornavn"); if ($alder>65){ $pris=250; } else{ $pris=500; } print ("Vennligst Betal kr. $ pris");?> Her blir enten linje 5 eller linje 8 utført, avhengig av valgt alternativ. Legg merke til at vi, både her og ved forrige eksempel, benytter data fra brukere til noe annet enn bare å printe de ut. Data fra brukeren er her med på å bestemme programmets gang.

Page 9 Page 10 Teste på motsatt (negert) betingelse:!= - operatoren Til tider ønsker vi å utføre en handling bare hvis en variabel ikke har en viss verdi. Eksempel 5 if ($forfatter!= "Ibsen"){ } print ("Dette er ikke et Ibsen-drama"); Eksempel 6 (meget typisk: Sjekk at brukeren har fylt inn en verdi i et tekst-element: <form action="respons_tekst_if.php"> <br /> <input type="text" name="fornavn" /> <br /> <input type="submit"/> tekst_if.htm(utdrag) <?php if ($fornavn!=''){ /*2 enkle gåseøyne */ print ($fornavn); } else{ }?> print("du må oppgi fornavnet"); respons_tekst_if.php(utdrag) Hvis brukeren glemmer å legge inn en verdi i tekstfeltet, blir verdien i variabelen lik tom, som kan representeres ved 2 enkle gåseøyne skrevet ved siden av hverandre: '' Hvis variabelen får en verdi forskjellig fra tom (!= ''), betyr det at brukeren har faktisk lagt inn en verdi i form-elementet. else-grenen representerer det første tilfellet, og kjøres hvis brukeren har glemt å oppgi fornavn. Nøsting av if tester Med "Nøsting av betingelser" menes at vi tester på en betingelse bare hvis en annen betingelse stemmer Dette får formen av "en betingelse inne i en annen betingelse", derav ordet nøsting. Eksempel 7: testing på èn betingelse bare dersom en annen betingelse er oppfylt. 2. if($fornavn!= ''){//hvis brukeren la inn et navn 3. if ($fornavn == "Michael"){ 4. print ("Du heter Michael<br />"); 5. } 6. else{ 7. print("du heter ikke Michael<br />"); 8. } 9. print("et navn var lagt inn<br />"); 10. } 11. else{ 12. print("du må skrive inn ditt fornavn<br />"); 13. } 14. print ("Denne linjen skrives uansett"); 15.?> Anta at verdien i variabelen $fornavn kommer fra et tekst-element i et XHTML-form. Linje 3 til 9 blir bare utført dersom det ble lagt inn en verdi i elementet med navn "fornavn". Linje 12 blir utført dersom brukeren ikke tastet inn et navn før han klikket "submit"

Page 11 Sammensatte logiske uttrykk Av og til er våre uttrykk litt mer kompliserte enn en enkel test kunne uttrykke: Vi ser på to tilfeller: && (logisk og): to eller flere betingelser som skal stemme samtidig (logisk eller): minst én av to eller flere betingelser skal stemme. Eksempel 8: Dersom den påmeldte er en pensjonist samtidig som hun er en dame... 2. //... fortsettelse av eksempel 7. 3. if ( ($alder > 65) && ($kjonn=="kvinne")){ 4. print("som en kvinnelig pensjonist får du også en blomst når du kommer"); 5. } 6. print("vennligst innbetal konf.avgift, kr. $pris snarest!"); 7.?> Eksempel 8a: Hvis alderen er mellom 2 og 5... (en sammensatt test på en variabel) 2. //... fortsettelse av eksempel 7. 3. if ( ($barnealder >= 2) && ($barnealder <= 5 )){ 4. print("barnet ditt er i barnehagealderen "); 5. } 6.?> Eksempel 9: Hvis den påmeldte er enten en kvinne eller en pensjonist (eller begge deler), får den en redusert pris 2. if ( ($alder > 65) ($kjonn=="kvinne")){ 3. $pris=250; 4. } else { 5. $pris=500; 7. print("vennligst innbetal konf.avgift, kr. $pris snarest!"); 8.?> Ukens lab-oppgaver Følgende skal øves inn: Vi øver litt mer på forms og verdioverføring betinget utføring. Sist oppdatert 07/09-06 av Michael Preminger, michael.preminger@jbi.hio.no