--
Lyhyehkö tutoriaali, joka käsittää vain muutaman perusasian PHP:stä. Tietokantoihin ei kosketa.
Jutussa ei opeteta PHP:n lataamista omalle koneelle, koska miuta ei nyt vain huvita kirjoittaa siitä. Ehkä joskus myöhemmin. Jos/kun alat kirjoittaa PHP:tä enemmän, kannattaa ehdottomasti tehdä se ensin omalla koneella ja siirtää sivut nettiin vasta, kun on testannut niiden toimivuuden. Helpoiten ohjelmointiympäristön saa asennettua Wampserverin avulla.
Tutoriaalissa oletetaan, että sinulla on joko PHP:tä tukeva tietokone (ja olet saanut PHP:n päälle ja tiedät, mihin kansioon sivut on tallennettava) tai että sinulla on PHP:tä tukevaa kotisivutilaa (melkein miltä tahansa firmalta hankittua maksettua sivutilaa tai ilmaista sivutilaa palvelimelta, joka tukee PHP:tä).
Oletan myös, että osaat kirjoittaa HTML:ää. Tässä tutoriaalissa käytettävä HTML ei ole täysin validia. Jätän pois dokumenttityypin määrittelyt ja suuren osan peruskoodeista ja keskityn sivun niihin osiin, jotka ovat PHP:n kannalta oleellisia.
--
1. PHP:n kirjoittaminen, echo
PHP kirjoitetaan suoraan HTML-koodin sisään. PHP-koodi erotetaan HTML-koodista ympäröimällä se tageilla <?php ja ?>
Seuraavalle sivulle on lisätty PHP-koodi, joka näyttää sivulla tekstin "Hello World!"
<html> <head><title>Tervehdys</title></head> <body> <h1>Tervehdys</h1> <p><?php echo "Hello World!"; ?></p> </body> </html>
Paitsi että PHP-koodia voi kirjoittaa HTML:n sisään, myös HTML:ää voi kirjoittaa PHP:n sisään. Seuraava sivu on aivan yhtä toimiva:
<?php echo "<html><head><title>Tervehdys</title></head><body><h1>Tervehdys</h1><p>Hello World!</p></body></html>"; ?>
Koodi näyttää kyllä paremmalta, jos tulostettavan tekstin - tai tässä tapauksessa HTML-koodin - jakaa useammalle riville. PHP ei (yleensä) välitä rivinvaihdoista tai ylimääräisestä tyhjästä tilasta.
<?php echo "<html> <head><title>Tervehdys</title></head> <body> <h1>Tervehdys</h1> <p>Hello World!</p> </body> </html>"; ?>
PHP koostuu aloitus- ja lopetustagien väliin kirjoitettavista lauseista eli komennoista. Jokainen komento päätetään puolipisteellä. Koodin luettavuuden takia komennot kannattaa kirjoittaa eri riveille.
<?php echo "<p>Tämä komento lisää sivulle "; echo "kappaleen tekstiä. PHP-koodissa teksti on jaettu "; echo "neljään eri komentoon, mutta "; echo "sivulla se näkyy yhtenä kappaleena.</p>"; ?>
PHP-sivut tallennetaan tiedostopäätteellä .php.
--
2. Muuttujat
Toistaiseksi PHP ei ole vielä tehnyt mitään ihmeellistä - miksi haluaisimme lisätä tekstiä sivulle PHP:llä, kun sen voi kirjoittaa suoraan HTML:ään? Yksi minkä tahansa kielen ohjelmoinnin tärkeimmistä työkaluista ovatkin muuttujat, joiden avulla sivu saadaan nimensä mukaisesti muuttumaan.
Niille, jotka ovat joskus ohjelmoineet muita kieliä tiedoksi, että PHP:ssa muuttujan tyyppiä ei tarvitse erikseen määrittää.
Ohjelmoija saa itse keksiä muuttujille nimet. Jokaisen muuttujan nimi alkaa kuitenkin aina $-merkillä. Muuttujalle annetaan arvo kirjoittamalla nimen perään = arvo. Jos arvo on tekstimuotoinen (ei siis esim. numero), se kirjoitetaan lainausmerkkien sisään. Luodaan esimerkiksi muuttuja $hevonen ja annetaan sille arvoksi erään hevosen nimi.
<?php $hevonen = "Polle"; echo "$hevonen on rodultaan suomenhevonen ja sukupuoleltaan ori. $hevonen on mukava hoitaa ja ratsastaa. $hevonen kilpailee kouluratsastuksessa tasolla he A."; ?>
Sivulle ilmestyy teksti: "Polle on rodultaan suomenhevonen ja sukupuoleltaan ori. Polle on mukava hoitaa ja ratsastaa. Polle kilpailee kouluratsastuksessa tasolla he A."
Tehdäänpä pari muutakin muuttujaa:
<?php $hevonen = "Polle"; $rotu = "suomenhevonen"; $sukupuoli = "ori"; $koulutustaso = "he A"; echo "$hevonen on rodultaan $rotu ja sukupuoleltaan $sukupuoli. $hevonen on mukava hoitaa ja ratsastaa. $hevonen kilpailee kouluratsastuksessa tasolla $koulutustaso."; ?>
Teksti näyttää sivulla aivan samalta kuin äskenkin.
Tallilla saattaa olla myös toinen hevonen. Sen esittely voisi näyttää tältä:
<?php $hevonen = "Matador IX"; $rotu = "trakehner"; $sukupuoli = "ruuna"; $koulutustaso = "GP"; echo "$hevonen on rodultaan $rotu ja sukupuoleltaan $sukupuoli. $hevonen on mukava hoitaa ja ratsastaa. $hevonen kilpailee kouluratsastuksessa tasolla $koulutustaso."; ?>
Nyt sivulla lukeekin: "Matador IX on rodultaan trakehner ja sukupuoleltaan ruuna. Matador IX on mukava hoitaa ja ratsastaa. Matador IX kilpailee kouluratsastuksessa tasolla GP." Huomaa, että tekstin kirjoittava echo-komento on aivan samanlainen kuin Pollenkin sivulla.
--
3. If
Meillä on siis talli, jossa on kaksi hevosta, Polle ja Matador IX. Ylempää huomasimme, että hevosten esittelyt voidaan kirjoittaa samalla echo-komennolla kunhan vain muuttujilla on oikeat arvot. Ollaanpa siis laiskoja ja tehdään yhteinen esittelysivu, jolla voidaan esitellä kumpi tahansa hevosista.
Ensimmäinen ongelma on, ettemme tiedä, kumman hevosen tietoja kävijä haluaa katsella. Käytännössä hevosen voi valita linkin, lomakkeen tai vaikka pudotusvalikon kautta, mutta niitä emme ehdi käsitellä tässä tutoriaalissa. Oletamme nyt vain, että kävijä on tehnyt valintansa ja skriptiin kuuluu osa, jonka ansiosta $hevonen-muuttujan arvo on nyt joko "Polle" tai "Matador IX". (Meidän ei tarvitse tietää, kumpi.)
Meidän pitää siis kertoa skriptille, että jos $hevonen on "Polle", $rotu on "suomenhevonen", $sukupuoli "ori" ja $koulutustaso "he A". Jos taas $hevonen on "Matador IX", $rotu on "trakehner", $sukupuoli "ruuna" ja $koulutustaso "GP".
PHP:n if-komento tekee juuri tämän. Syntaksi näyttää seuraavalta:
if (ehto) {
tee tämä
}
Jos sulkujen sisällä oleva ehto toteutuu, suoritetaan aaltosulkujen sisällä oleva koodi. Esimerkiksi
if (ulkona sataa) {
ota sateenvarjo mukaan;
}
Hevosesimerkillämme siis:
<?php
if ($hevonen == "Polle") {
$rotu = "suomenhevonen";
$sukupuoli = "ori";
$koulutustaso = "he A";
}
if ($hevonen == "Matador IX") {
$rotu = "trakehner";
$sukupuoli = "ruuna";
$koulutustaso = "GP";
}
echo "$hevonen on rodultaan $rotu ja sukupuoleltaan $sukupuoli. $hevonen on mukava hoitaa ja ratsastaa. $hevonen kilpailee kouluratsastuksessa tasolla $koulutustaso.";
?>
Ensin skripti tutkii, onko $hevonen-muuttujan arvo "Polle". Jos on, se antaa $rotu, $sukupuoli ja $koulutustaso-muuttujille arvot. Jos ei ole, ei tehdä mitään. Sitten tutkitaan, onko $hevonen-muuttujan arvo "Matador IX". Jos on, annetaan muuttujille arvot, jos ei, ei tehdä mitään. Lopuksi kirjoitetaan sivulle hevosen esittely käyttäen niitä arvoja, jotka muuttujat saivat.
Mitä sitten tapahtuu, jos kävijä valitsee jotain muuta kuin "Polle" tai "Matador IX"? Jos muuttujan $hevonen arvo on vaikkapa "Milton", sivu näyttää seuraavalta:
Milton on rodultaan ja sukupuoleltaan . Milton on mukava hoitaa ja ratsastaa. Milton kilpailee kouluratsastuksessa tasolla .
$hevonen muuttui siis Miltoniksi, mutta $rotu, $sukupuoli ja $koulutustaso saivat arvoikseen tyhjän merkkijonon eivätkä siis näy sivulla. Jos ne on määritelty aiemmin koodissa, niiden arvoiksi jää se, mitä niihin on viimeeksi määritelty. Joka tapauksessa sivu on virheellinen. Tällaiseen tapaukseen täytyy varautua. Se käy helposti if:iin yhdistettävällä else-lauseella. Toimintalogiikka on tällainen:
if (ulkona sataa)
{ ota sateenvarjo }
else
{ älä ota sateenvarjoa }
Else kertoo siis, mitä tehdään, jos if:n ehto ei täyty. Tässä tapauksessa haluamme siis jotain tämäntapaista:
<?php
if ($hevonen == "Polle") {
$rotu = "suomenhevonen";
$sukupuoli = "ori";
$koulutustaso = "he A";
echo "$hevonen on rodultaan $rotu ja sukupuoleltaan $sukupuoli. $hevonen on mukava hoitaa ja ratsastaa. $hevonen kilpailee kouluratsastuksessa tasolla $koulutustaso.";
}
else {
echo "Tallilla ei ole hevosta nimeltä $hevonen.";
} ?>
Nyt tarkistettiin kuitenkin vasta Pollen tiedot. Seuraavaksi lisätään mukaan myös Matador IX. Koodin on tarkoitus toimia seuraavasti: ensin tarkistetaan, onko $hevonen Polle. Jos on, tulostetaan Pollen tiedot. Jos $hevonen ei ole Polle, luodaan uusi if-lause, jossa tarkistetaan, onko $hevonen Matador IX. Jos on, tulostetaan sen tiedot. Jos $hevonen ei ole myöskään Matador IX, tulostetaan virheilmoitus.
<?php
if ($hevonen == "Polle") {
$rotu = "suomenhevonen";
$sukupuoli = "ori";
$koulutustaso = "he A";
echo "$hevonen on rodultaan $rotu ja sukupuoleltaan $sukupuoli. $hevonen on mukava hoitaa ja ratsastaa. $hevonen kilpailee kouluratsastuksessa tasolla $koulutustaso.";
}
else {
if ($hevonen == "Matador IX") {
$rotu = "trakehner";
$sukupuoli = "ruuna";
$koulutustaso = "GP";
echo "$hevonen on rodultaan $rotu ja sukupuoleltaan $sukupuoli. $hevonen on mukava hoitaa ja ratsastaa. $hevonen kilpailee kouluratsastuksessa tasolla $koulutustaso.";
}
else {
echo "Tallilla ei ole hevosta nimeltä $hevonen.";
}
} ?>
Meepu on muokannut viestiä: 09.10.2008 - 22:31

Ohje

Lainaa













