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



Like dokumenter
Introduksjon til beslutningsstrukturer

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

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

Aritmetiske operasjoner. Litt om forrige times øvelsesoppgaver

Verdier, variabler og forms

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

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

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

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

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

Tilgjegelighet av XHTML-forms

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

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

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

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

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

Gangemesteren Nybegynner Scratch PDF

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

Et forsøk på definisjon. Eksempel 1

Et forsøk på definisjon

Utførelse av programmer, metoder og synlighet av variabler i JSP

INF109 - Uke 1b

Et forsøk på definisjon. Eksempel 1

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

INF1000 Metoder. Marit Nybakken 16. februar 2004

Betinget eksekvering og logiske tester i shell

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

Shellscripting I. Innhold

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

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

Utførelse av programmer, funksjoner og synlighet av variabler (Matl.)

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

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

Straffespark Introduksjon Scratch Lærerveiledning

Kanter, kanter, mange mangekanter

Høst Øving 5. 1 Teori. 2 Månedskalender. Norges teknisknaturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

HØGSKOLEN I SØR-TRØNDELAG

Oppsummering - Kurset (10/ )

Leksjon 3. Kontrollstrukturer

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

HTML og relasjonsdatabaser med PHP

MAT1030 Diskret matematikk

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Repetisjon Novice Videregående Python PDF

HØGSKOLEN I SØR-TRØNDELAG

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

I dag. Rep: Oppsummering - variabler. Rep: Datatyper. INF1000 (Uke 3) Mer om uttrykk, terminal I/O, forgreninger

Google Chrome. Microsoft Edge. Mozilla Firefox. Internet Explorer. Opera. Safari

infotorg Enkel brukermanual

TASTAVEDEN SKOLE Bruk av PC i skolen

Veiledning og oppgaver til OpenOffice Calc. Regneark 1. Grunnskolen i Nittedal

Oblig 4. Alternativ A: Alternativ B: Denne obligen har 3 ulike alternativ: Alternativ A: For de som har lyst til å gjøre et eget prosjekt

HØGSKOLEN I SØR-TRØNDELAG

Klasser. Webprogrammering høsten Objekter. Eksempelklasser og -objekter. 2 of :56. 1 of :56

Påmeldingssystemet FolkOrg

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Lynkurs i shellprogrammering under Linux

EKSAMEN. Les gjennom alle oppgavene før du begynner. Husk at det ikke er gitt at oppgavene står sortert etter økende vanskelighetsgrad.

Enalyzer Norge. Nice to know - ESS

Leksjon 3. Kontrollstrukturer

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

ZA4726. Flash Eurobarometer 192 (Entrepeneurship) Country Specific Questionnaire Norway

Brukermanual for kommuneansvarlig og testleder

1. Tilstandsinformasjon på klientsiden

Redd verden. Steg 1: Legg til Ronny og søppelet. Sjekkliste. Introduksjon

ZA5439. Flash Eurobarometer 283 (Entrepreneurship in the EU and Beyond) Country Specific Questionnaire Norway

Innlesning fra tastatur med easyio. INF1000 høst Vi må først skrive i toppen av programmet: import easyio.*;

KLUBBER. Administrere konkurranser. Steg 1: Søknad om konkurranse. Her kan du lese en enkel guide <l hvordan du arrangerer en konkurranse i NMF SAS

HØGSKOLEN I SØR-TRØNDELAG

Programmeringsspråk for nybegynnere. Krav til språket. Krav til språket. Krav til språket

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Livet til det lykkelige paret Howie og Becca blir snudd på hodet når deres fire år gamle sønn dør i en ulykke.

infotorg Enkel brukermanual

Utviklingssak/ID Resume Endring (g2) Rettet i versjon (g1) Rettet i versjon

student s104111, s107911, s122357

Et forsøk på definisjon

HTML5. Skjemaer på nettsider. Skjemaer med. Informasjonsteknologi 1 og 2. Gløer Olav Langslet Sandvika VGS

Oblig 5 Webutvikling. Av Thomas Gitlevaag

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

3. Introduksjon til prosjektet Hringr. Scratch fra scratch Enkel programmering for nybegynnere

Oversikt. INF1000 Uke 6. Objekter, pekere og null. Lese og skrive fra/til fil. Litt om objekter, pekere og null Filer og easyio. Litt mer om tekster

Oblig 4 Undervisningshefte i grunnleggende JavaScript programmering

Mattespill Nybegynner Python PDF

Bruk av oppgaver og grupper i

Enarmet banditt Nybegynner Scratch Lærerveiledning

Brukerveiledning. For student hjemmeeksamen

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Det er frivillig å delta i spørreundersøkelsen, ingen skal vite hvem som svarer hva, og derfor skal du ikke skrive navnet ditt på skjemaet.

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

buildingsmart Norge Guiden

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

MRAND consulting. Kurset SLANKEHODET KLARGJØRING OG BEVISSTGJØRING TIL ENDRINGPROSESS. Kontaktinformasjon: telefon nr. og epost

Administrasjon av kataloger - Oversikt over innstillinger på kataloger

Merk deg tilbudsfristen og andre frister, og gjør deg godt kjent med kunngjøringen og alle de vedlagte dokumentene.

Spøkelsesjakten. Introduksjon

Brukerhåndbok Nett-TV-meter

INF Seminaroppgaver til uke 3

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

Soloball. Steg 1: En roterende katt. Sjekkliste. Test prosjektet. Introduksjon. Vi begynner med å se på hvordan vi kan få kattefiguren til å rotere.

Transkript:

[Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michaelp@hio.no) 07/09-15 Vi holder orden på verdier med hjelp av variabler Vi lagrer verdier i variabler. Variabelnavn uttrykker verdienes rolle i programmet, og bør få beskrivende navn. Navngitte form-elementer henger sammen med variabler av samme navn i målprogrammet Målprogrammet mottar verdier fra HTML-forms bruker disse til å tilpasse innholdet på websiden til brukernes behov <form action= "respons_tekst.php"> Respons på tekstelementet: <input type="text" name= "fornavn" <?php /> print( $_GET['fornavn'] ); <input type="submit"?> /> <input type="reset" /> tekst.htm (utdrag) respons_tekst.php(utdrag) 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 $_GET['fornavn'] i PHP-programmet som er henvist til fra Action-elementet 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 1 of 12 07.09.2015 14:27 2 of 12 07.09.2015 14:27

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. Ved flere variabler overføres også flere "parameterpar", adskilt med '&'. Eksempel 13 fra forrige gang: En større form som sender flere parametre (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? <form action= "respons_stor.php" method="get"> tekstfelt <input type="text" name= "fornavn" /> radioknapprekke Er du student? name= "erstudent" value=""/> Ja name= "erstudent" value=""/> Nei nedtrekksmeny Din favorittforfatter? <select name= "favorittfor"> <option> Henrik Ibsen</option> <option> Knut Hamsun</option> <option> Henrik Wergeland</option> <option selected="selected" > Jonas Lie</option> <option> Ivar Åsen</option> <option> Erlend Loe</option> <option> Aleksander Kjelland</option> </select> knapper <input type="submit" name="submit" /> <input type="reset" name="reset"/> Ved klikk på "submit"-knappen, sendes URL'en http://bibin.hio.no/~s123456/uke_35/respons_stor.php erstudent= fornavn=michael favorittfor=jonas+lie til PHP-programmet listet nedenfor. 1. Takk for din respons: Ditt fornavn er: 2. <?php 3. print ( $_GET['fornavn'] ); 4.?> 5. 6. 7. <?php 8. print ("din favorittforfatter er{$_get['favorittfor']}"); 9.?> 10. 11. og på spørsmålet om du var student, svarte du 12. <?php 13. print( $_GET['erStudent'] ); 14.?> 15. 16. takk og på gjensyn! respons_stor.php 3 of 12 07.09.2015 14:27 4 of 12 07.09.2015 14:27

Eksempel 1 Enkle if-setninger if-else strukturer if-elseif-else enkle og sammensatte logiske uttrykk Nøsting av if- og else-grener Våre programmer tar beslutnninger basert på valgalternativer. 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 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. == 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 som er mindre enn en annen verdi (<) en verdi som er større enn en annen verdi (>), osv. en verdi som er ulik en annen verdi (!=), osv. Logiske uttrykk kan knyttes til tall, men også til tekststrenger Anta at variablene $_GET['fornavn'], $_GET['$etternavn'] og $_GET['antallBarn'] nedenfor er sent inn fra en HTML-form 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,{$_get['fornavn']} {$_GET['$etternavn']}!") ; 4. if ($_GET['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å $_GET['antallBarn']. instruksjonen i linje 5 utføres deretter, bare dersom $_GET['antallBarn']er større enn 0. Vedkommende får bare anledning til å registrere barn hvis han / hun har noen. instruksjonene i linje 7 utføres til slutt, uansett verdi på $_GET['antallBarn']. Eksempel 2: et valg basert på data fra en radioknapprekke. Student? <form action= "respons_radio.php"> Student? 1. <h1>respons på name="erstudent" value= "" radioknapper:</h1> /> 2. Er jeg student? 3. <?php 4. if ($_GET['erStudent'] == ""){ 5. print ("Du er student! name="erstudent" "); value="" /> 7.?> <input type="submit"> 8. Takk og farvel! respons_radio.php(utdrag) verdien av variabelen $_GET['erStudent'] bestemmer om setningen "Du er student" skal skrives til nettleseren eller ikke. Dersom verdien er "" - får vi "Du er student!" i nettleseren, etterfulgt av "Takk of farvel!". Dersom verdien er "" - får vi bare "Takk og farvel!". 5 of 12 07.09.2015 14:27 6 of 12 07.09.2015 14:27

Et logisk uttrykk kan stilles på forskjellige måter PHP har flere testoperatorer som kan brukes i logiske uttrykk: == om en variabelverdi er lik en bestemt verdi; eksempler: ($student == "" ) er true hvis variabelen $student har verdien "" ) ( $tall1 == $tall2 ) er sant hvis begge variabler har samme verdi) 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!= om en variabelverdi er ulik (forskjellig fra) en bestemt verdi ($student!= "" ) er true hvis variabelen $student har f.eks. verdien "" < 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 ). Om ordbruk: if-gren, else-gren osv. Iblant bruker vi ordet "gren" om et kjørealternativ og innholdet i det. Det stedet hvor programmet skal beslutte om å følge den ene eller den andre kjørevei kalles en forgrening, og en slik mulig kjørevei kalles en gren. Eksempel 3 : legger en else-gren til forrige eksempel 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 ($_GET['erStudent'] == ""){ 5. print ("Du er student! "); 7. else{ 8. print ("Du er ikke student!"); 9. } 10.?> 11. Takk og farvel! respons_radio_else.php(utdrag) 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 å bestemme programmets gang. 7 of 12 07.09.2015 14:27 8 of 12 07.09.2015 14:27

Eksempel 4 - konferansepåmelding Tenk deg et PHP-program som støtter webbasert påmelding til en konferanse. Programmet skal, bl. a. prise konferansedeltagelsen slik: halvpris for pensjonister fullpris 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 $_GET['alder']. I programmet testes så$_get['alder'] mot en fast tallverdi, som representerer pensjonsalderen: 2. if ($_GET['alder'] > 65){ 3. $pris=250; 4. } 5. else{ 6. $pris=500; 7. } 8. print("vennligst innbetal konf.avgift, kr. $pris snarest!"); 9.?> Hvis alderen oppgis til å være 66 eller mer, settes $pris lik 250. (linje 3) Hvis alderen oppgis til å være 65 eller mindre, settes $pris lik 500 (linje 6) Med formen: Til tider ønsker vi å utføre en handling bare hvis en variabel ikke har en viss verdi. Eksempel 5 (tulleeksempel...) 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 ($_GET['fornavn']!=''){ /* '' 2 enkle gåseøyne */ print ($_GET['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 ( lagt inn en verdi i form-elementet. ), betyr det at brukeren har faktisk else-grenen representerer kjøres hvis brukeren har glemt å oppgi fornavn. Alder? <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 {$_GET['fornavn']}!"); if ($_GET['alder']>65){ $pris=250; } else{ $pris=500; } print ("Vennligst Betal kr. $pris");?> 9 of 12 07.09.2015 14:27 10 of 12 07.09.2015 14:27

Eksempel 10: Forskjellige priskategorier på en tjeneste: Barn og pensjonister får tjenesten billigst 2. if ($_GET['alder'] > 65){ 3. $pris=250; 4. } 5. elseif($_get['alder'] <18){ 6. $pris=200; 7. } 8. else{ 9. $pris=500; 10. } 11. print("vennligst innbetal konf.avgift, kr. $pris snarest!"); 12.?> Vi kan ha så mange elseif ledd vi vil mellom if og else " En betingelse inne i en annen betingelse": tester på en betingelse bare hvis en annen betingelse stemmer Eksempel 7: testing på èn betingelse bare dersom en annen betingelse er oppfylt. 2. if($_get['fornavn']!= ''){//hvis brukeren la inn et navn 3. if ($_GET['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.?> Verdien i variabelen $_GET['fornavn'] kommer fra forms. Linje 3 til 9 blir bare utført dersom det ble lagt inn en verdi i elementet med navn "fornavn". 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 ( ($_GET['alder'] > 65) && ($_GET['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 ( ($_GET['barnealder'] >= 2) && ($_GET['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 ( ($_GET['alder']> 65) ($_GET['kjonn']=="kvinne")){ 3. $pris=250; 4. } else { 5. $pris=500; 7. print("vennligst innbetal konf.avgift, kr. $pris snarest!"); 8.?> Vi øver litt mer på forms og verdioverføring betinget utføring. litt XHTML-validering Sist oppdatert 07/09-15 av Michael Preminger, michaelp@hio.no Linje 12 blir utført dersom brukeren ikke tastet inn et navn før han klikket "submit" 11 of 12 07.09.2015 14:27 12 of 12 07.09.2015 14:27