2.3. Variabler og forms Eksempel 2.K: Et tekstelementet gir verdi til en PHP-variabel. Nedenfor: form-sidens kode med nettleserbilde. Motstående side: målprogramet med nettleserbilde av kjøringen (URLen vises ufullstendig) < title> Form med tekstelement </ title> <form action= rtkst.php > Fornavn? <input type= text name= fornavn /> <input type= submit /> <input type= reset /> http://bibin.hioa.no/php/k2/tekst.htm 34 Kapittel 2. Variabler og forms <title>respons på tekst element</title> Respons på tekst element : print ( $_GET [ fornavn ]) ; http://...o.no/php/k2/rtkst.php?fornavn=michael Respons på tekst-element: Michael 35
2.3. Variabler og forms Eksempel 2.L: Eksempel på en fullstendig interaksjon med en radioknapprekke. Nedenfor: formen med HTML-koden og utseende. Motstående side: målprogrammet, med nettleserutseende (URLen vises ufullstendig) < title>radioknapp</ title> <form action= radio.php > Student? name= erstudent value= ja /> ja name= erstudent value= nei /> nei <input type= submit value= Submit Query /> http://bibin.hioa.no/php/k2/radio.htm 36 Kapittel 2. Variabler og forms <title>radiorespons</title> Er jeg student? print ( Svar : {$ GET[ erstudent ]} ); http://...o.no/php/k2/radio.php?erstudent=ja Er jeg student? Svar: ja 37
2.3. Variabler og forms Eksempel 2.M: Eksempel på en fullstendig interaksjon med en nedtrekksmeny. Nedenfor: formen med HTML-koden og nettleserbilde. Motstående side: målprogrammet med nettleserbilde (URLen vises ufullstendig) <form action= nedtrekk.php > Din favorittforfatter? <s e l e c t name= favorittfor > <option> Henrik Ibsen</option> <option> Knut Hamsun</option> <option> Henrik Wergeland</option> <option selected= selected > Jonas Lie </option> </ select> <input type= submit name= submit value= Submit Query /> http://bibin.hioa.no/php/k2/nedtrekk.htm 38 Kapittel 2. Variabler og forms <title>nedtrekkrespons</title> Respons på nedtrekksmeny: Hvem er din favorittforfatter? print ( svar : {$ GET[ favorittfor ]} );./nedtrekk.php?favorittfor=jonas+lie Respons på nedtrekksmeny: Hvem er min favorittforfatter? svar: Jonas Lie 39
2.3. Variabler og forms Eksempel 2.N: Eksempel på en fullstendig interaksjon med en større, blandet form. Nedenfor: formen med HTML-koden og nettleserbilde. Motstående side: målprogrammet med nettleserbilde (URLen vises ufullstendig.) < title>sammensatt form</ title> <form action= storre.php method= get > Fornavn? <input type= text name= fornavn /> Er du student? name= erstudent value= ja /> ja <br /> name= erstudent value= nei /> nei Din favorittforfatter? <s e l e c t name= favorittfor > //25 <option> Henrik Ibsen</option> <option> Knut Hamsun</option> <option> Henrik Wergeland</option> <option selected= selected > Jonas Lie </option> </ select> <input type= submit name= submit /> http://bibin.hioa.no/php/k2/storre.htm 40 Kapittel 2. Variabler og forms <title>respons på sammensatt form</title> Vi takker din respons. Ditt fornavn er : print ( {$ GET[ fornavn ]}. ); print ( Din favorittforfatter er {$ GET[ favorittfor ]}. ) ; På spørsmålet om du var student, svarte du print ( {$ GET[ erstudent ]}. ); Takk og på gjensyn!./storre.php?fornavn=michael&erstudent=nei&fav Vi takker din respons. Ditt fornavn er: Michael. Din favorittforfatter er Jonas Lie. På spørsmålet om du var student, svarte du nei. Takk og på gjensyn! 41
3.3. Beslutningsstrukturer for flere valgalternativer Eksempel 3.D: Bruk av en verdi hentet fra en radioknapprekke i et logisk uttrykk. Nedenfor: HTML-form i kode og nettleserbilde. Motstående side: Målprogram med kjøring < title>radioknapper</ title> <form action= rdif.php > Student? name= erstudent value= ja /> ja name= erstudent value= nei /> nei <input type= submit /> http://bibin.hioa.no/php/k3/rdif.htm 50 Kapittel 3. Beslutningsstrukturer <title>radioknapprespons</title> <h1>respons på radioknapper:</h1> Er jeg student? if ( $_GET [ erstudent ] == ja ){ print ( Du er student! ); } Takk og farvel! http://...o.no/php/k3/rdif.php?erstudent=ja Respons på radioknapper Er jeg student? Du er student! Takk og farvel! 51
3.3. Beslutningsstrukturer for flere valgalternativer Eksempel 3.E: Bruk av en verdi hentet fra en radioknapprekke i en if-else struktur. Responsen blir som i nettleserbildet på motstående side når brukeren trykker inn nei-alternativet < title>radioknapper</ title> <form action= rdie.php > Student? name= erstudent value= ja /> ja name= erstudent value= nei /> nei <input type= submit /> http://bibin.hioa.no/php/k3/rdie.htm 52 Kapittel 3. Beslutningsstrukturer <title>radioknapprespons</title> <h1>respons på radioknapper:</h1> Er jeg student? if ( $_GET [ erstudent ] == ja ){ print ( Du er student! ); // linje 13 } else{ print ( Du er ikke student! ) ; // linje 16 } Takk og farvel! http://...o.no/php/k3/rdie.php?erstudent=nei Respons på radioknapper Er jeg student? Du er ikke student! Takk og farvel! 53
4.5. Mer om løkker Eksempel 4.I: En PHP-array tar imot data fra en avkryssingsboksrekke. Legg merke til at arrayen i målprogrammet (motstående side) har like mange innførsler som antallet bokser det ble krysset av på. Forsøk å kjøre eksemplet ved å hente frem formsiden nedenfor (følg lenken i adressefeltet). Kryss av forskjellige kombinasjoner av boksene og se resultatet... <body > Hva spiser du helst? <form action= mat. php > <input type= checkbox name= mat [ ] value= fisk /> Fisk <input type= checkbox name= mat [ ] value= lam /> Lam <input type= checkbox name= mat [ ] value= ri s /> Ris <input type= submit /> http://bibin.hioa.no/php/k4/mat.htm 72 Kapittel 4. Løkker og arrayer <title>hva studenten spiser</title> <body > Hva studenten spiser. $i = 0; $antall = count ( $_GET [ mat ] ) ; print ( Arrayen dollar mat har $antall innførsler: ); while ( $i < $antall ) { print ( $i : {$ GET [ mat ] [ $i ]} ); $i = $i + 1; } http://...o.no/php/k4/mat.php?mat%5b%5d=lam&mat Hva studenten spiser. Arrayen dollar-mat har 2 innførsler: 0:lam 1:ris 73
9.5. Nettdokumenter og Webtjenester Eksempel 9.I: Eksempel på analyse av et nettdokument Nedenfor: XML-dodkumentet (utdrag) Motstående side: Analyseprogrammet med presentasjon 1 <?xml version= 1.0 2 <zs:searchretrieveresponse 3 xmlns:zs= http://www. loc.gov/zing/srw/ > [...] 4 <zs:records> 5 <zs:record> 6 <zs:recordschema>info:srw/schema/1/dc v1.1</zs:recordschema>... 7 < title>pan.</title> 8 <creator>hamsun, Knut, 1859 1952.</creator> [...] 9 <type>text</type> 10 <publisher>[ Wilno ]</publisher> 11 <date>1928</date> 12 <language>yid</language> 13 <description>romanized.</description> [...] 14 <zs:recordposition>2</zs:recordposition> 15 </zs:record> 16 <zs:record> 17 [...] 18 < title>pan.</title> 19 <creator>hamsun, Knut, 1859 1952.</creator> [...] 20 <type>text</type> 21 <publisher>[ New York,</publisher> 22 <date>1919]</date> 23 <language>heb</language> 24 <description>romanized.</description> 25 </zs:recorddata>< zs:recordposition>3</zs:recordposition> 26 </zs:record> 27 [...] 28 <zs:record> 29 <zs:recordschema>info:srw/schema/1/dc v1.1</zs:recordschema> 30 [...] 31 < title>pan,</title> 32 <creator>hamsun, Knut, 1859 1952.</creator> 33 <type>text</type> 34 <publisher>[ Kristiania ] A. Cammermeyer</publisher> 35 <date>[1901]</date> 36 <language>nor</language> 37... <zs:recordposition>6</zs:recordposition> 38 </zs:record> 39 </zs:records></zs:searchretrieveresponse> 156 Kapittel 9. PHP og XML 1 <table> 2 <tr> 3 <th>tittel</th> <th>forfatter</th> 4 <tr> 5 6 include Post.php ; 7 $cqlurl= http://z3950. loc.gov:7090/voyager?operation =[...] ; 8 $xmldoc= new DOMDocument () ; 9 $xmldoc >load ( $cqlurl ); 10 $rot=$xmldoc >documentelement ; 11 $nodeliste_alleposter=$rot >getelementsbytagname ( record ) ; 12 $antall=$nodeliste_alleposter >length ; 13 for ( $i=0; $i < 10; $i++){ 14 $treffelement=$nodeliste_alleposter >item ( $i ); 15 $post=new Post ( $treffelement ); 16 $tittel=$post >gettittel () ; 17 $forfatter=$post >getforfatter () ; 18 print <<<RADSLUTT 19 <tr> 20 <td>$tittel</td><td>$forfatter</td> 21 <tr> 22 RADSLUTT ; 23 } 24 25 </table> http://bibin.hioa.no/php/k9/sruklient.php Tittel Forfatter Pan, Hamsun, Knut, 1859-1952. Pan, aus Leutnant Thomas Glahns Papieren. Hamsun, Knut, 1859-1952. 157
9.5. Nettdokumenter og Webtjenester Eksempel 9.J: Analysen av en enkelt XML-post i et Post-objekt Denne siden: et utdrag av XML-dodkumentet med den enkelte posten i fokus nederst: illustrasjon av DOM hierarkiet i maskinens minne Motstående side: Post-klassen og behandlingen av enkeltposten. Funksjonene construct (l. 18), gettittel(l. 15) og getforfatter (l. 8) brukes hhv. på linjene 15, 16 og 17 i eksempel 9.I. 1 <zs:records> 2 <zs:record> 3 < title>pan.</title> 4 <creator>hamsun, Knut, 1859 1952.</creator> [...] 5 <type>text</type> 6 <publisher>[ New York,</publisher> 7 <date>1919]</date> 8 <language>heb</language> 9 <description>romanized.</description> 10 </zs:recorddata>< zs:recordposition>3</zs:recordposition> 11 12 </zs:record> 13 <zs:record> 14 [...] 15 </zs:record> 16 <zs:record> 17 [...] 18 </zs:record> 19 <zs:record> 20 [...] 21 </zs:record> 158 Kapittel 9. PHP og XML 1 2 class Post{ 3 private $elem ; 4 private $forfatter ; 5 public function setforfatter ( $forfatter ) { 6 $this >forfatter = $forfatter ; 7 } 8 public function getforfatter (){ 9 return $this >forfatter ; 10 } 11 private $tittel ; 12 public function settittel ( $tittel ) { 13 $this >tittel = $tittel ; 14 } 15 public function gettittel (){ 16 return $this >tittel ; 17 } 18 public function construct ( $elem ) { 19 $this >elem=$elem ; 20 $this >fyllopppost () ; 21 } 22 public function fyllopppost (){ 23 $this >fyllinntittel () ; 24 $this >fyllinnforfatter () ; 25 } 26 function fyllinntittel (){ 27 $titler=$this >elem >getelementsbytagname ( title ); 28 $tittelelem=$titler >item (0) ; 29 $this >settittel ( $tittelelem >nodevalue ); 30 } 31 function fyllinnforfatter (){ 32 $forfattere=$this >elem >getelementsbytagname ( creator ) ; 33 $forfatterelem=$forfattere >item (0) ; 34 $this >setforfatter ( $forfatterelem >nodevalue ); 35 } 36 } 37 159