Viikkotehtävä 9
Harjoitellaan PHP DOM:in käyttöä ja ulkopuolisia verkkopalveluita hyödyntävän sovelluksen tekemistä.
Taso 1
- Mallikuva
- Toteuta Jyväskylä-PHP-sivu, joka hakee Jyväskylän nykylämpötilan, kosteuden, tuulennopeuden sekä ennusteen seuraavan päivän ylimmälle ja alimmalle lämpötilalle Yahoon tarjoamasta RSS-syötteestä
http://xml.weather.yahoo.com/forecastrss?p=FIXX0025&u=c
- Lisää tekstikappale, jossa on lyhyt kuvaus kaupungista.
- Lisää säätiedot tekstikappaleen jälkeen listana tai taulukkona.
- Hae itsellesi Google Account (Gmail-osoite) ja tilaa sen jälkeen Google Maps API Key.
- Lisää Google Maps -javascript-kirjasto ja oma erillinen javascript-tiedosto sivuillesi.
Lisää Googlen palvelun avulla Jyväskylän kartta sivuillesi. Koordinaatit jotakuinkin
- Leveysaste: 62.24
- Pituusaste: 25.75
Taso 3
Tee ensin tasoa 1 vastaava toteutus ja muokkaa siten sivua:
- Mallikuvat
- Luo kansiorakenne, jossa on pääsivu (kaupungit) ja alihakemistot eri kaupungeille:
. |-- helsinki | |-- index.php | `-- kaupunki.xml |-- jyvaskyla | |-- index.php | `-- kaupunki.xml |-- tampere | |-- index.php | `-- kaupunki.xml |-- index.html |-- kaupunki.js |-- prototype.js `-- vt9.css
- Tee Jyväskylä-sivusta yleiskäyttöinen sivu index.php, joka hakee kaupungin nimen, säätiedot ja kartan
samassa hakemistossa olevan kaupunki.xml-tiedoston
osoittamasta paikasta.
- Vinkki 1: PHP-sivulla XML:n saa ladattua DOMDocument-olioon.
- Vinkki 2: Javascriptissä XML:n saat ladattu AJAX-pyynnöllä. Luo viikkotehtävähakemistoon
tiedosto .htaccess ja lisää siihen direktiivin
niin saat dokumentin ResponseXML:stä.AddType text/xml .xml
- Kopioi PHP-ohjelma ja XML-tiedosto tampere- ja helsinki-kansiohin.
Muuta tampere- ja helsinki-kansiossa olevien XML-tiedostojen tiedot oikeaksi.
- Tampere
- http://xml.weather.yahoo.com/forecastrss?p=FIXX0031&u=c
- Koordinaatit: 61.50, 23.77.
- Helsinki
- http://xml.weather.yahoo.com/forecastrss?p=FIXX0002&u=c
- Koordinaatit: 60.17, 24.94.
- Tampere
- Muokkaa vielä kaupungin kuvausteksti kohdalleen. PHP-tiedostoissa tämän p-elementin pitäisi olla ainoa ero koodissa!
- Hae vielä SOAP-kutsulla kaupungin väkiluku ja lisää kunkin kaupungin sivulle.
Käytä väkilukupalveluna Web Serviceä, joka on kuvattu WSDL-dokumentissa:
http://appro.mit.jyu.fi/sovellukset/vt/vt9/pop.wsdl
- Luo vielä etusivu index.html, jossa on linkit eri kaupunkeihin.
Taso 5
Vaatimukset kuten tasoilla 1 ja 3, mutta tee kaupungien nimen, säätietojen, kartan, väkiluvun ja vakionavigoinnin lisääminen template-handlerin avulla. Mallikuvat ja hakemistorakenne:
- Mallikuvat
- Hakemistorakenne esimerkiksi:
html |-- cgi-bin | `-- template.php |-- vt9_taso5 | |-- helsinki | | |-- index.php | | `-- kaupunki.xml | |-- jyvaskyla | | |-- index.php | | `-- kaupunki.xml | |-- kaupunki.js | |-- pohja.xml | |-- prototype.js | |-- tampere | | |-- index.php | | `-- kaupunki.xml | |-- tyhja.xml | `-- vt9.css
Muokkaa tason 3 rakennetta seuraavasti:
- Luo /omaHOMEpolku/html/cgi-bin-hakemistoon template-handler (PHP-tiedosto)
- Lisää viikkotehtävähakemiston juureen .htaccess-tiedoston avulla kaikkien alihakemistojen .php-tiedostojen käsittelijäksi /omaHOMEpolku/html/cgi-bin-hakemistossa oleva template-handler.
- Luo
cgi-bintai viikkotehtävähakemiston juureenpohja.xml-dokumentti, jossa on XHTML-dokumentin runko ja kriittiset lohkot merkittyxml:id-attribuutilla. - Siirrä nimien, säätilatietojen ja väkiluvun haut template-handler-tiedostoon.
- Poista kaupunki-hakemistojen
index.php-tiedostoista kaikki hakulogiikka, niin että jäljelle jää XML-määritysten lisäksi enää normaalip-elementti (kaupungin kuvaus). Merkitsep-elementin sisältävä lohkoxml:id-ominaisuudella. - Lisää esimerkinomaisesti jotain PHP-koodia
index.php-tiedostoihin, niin että voidaan nähdä ettäindex.php-sivut käsitellään myös PHP-tulkin läpi. Sopiva koodi on esimerkiksi:<p>Pyydetty sivu: <?php echo $_SERVER['REQUEST_URI']; ?></p>
Template-käsittelijä:
- Lisää kaikille sivuille automaattisesti XHTML-rungon.
- Lisää kaupungin nimen
title- jah1-elementteihin. - Lisää vakionavigointipalkin, jossa on linkit kaupunkien sivuille. Muista varmistaa, että navigoinnin linkit toimivat jokaisella sivulla.
- Lisää automaattisesti kaikille sivuille kaupunkikohtaiset säätiedot ja väkiluvun.
- Prosessoi selaimen pyytämän PHP-sivun ja liittää sieltä kaupungin kuvauksen ja prosessoidun PHP-koodin tuloksen otsikon alapuolelle.


Käyttäjien kommentit