Utvikling av dynamiske nettsteder med PHP og databaser: verdier, vari... http://edu.hioa.no/Webprogrammering/variabler_forms/ Utvikling av dynamiske nettsteder med PHP og databaser: verdier, vari... http://edu.hioa.no/Webprogrammering/variabler_forms/ Et program som legger sammen to brukergitte tall må hente det ene hente det andre legge tallene sammen [Kurssidene] [ ABI - fagsider bibin ] presentere resultatet. Mellom operasjonene må data tas vare på (mellomlagres) kunne finnes igjen. Michael Preminger (michaelp@hio.no) 31/08-15 Her kommer variabler og verdier inn. En verdi ("datastykke") kan være et tall eller en tekststreng. "Michael" er et eksempel på en tekstverdi. 12.5, -15 og 100000 er eksempler på tallverdier. En variabel - en plass i maskinens minne som kan holde på en verdi Verdier og variabler Grunnleggende arbeid med variabler Variabler, XHTML forms (skjema) og overføring av verdier En variabel er en "plassholder", med navn , som kan holde en verdi. Verdien blir da innholdet i denne plassholderen. $pris =12; Variabelnavnet uttrykker verdiens rolle i programmet. Eksempel: $pris =12; $antall_maaneder =12; Våre programmer bruker variabler for å lagre og aksessere data. Programmene kjører èn instruksjon av gangen, og trenger å lagre data mellom gangene. Variablene $pris og $antall_maaneder i eksemplet ovenfor har Eksempelprogram: Legg sammen to brukergitte tall samme verdi (tallet 12) sannsynligvis helt forskjellige roller i programmer. Et program kan ha mange variabler, og alle har et unikt navn Dette gjør det mulig for programmet å aksessere variablene: for å avlese deres verdier evt. legge nye verdier i dem. Alle disse er lovlige variabelnavn : $pris, $antallMaaneder $fornavn, $etternavn Vi bruker ofte ord, på engelsk eller norsk, og setter et dollartegn($) foran. Unngå æøå! (klokkeeksempel) 1 of 16 31.08.2015 10:09 2 of 16 31.08.2015 10:09 Utvikling av dynamiske nettsteder med PHP og databaser: verdier, vari... http://edu.hioa.no/Webprogrammering/variabler_forms/ Utvikling av dynamiske nettsteder med PHP og databaser: verdier, vari... http://edu.hioa.no/Webprogrammering/variabler_forms/ Verdien i en variabel kan variere (derav navnet) : Variabelen $pris kan for eksempel ha verdien 10 en liten stund, deretter verdien 12. Variabelen $fornavn kan holde verdien "Michael ", og deretter verdien " Lars". Direkte tilordning: å legge en verdi i en variabel. En variabel kan holde forskjellige verdier (ikke samtidig!) så lenge programmet kjører Eksempler på direkte tilordning: (Legg merke til semikolon på slutten): Variabelen har bare ett og samme navn så lenge programmet kjører. $fornavn = "Michael" ; Variabelens verdi er flyktig. $etternavn = "Preminger" ; (på norsk: $etternavn settes lik "Preminger") Variabelen $fornavn kan i prinsippet ha forskjellige verdier i løpet av et programs "levetid" $pris = 4.25 ; (derav betegnelsen "variabel"). $antall_maaneder = 12 ; I $fornavn kan det stå "Michael", så kan det stå "Lars" deretter "Erik", osv. (på norsk: $fornavn settes lik "Michael") (på norsk: $pris settes lik 4.25) (på norsk: $antall_maaneder settes lik 12) altså: "=" betyr "settes lik" ikke "er lik" og ikke "lik" En direkteverdi er en verdi som er gjengitt ordrett i programmet For eksempel "Michael", 4.25 En direkteverdi brukes ofte til å sette en førsteverdi til en variabel: For eksempel $fornavn ="Michael ", eller $pris = 4.25 ; Direkteverdier av typen tekst (tekstliteraler) skrives med anførselstegn i PHP-programmer. Direkteverdier av typen tall skrives uten anførselstegn. 3 of 16 31.08.2015 10:09 4 of 16 31.08.2015 10:09 Utvikling av dynamiske nettsteder med PHP og databaser: verdier, vari... http://edu.hioa.no/Webprogrammering/variabler_forms/ Utvikling av dynamiske nettsteder med PHP og databaser: verdier, vari... Print'ing av en variabel viser variabelens verdi http://edu.hioa.no/Webprogrammering/variabler_forms/ Eksempel 2: Printe numeriske variabler. Eksempel 1: Vise verdien til en tekstvariabel ved å print()'e variabelen... Hvis vi henter fram denne filen i nettleseren: <?php $gebyr = 42 ; print ($etternavn) ; betyr: skriv verdien til variabelen med navnet $etternavn til nettleseren. print($gebyr); Filen variabel.php: (linjenummerne er ikke en del av programmet, brukes bare for referanse): ?> blir 1. <!DOCTYPE... 2. <html> 3. <head>... 4. <title>Eksempel1</title> 5. </head> 6. <body> 7. <?php 8. $fornavn = "Michael" ; 9. print( $fornavn ); 10. ?> 11. </body></html> 42 skrevet i nettleservinduet. Eksempel 3: Vi kan flette variabler i tekstsetninger som print()-instruksjonen skriver ut: Følgende PHP-program: <?php $fornavn = "Michael" ; $gebyr = 42 ; print ("<p> $fornavn måtte betale kr. $gebyr for å ha levert boken for sent</p>"); Linjene 1-6, samt linje 11, utgjør filens HTML-del. ?> Disse tillater jeg meg å hoppe over i de kommende eksemplene. skriver følgende når det hentes fram i nettleseren Linjene 7-10 utgjør en PHP-blokk. Michael måtte betale kr. 42 for å ha levert boken for sent På linje 8 blir variabelen $fornavn definert, og tilordnet verdien "Michael" Linje 9 gjør at verdien til $fornavn skrives til nettleseren. Når vi henter fram filen i nettleseren med URLen "http://bibin.hio.no/~michaelp/variabel.php" får vi Michael i nettleservinduet. I eksemplene nedenfor vises bare PHP-koden, (anta dog at HTML-strukturen er der). 5 of 16 31.08.2015 10:09 6 of 16 31.08.2015 10:09 Utvikling av dynamiske nettsteder med PHP og databaser: verdier, vari... http://edu.hioa.no/Webprogrammering/variabler_forms/ Utvikling av dynamiske nettsteder med PHP og databaser: verdier, vari... http://edu.hioa.no/Webprogrammering/variabler_forms/ Eksempel 5: Gi en tallvariabel ny verdi basert på den gamle verdien. Følgende PHP-programm plusser en variabel med 1, og legger den nye verdien tilbake i samme variabel: Numeriske variabler (som har en tallverdi) kan brukes i aritmetiske operasjoner Variablene $pris , $maaneder og $gebyr ovenfor er numeriske . 1. <?php 2. $i = 5; 3. print ("<p>den første verdien til dollar-i var $i</p>"); 4. $i = $i +1; //pluss-operasjon 5. print ("<p>dollar-i har nå fått verdien $i </p>"); 6. ?> Det betyr at de er enten heltall (1,2,5,1000) eller flyttall (1.4, 3.14, 19.5). Slike går det an å foreta aritmetiske (og andre matematiske) operasjoner på: Eksempler: +(pluss), -(minus), *(multiplikasjon), /(divisjon) Eksempel 4: bruk av minus-operasjonen Følgende PHP-program: 1. 2. 3. 4. Linje 2 definerer variabelen $i og tilordner den en verdi. Linje 4 : <?php $vanligGebyr = 50; $i sin gamle verdi (tallet 5) blir "plusset på" 1 $redusertGebyr = $vanligGebyr -10; //minus-operasjon resultatet av operasjonen (tallet 6) tilordnes $i , slik at $i 's gamle verdi slettes print("<p>Vanlige lånere betaler kr. $vanligGebyr , pensjonister betaler kr. (overskrives) $redusertGebyr </p>"); Linjene 3 og 5 sørger for at to linjer skrives til nettleseren (når PHP-filen hentes fram i nettleseren over http) 5. ?> resulterer i den første verdien til dollar-i var 5 dollar-i har nå fått verdien 6 Vanlige lånere betaler kr. 50, pensjonister betaler kr. 40 På linje 3 defineres variabelen $redusertGebyr. Resultatet av minus-operasjonen $vanligGebyr - 10 tilordnes variabelen $redusertGebyr. 7 of 16 31.08.2015 10:09 8 of 16 31.08.2015 10:09 Utvikling av dynamiske nettsteder med PHP og databaser: verdier, vari... http://edu.hioa.no/Webprogrammering/variabler_forms/ Utvikling av dynamiske nettsteder med PHP og databaser: verdier, vari... http://edu.hioa.no/Webprogrammering/variabler_forms/ Eksempel 8 og 9: sammenføye variabelverdier og direkteverdier mellom anførselstegn Vi kan sammenføye variabelverdier og direkteverdier ved å legge de, side om side, mellom anførselstegn: Eksempel 6: konkatenere (føye sammen) tekststrenger med (punktum) <?php $helenavnet ="$fornavn Av og til trenger vi å slå to eller flere tekststrenger sammen. 1. <?php 2. $fornavn = "Michael" ; 3. $etternavn = "Preminger" ; ?> resulterer i 4. $helenavnet = $fornavn . $etternavn ; 5. print ("<p>$helenavnet</p>"); 6. ?> Michael Preminger Programmet <?php $antallEpler =12; Linje 4 sammenføyer $fornavn og $etternavn til en lang tekststreng. tekststrengen tilordnes variabelen $helenavnet. $setning ="<p>Jeg har $antallEpler epler!</p>"; print ( $setning ); MichaelPreminger ?> skrives i nettleservinduet når siden hentes fram. gir Eksempel 7: en liten forbedring av programmet fra eksempel 6 Vi 'føyer inn et mellomrom' mellom $fornavn og $etternavn. 1. 2. 3. 4. 5. 6. $etternavn"; print ("<p>$helenavnet</p>"); Jeg har 12 epler! i nettleservinduet. <?php $fornavn = "Michael" ; $etternavn = "Preminger" ; $helenavnet = $fornavn . " " . $etternavn ; print ("<p>$helenavnet</p>"); ?> og får Michael Preminger 9 of 16 31.08.2015 10:09 10 of 16 31.08.2015 10:09 Utvikling av dynamiske nettsteder med PHP og databaser: verdier, vari... http://edu.hioa.no/Webprogrammering/variabler_forms/ Utvikling av dynamiske nettsteder med PHP og databaser: verdier, vari... http://edu.hioa.no/Webprogrammering/variabler_forms/ Input-element av typen "text" (norsk: tekstfelt) Dette elementet tillater brukeren å oppgi en tekstverdi eller tallvedi (navn, alder osv.) Eksempel 10: Tekstelementet med name= "fornavn" gir verdi til PHP-variabelen $_GET['fornavn'] Forms er HTMLs måte å hente data fra brukere En form (norsk: skjema) er et avsnitt i et HTML-dokument hvor det er mulig å plasssere datainnhentings-elementer (heretter kalt intput-elementer ). Fornavn? En form legges mellom taggene <form> og </form> . En form består stort sett av input-elementer og tekst. HTML-forms er det viktigste instrumentet brukt til å gjøre webben interaktiv. Input-elementer mottar verdier fra brukere, og sender de til PHP-programmer <form action= " respons_tekst.php "> <p> Fornavn? <input type="text" name= "fornavn" /> </p> <p> <input type="submit" /> <input type="reset" /> </p> </form> <p> Respons på tekstelementet: </p> <p> <?php print ($_GET['fornavn']); ?> </p> text_form.htm (utdrag) Input elementer er tekstfelter, avkryssingsbokser, menyer og radioknapper, som en bruker kan "fylle" med verdier som navn, alder, gaveønske osv. respons_tekst.php(utdrag) Respons på tekstelementet Michael Verdiene kan så sendes, over nettet, til et PHP-program (målprogrammet), som kan bruke de for å lage interaktive, fleksible websider. Variabelverdier overføres fra formen til målprogrammet Action-attributtet oppgir hvilket program som skal motta dataene (målprogrammet) Brukeren fyller inn en verdi i tekst-elementet som har navnet "fornavn". Brukeren klikker på "submit" knappen. I eksempel 10 er teksten med grønn bakgrunn html-koden til formen som holder teksten. I dét øyeblikket starter tolkingen av programmet respons_tekst.php , som står oppført i action-attributtet , og som ligger på tjeneren. se spesielt på action-attributtet! Teksten til høyre er en del av målprogrammet (respons_tekst.php) som mottar data fra formen. Samtidig: Et input-element kan gi en verdi til en variabel i målprogrammet Verdien ("Michael") transporteres fra nettleseren, fra form-elementet med navn "fornavn", over nettet, og til tjeneren der programmet kjører. Hvert input-element har et name-attributt. Verdien "Michael" tilordnes variabelen med navnet $_GET['fornavn'] i programmet. Navnet på variabelen i programmet som mottar elementets data er det samme som elementets name-attributt. Variabelen $_GET['fornavn']får, altså verdien "Michael". Hvis det et sted i PHP-programmet respons_tekst.php står: print($_GET['fornavn']); blir ordet "Michael" (altså, verdien i variabelen $_GET['fornavn']) skrevet til nettleser-vinduet. I det følgende presenteres input-elementer av typene tekst, radioknapper og nedtrekksmenyer. Vi bruker tekst-elementet som eksempel på verdioverføring. 11 of 16 31.08.2015 10:09 12 of 16 31.08.2015 10:09 Utvikling av dynamiske nettsteder med PHP og databaser: verdier, vari... http://edu.hioa.no/Webprogrammering/variabler_forms/ Utvikling av dynamiske nettsteder med PHP og databaser: verdier, vari... Formen $_GET['fornavn'] http://edu.hioa.no/Webprogrammering/variabler_forms/ Nedtrekksmenyer $_GET['fornavn'] er en form for variabel vi kommer næremre innpå senere i kurset. En nedtrekksmeny tillater brukeren å velge ett av flere fastlagte verdier. Slike variabelnavn brukes i nyere versjoner av PHP når verdier skal hentes fra brukere over nettet. Elementet heter <select> (merk: ikke input), og valgene legges i <option>-elementer. Eksempel 12: Nedtrekksmenyer - en måte å velge verdi fra en større liste med verdier MERK!: I strenger som sammenføyes mellom anførselstegn, hvor en variabel av denne typen inngår, skrives den i krøllklammer: "ditt navn er Attributtet "selected" bestemmer hvilket av valgene som skal vises frem før valg foretas. {$_GET['fornavn']}". Radioknapper og radioknapprekker En radioknapp er et input-element som som er tilordnet fast verdi, som overføres hvis knappen er trykket inn. Din favorittforfatter? En radioknapprekke utgjør en gruppe av radioknapper som deler et navn. Disse er på forhånd tilordnet gjensidig utelukkende verdier, Eksempel 11: Radioknapprekke: to radioknapper hvis name-attributt har samme verdi begge knappene har verdien "erStudent" i name-attributtet. Variabelen $_GET['erStudent'] i Action-programmet får verdien "ja" eller "nei" , avhengig av merket knapp. Student? ja nei <form action= "respons_radio.php" > <p>Student?</p> <p> <input type="radio" name= "erStudent" value= "ja" /> ja </p> <p> <input type="radio" name= "erStudent" value= "nei" /> nei </p> <input type="submit" /> </form> radioknapper.htm(utdrag) <form action= "respons_meny.php"> <p> Din favorittforfatter? <select name= "favorittfor"> <option> Henrik Ibsen</option> <option> Knut Hamsun</option> <option> Henrik Wergeland</option> <option selected="selected" > Jonas Lie </option> </select> </p> <input type="submit" name="submit" /> </form> meny.htm <p> Respons på radioknapper: </p> <p>Er jeg student? </p> <p> <?php print ($_GET['erStudent']); ?> </p> <p>Respons på nedtrekksmeny:</p> <p>Hvem er min favorittforfatter? </p> <?php print ("<p>svar: {$_GET['favorittfor']} </p>"); ?> respons_meny.php Dersom brukeren valgte Jonas Lie , eller lot være å velge, får han følgende respons: Respons på nedtrekksmeny: Hvem er min favorittforfatter? svar: Jonas Lie respons_radio.php(utdrag) Dersom brukeren velger "ja"-knappen, blir responsen slik: Respons på radioknapper Er jeg student? ja 13 of 16 31.08.2015 10:09 14 of 16 31.08.2015 10:09 Utvikling av dynamiske nettsteder med PHP og databaser: verdier, vari... http://edu.hioa.no/Webprogrammering/variabler_forms/ Utvikling av dynamiske nettsteder med PHP og databaser: verdier, vari... http://edu.hioa.no/Webprogrammering/variabler_forms/ Eksempel 13: Et større skjema: Takk for din respons: Fornavn? Er du student? Ja Nei Din favorittforfatter? <form action= "respons_stor.php" " method="get"> <p> Fornavn? <input type="text" name= "fornavn" /> </p> <p> Er du student?</p> <p> value="ja"/> <input type="radio" name= "erStudent" Ja </p> <p> <input type="radio" name= "erStudent" value="nei"/> Nei </p> <p> 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> </p> <p> <input type="submit" name="submit" /> <input type="reset" name="reset"/> </p> </form> Ditt fornavn er: Michael, din favorittforfatter er Jonas Lie og på spørsmålet om du var student, svarte du ja. Takk og på gjensyn! Vi gjør følgende observasjoner om PHP-programmet ovenfor: Variablene trenger ikke behandles i noen bestemt rekkefølge. De "ankommer" programmet i flokk. elementet "erStudent" er definert før elementet "favorittfor" i formen, men førstnevntes verdi printes etter sistnevntes i målprogrammet(linjer 8 og 13). Vi har flere PHP-blokker (<?php ... ?>) med maltekst mellom dem. Alle variabelverdiene (som er allerede definert) gjelder innenfor alle blokker. Vi kan skrive så mye fast HTML vi vil mellom og rundt disse blokkene. Et program (for eksempel et PHP-program) lagrer data i variabler. En variabel har et navn (fast) og en verdi (som kan variere). I et PHP-program bruker vi variabler blant annet for å gjøre følgende: referere til data ($fornavn er en referanse til verdien "Michael" eller "Lars") og lagre de over tid manipulere data (for eksempel koble sammen et fornavn og et etternavn) motta data fra input-elementer. Vi bruker input-elementener for å gjøre våre nettsider interaktive. Vi har sett på tre typer input-elementer som kan motta data fra brukere på forskjellige vis. 1. <p> Takk for din respons: </p> <p> Ditt fornavn er: 2. <?php 3. print ( $_GET['fornavn'] ); 4. ?> 5. </p>, 6. <p> 7. <?php 8. print ("din favorittforfatter er {$_GET['favorittfor']} "); 9. ?> 10. </p> 11. <p> og på spørsmålet om du var student, svarte du 12. <?php 13. print( $_GET[erStudent] ); 14. ?>. 15. </p> 16. <p> Takk og på gjensyn! </p> Sist oppdatert 11/08-15 av Michael Preminger, michael.preminger@jbi.hio.no respons_stor.php 15 of 16 31.08.2015 10:09 16 of 16 31.08.2015 10:09
© Copyright 2024