Utvikling av dynamiske nettsteder med PHP og databaser: verdier

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 ([email protected]) 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, [email protected]
respons_stor.php
15 of 16
31.08.2015 10:09
16 of 16
31.08.2015 10:09