Tällä sivulla oleva materiaali on luotu yrityspalvelun ohjelmointikurssia varten keväälle 2009. Materiaaliin sisältyy pääkohdat kurssiin liittyvästä aihepiiristä. Asioita on käyty tarkemmin ja syventävästi läpi lähiopetuksessa. Materiaali ei siis sellaisenaan toimi, kuin PHP-ohjelmointikielen perusteiden läpikäyntiin. Jos olet kiinnostunut osallistumaan kurssille, haluat käyttää materiaalia omassa koulutuksessasi tai tarvitset ammattitaitoisen ja osaavan kouluttajan vetämään PHP-kurssia, ota yhteyttä Keski-Suomen Verkkomediaan.
Materiaalin ylläpitäjä ei vastaa sivuilla olevan materiaalin oikeellisuudesta tai ajantasaisuudesta. Materiaali on kuitenkin yksityskäytössä vapaasti käytettävissä. Materiaalin ja siihen sisältyvien harjoitustehtävien kokeilu omalla vastuulla.
Ohjelmointi: PHP & MySQL perusteet
PHP-ohjelmoinnin perusteet ja SQL-kyselykielen sekä MySQL Server -tietokantapalvelimen käytön perusteet.
Kurssin sisältö
Kurssin aikana käydään läpi PHP-ohjelmointikielen peruskielioppi ja ohjausrakenteet, kuten muuttujat, taulukot, ehtolauseet ja funktiot. Lisäksi käydään läpi SQL-kyselykielen perusteet sekä opiskellaan MySQL Serverin peruskäyttö (tietokantayhteys, kyselyt, tietojen haku, -lisäys, ja -poisto tietokannasta).
Kurssin aikana ehditään käydä läpi vain osa PHP-kielen ominaisuuksista. Lisätietoja ja kattavampaa tietoa löydät virallisesta PHP-dokumentaatiosta: www.php.net
Tavoite
Tavoitteena on, että kurssin jälkeen oppilaat osaavat itsenäisesti suunnitella ja toteuttaa yksinkertaisia PHP-kielellä kirjoitettuja ohjelmaskriptejä sekä pystyvät tekemään www-sivulta kyselyitä tietokantaan.
Johdanto
Tässä osassa käydään lyhyesti läpi www-sovellusten perusperiaatteita sekä esitellään erilaiset web-tekniikat.
Web-tekniikat
Internet-sivuja voidaan toteuttaa useiden eri ohjelmointikielien ja tekniikoiden avulla. Sivujen perustana toimivat kuitenkin html-merkintäkieli sekä http-tiedonsiirtoprotokolla. Pääsääntöisesti asiakas, eli sivua lukeva käyttäjä, kirjoittaa selaimen osoitekenttään internetosoitteen ja selain lähettää pyynnön palvelimelle kyseisessä osoitteessa olevasta sivusta. Palvelin käsittelee pyynnön ja - jos sivu on olemassa - lähettää sen takaisin asiakkaan selaimelle, joka näyttää sivun käyttäjälle.
Tuossa www-sivujen toimintaperiaate hyvin rajusti yksinkertaistaen.
Selain (asiakas)
Asiakaspuolen päätelaitteena toimii yleensä internet-selain. Yleisimpiä selainohjelmia ovat Microsoft Internet Explorer, Mozilla Firefox sekä Apple Safari. Selain muodostaa sivun (x)html-koodin perusteella ja näyttää sivun selainikkunassa. Sivujen ulkoasuun ja toiminnallisuuteen voidaan vaikuttaa erilaisilla tekniikoilla. Yleisimpiä selainpään tekniikoita ovat:
- XHTML / HTML
- CSS
- Javascript
- DHTML
- Ajax
- VBScript
- ActiveX
- Flash
Palvelin
Palvelin on ohjelma, joka ylläpitää www-sivuja. Yleisimpiä ja laajimmin käytössä olevia palvelinohjelmistoja ovat Apache ja Microsoft IIS (Internet Infomation Server).
Saatuaan selaimelta pyynnön www-sivusta, palvelin käsittelee pyynnön sekä lähettää pyydetyn sivun takaisin selaimelle. Tarvittaessa sivua muokataan eri ohjelmointikielten avulla palvelimen päässä. Sivun sisältö saatetaan esimerkiksi hakea tietokannasta tai sivulla olevalla materiaalilla saatetaan tehdä laskutoimituksia yms. Yleisimpiä palvelimen päässä toimivia tekniikoita ovat:
- PHP
- ASP (ASP.NET)
- C#
- Perl
- Cold Fusion
- SSI (Server Side Includes)
Verkkosivut jaetaan yleensä toimintaperiaatteeltaan staattisiin ja dynaamisiin sivuihin.
Staattinen www-sivu
Staattinen sivu pysyy samanlaisena niin kauan, kunnes sivun ylläpitäjä tekee siihen muutoksia ja lataa muokatun sivun palvelimelle uudestaan. Staattisen sivun erottaa yleensä tiedostopäätteestä (.html tai .htm).
Dynaaminen www-sivu
Dynaaminen sivu luodaan palvelimella vasta, kun palvelin vastaanottaa pyynnön selaimelta. Palvelin tunnistaa tiedostopäätteestä (.php) esimerkiksi php-koodia sisältävän sivun ja lähettää sivun php-tulkin käsiteltäväksi. Php-koodissa saatetaan edelleen tehdä vaikkapa kyselyjä tietokantaan, joka taas sijaitsee erillisellä tietokantapalvelimella. Kun sivu saa hakemansa tiedot tietokannasta ja muun sivun sisältämän koodin perusteella sivun valmiiksi, lähettää palvelin näin muodostuneen sivun takaisin sivua pyytäneelle selaimelle.
Tällaista toimintamallia kutsutaan kolmitasomalliksi (selain-palvelin-tietokanta).
PHP-ohjelmointikieli
Tässä osassa kerrotaan lyhyesti PHP-ohjelmointikielen historiasta, mitä PHP on ja mitä sillä voidaan tehdä.
Historia
PHP (lyhenne sanoista: Hypertext Preprocessor) on www-sovellusten ohjelmointiin hyvin soveltuva scriptikieli, joka muistuttaa syntaksiltaan Perl ja C-ohjelmointikieliä. PHP on avoimen lähdekoodin ohjelmisto, jonka kehittämisen Rasmus Lerdorf aloitti, vuonna 1994, kirjoittamalla pienen kokoelman C-kielisiä CGI-skriptejä.
PHP on alusta alkaen kehitetty erityisesti web-ympäristön sovelluksia varten ja PHP-scriptit voidaankin upottaa suoraan sivun HTML-koodin sekaan. Koodi käsitellään palvelimella sivun pyynnön yhteydessä. Käsittelyn suorittaa palvelimelle asennettu ns. PHP tulkki. PHP tulkki voidaan asentaa sekä Apache, että IIS palvelimiin. PHP-tulkki onkin nykyään asennettuna suureen osaan eri palveluntarjoajien web-palvelimista.
Versiot
- 1995 julkaistiin ensimmäinen versio nimellä PHP/FI (Personal Home Page / Forms Interpreter)
- 1997 PHP/FI 2
- 1998 PHP 3 samassa yhteydessä lyhenteen merkitykseksi valittiin: PHP - Hypertext Preprocessor
- 2000 PHP 4
- 2004 PHP 5
Mihin käytetään?
PHP:tä käytetään siis yleisimmin web-sovellusten rakentamiseen. PHP:n avulla voidaan mm. lisätä verkkosivuille erilaisia toimintoja, tarkastaa ja lähettää lomaketietoja ja rakentaa monimutkaisiakin sovelluskokonaisuuksia, kuten esimerkiksi erilaisia sisällönhallintajärjestelmiä.
Hyvät puolet
- Kohtuullisen helppo asentaa
- Syntaksi helppo oppia
- Erittäin suosittu ja paljon käytetty (paljon oppaita, kirjallisuutta ja valmiita koodeja saatavilla)
- Tuettu useimmissa webhotelleissa
Huonot puolet
- Eri versioiden välillä yhteensopimattomuuksia
- Vakiofunktiovalikoima hiukan sekava
- Nimiavaruudet puuttuvat
- Kunnollisten kehitysympäristöjen puute
Ohjelmointiympäristö
Koodin kirjoittaminen suoraan HTML:n sekaan, ei siis tarvita välttämättä erillistä kehitysympäristöä vaan PHP-sivuja voi kirjoittaa hyvin vaikkapa Windowsin Notepad-ohjelmalla. Tuki PHP:lle pitää kuitenkin löytyä web-palvelimelta, jonne sivut tallennetaan. Kaikki PHP-koodiin liittyvä prosessointi suoritetaan palvelinpäässä ja selaimelle lähetetään normaali HTML-sivu eli selaimen päässä ei tarvita mitään erityislaajennuksia.
PHP-ohjelmoinnin perusteet
Tässä osassa käydään läpi PHP-ohjelmoinnin perusteita, kuten kielioppi(syntaksi), muuttujat, taulukot, ohjaus- ja ehtorakenteet, funktiot ja oliot.
PHP-kielioppi (syntaksi)
PHP-koodi lisätään HTML:n sekaan <?php ?> -elementin sisään ja sivu tallennetaan .php tiedostopäätteellä (joskus käytössä myös .php3/.php4 riippuen käytettävästä versiosta).
Edellinen merkintätapa on yleisimmin käytössä oleva, mutta palvelimen asetuksista riippuen voidaan käyttää myös seuraavia merkintöjä:
<? ?>
<% %> (ns. ASP-tagi)
<script language="php">...</script>
Rivit lopetetaan puolipisteellä (;) poikkeuksena viimeinen rivi, jolla se ei ole pakollista. Puolipistettä kuitenkin saa - ja näin kannattaa myös tehdä - käyttää myös viimeisellä rivillä.
HUOM! Koska koodi suoritetaan palvelimella, eivät PHP-tagit (eikä niiden sisällä ollut koodi) näy selaimelle lähetetyllä sivulla. Sivu sisältää ainoastaan koodin perusteella muokatun HTML-koodin!
Kommentit
Koodin sekaan voidaan lisätä kommentteja selventämään sitä, mitä koodissa sillä hetkellä tehdään. Näin varmistetaan, että koodi on ymmärrettävää myös silloin, kun sen pariin palataan pitkän ajan kuluttua tai sitä muokkaa jälkeenpäin joku muu, kuin alkuperäinen kirjoittaja. Kommentteja ei oteta huomioon koodin suorituksessa, eivätkä ne näy sivulla selaimessa.
Selkeä ja asiallinen koodin kommentointi helpottaa koodin ylläpitoa ja muokkausta huomattavasti. Tee kommentoinnista tapa, mutta älä ylikommentoi (ts. älä kommentoi päivänselviä asioita).
Yksirivinen kommentti
Kommenttirivin alkuun kaksi kauttaviivaa (//), joiden jälkeen varsinainen kommenttiteksti:
// Tämä on yksirivinen kommentti...
// Tämä on toinen yksirivinen kommentti...
Monirivinen kommentti
Alkaa kauttaviiva-kertomerkki yhdistelmästä ja jatkuu kommenttina niin kauan, kunnes saavutetaan kertomerkki-kauttaviiva yhdistelmä.
/*
Tämä on useamman rivin kommentti. Kommentti alkaa
aloitusmerkistä ja loppuu lopetusmerkkiin.
*/
Muuttujat
Muuttujia käytetään säilyttämään tietoja, kuten esimerkiksi nimiä ja numeroita, ohjelman suorituksen aikana. Muuttujia voisi ajatella eräänlaisena lokerikkona, jonka lokeroihin voidaan säilöä tietoa ja hakea sieltä tarvittaessa.
Muuttujan nimi viittaa tietokoneen muistissa olevaan muistipaikkaan, johon muuttujan sisältämä tieto on tallennettu.
PHP on ns heikosti tyypitetty kieli, eikä muuttujia tarvitse ennen niiden käyttöä erikseen esitellä, kuten useissa ohjelmointikielissä täytyy tehdä. PHP:ssä muuttujat ovat käytössä siitä lähtien, kun niihin koodissa on viitattu.
Muuttuja määritellään PHP:ssä kirjoittamalla ensin dollarinmerkki ($) ja sen perään muuttujan nimi. Esim: $etunimi, $osoite, $ika.
Muuttujan nimi voi sisältää kirjaimia, numeroita ja alaviivoja (_). Nimen tulee alkaa joko kirjaimella tai alaviivalla. HUOM! Ei voi sisältää välilyöntiä!
Nimetessäsi muuttujia, käytä aina loogisia nimiä, joiden perusteella muuttujan toiminta ja käyttötarkoitus on helppo päätellä. Jos muuttuja on esimerkiksi nimetty $p ja koodin pariin palataan vaikkapa vuoden kuluttua, on luultavasti melko vaikeaa muistaa tallennettiinko muuttujaan posti- vai puhelinnumero. Kyseisessä tilanteessa $postinumero olisi siis ollut paljon järkevämpi muuttujan nimi.
Varsinkin pitkissä ja monisanaisissa muuttujan nimissä voidaan luettavuuden parantamiseksi käyttää ns Camel casing nimeämistapaa. Tällöin muuttujan nimi aloitetaan pienellä kirjaimella ja tämän jälkeen jokainen erillinen sana nimessä kirjoitetaan isolla alkukirjaimella. Esim. $tassapaErittainPitkaMuuttujanNimi.
Esimerkkejä oikein muodostetuista muuttujien nimistä:
$auto
$vuosimalli
$korin_vari
$keskinopeus
$kuljettu_matka
$kaytettyAika
Esimerkkejä virheellisistä muuttujien nimistä:
$68_vuosimallin_toyota
$auton väri
$korin-vari
$alennus%
$kysymys?
Hyvä kommentointi sekä loogisesti valitut muuttujanimet tekevät koodista selkeää ja helppolukuista.
Arvon sijoittaminen muuttujaan
Arvo sijoitetaan muuttujaan yhtäsuuruusmerkillä (=).
$etunimi = "Matti";
$osoite = "Kuusitie 1";
$onnennumero = 7;
Jos muuttujan arvoksi asetetaan merkkijono eli tekstiä, tulee teksti syöttää lainausmerkkien välissä. Numeroarvon voi syöttää ilman lainausmerkkejä.
HUOM! Yhtäsuuruusmerkki asettaa merkin oikealla puolella olevan arvon, merkin vasemmalla puolella olevaan muuttujaan. Yhtäsuuruusmerkkiä ei siis voi käyttää arvojen vertailuun vaan siihen käytetään == merkintää!
vakion määrittäminen
PHP:ssä voidaan määritellä myös vakiomuuttujia, joille annetaan nimi ja arvo. Tämän jälkeen muuttuja säilyttää saamansa arvon ohjelman suorituksen ajan ja vakiomuuttujaa voidaan kutsua koodissa nimeltä. Vakiomuuttuja määritellään define funktion avulla. Funktiolle annetaan parametrinä muuttujan nimi sekä arvo.
define ("PII", "3.14") // asettaa PII nimisen vakiomuuttujan arvoksi 3.14
print PII;
Tulostaa:
3.14
Vakiomuuttujien nimet kirjoitetaan yleensä isoin kirjaimin, jolloin ne erottuvat koodissa selkeästi "normaaleista" muuttujista. Define funktio on ns case sensitive, mikä tarkoittaa, että jos vakiomuuttujan nimi määritellään isoin kirjaimin, täytyy sitä kutsuttaessa nimi kirjoittaa isoin kirjaimin ts. PII ei ole sama kuin Pii. Funktiolle voidaan kuitenkin antaa kolmas parametri, true, jolloin siitä tulee case insensitive.
Muuttujan arvon tulostaminen (print / echo)
PHP:ssä tietojen ja arvojen tulostamiseen näytölle voidaan käyttää joko print tai echo funktioita. Käytössä ja ominaisuuksissa näiden välillä ei ole juurikaan eroja eli on täysin makuasia kumpaa haluaa käyttää.
$etunimi = "Matti";
$sukunimi = "Meikäläinen";
$kenganNumero = 49;
print $etunimi; // tulostaa näytölle Matti
print $sukunimi; // tulostaa näytölle Meikäläinen
print kenganNumero; // tulostaa näytölle 49
Erikoismerkit merkkijonoissa (escape characters)
Tulostettaessa merkkijonoja voidaan käyttää joko lainaus-(") tai heittomerkkejä('). Näillä on kuitenkin eroa!
- Lainausmerkkien sisältö käsitellään huomioiden muuttajat ja erikoismerkit.
- Heittomerkkien sisältö käsitellään kirjaimellisesti tekstinä.
print "Etunimi: $etunimi"; // tulostaa Etunimi: Matti
print 'Etunimi: $etunimi'; // tulostaa Etunimi: $etunimi
Jos lainausmerkkien sisässä olevaan tekstiin sisältyy esimerkiksi lainausmerkkejä, käytetään ns erikoismerkkejä (escape characters).
print ""Mitä kuuluu?""; // ei toimi
print "\"Mitä kuuluu?\""; // toimii, tulostaa: Mitä kuuluu?
Erikoismerkit PHP:ssä:
- \\ (tekstissä oleva kenoviiva)
- \$ (tekstissä oleava dollari-merkki)
- \" (tekstissä oleva lainausmerkki)
- \' (tekstissä oleva heittomerkki)
- \n (tyhjä rivi)
- \r (rivin vaihto)
- \t (sisennys)
- \{ ja \} (aaltosulkeet)
- \[ ja \] (hakasulkeet)
Merkkijonojen yhdistäminen
Merkkijonojen yhdistämiseen käytetään pistettä (.). (concatenation operator)
$etunimi = "Matti";
$sukunimi = "Meikäläinen";
$pituusSentteina = 175;
print "Hei! Olen $etunimi, $etunimi $sukunimi";
print "Olen " . ($pituusSentteina/100) . " metriä pitkä.";
Tulostaa
Hei! Olen Matti, Matti MeikäläinenOlen 1.75 metriä pitkä.
Operaattorit
Sijoitusoperaattori
- = sijoittaa merkin oikealla puolella olevan arvon, merkin vasemmalla puolella olevaan muuttujaan.
Aritmeettiset(matemaattiset) operaattorit
- + (yhteenlasku)
- - (vähennyslasku)
- / (jakolasku)
- * (kertolasku)
- % (jakojäännös)
Yhdistetyt sijoituslauseet
- += (yhteenlasku ja sijoitus)
- -= (vähennyslasku ja sijoitus)
- /= (jakolasku ja sijoitus)
- *= (kertolasku ja sijoitus)
- %= (jakojäännös ja sijoitus)
- .= (yhdistäminen ja sijoitus)
- ++ (joko $a++ tai ++$a, lisätään arvoa yhdellä, joko ennen tai jälkeen suorituksen)
- -- (joko $a-- tai --$a, pienennetään arvoa yhdellä, joko ennen tai jälkeen suorituksen)
Vertailuoperaattorit
- == (yhtäsuuri)
- != (erisuuri)
- === (identtinen eli yhtäsuuri ja samaa tyyppiä)
- > (suurempi kuin)
- < (pienempi kuin)
- >= (suurempi tai yhtäsuuri)
- <= (pienempi tai yhtäsuuri)
Loogiset operaattorit
- || tai or (tai)
- && tai and (ja)
- xor (joko tai / ei molemmat)
- ! (ei)
Operaattorien järjestys
- ( )
- * / %
- + -
Tietotyypit (datatyypit)
PHP on ns. heikosti tyypitetty kieli (weakly typed), joka tarkoittaa, ettei PHP välitä minkä tyyppistä tietoa muuttujaan tallennetaan.
Vaikka tyyppiä ei tarvitse erikseen määrittää, tulee kuitenkin olla tarkkana muuttujiin syötettävien arvojen käsittelyssä. Jos esim. käyttäjä syöttääkin kirjaimia kenttään, johon odotetaan numeroita (vaikkapa puhelinnumero) ei PHP välitä tästä vaan tallettaa arvon muuttujaan tekstimuodossa (string). Tästä syystä täytyy ohjelmoijan muistaa aina tarkastaa ohjelman ulkopuolelta, kuten esimerkiksi lomakkeelta tulevat tiedot.
Käytössä on kahdeksan perustietotyyppiä.
boolean
Totuusarvo, TRUE/FALSE (tosi/epätosi).
integer
Kokonaisluku (1, 6, 28, 3423 jne). Ei voi sisältää pisteitä eikä pilkkuja. Max. arvo riippuu käyttöjärjestelmästä, mutta yleisesti 32-bittinen. Jos sijoitetaan arvo, joka on max. arvoa suurempi, muuttuu tyyppi automaattisesti liukuluvuksi (float)
Voidaan käyttää myös heksadesimaalilukuja, mutta niille tulee antaa arvo muodossa: 0xFFFFFF, 0xEECCDD jne.
string
Merkkijono. Käytetään tektimuotoisen tiedon käsittelyyn.
double (float)
Liukuluku eli desimaaliluku (3.14, 15.79 jne). Yleensä 64-bittinen.
array
Taulukko. Voi sisältää useita arvoja. Käydään läpi tarkemmin jäljempänä omassa osiossaan.
object
Olio tietotyyppi.
NULL
Null arvo tarkoittaa, ettei muuttujalle ole määritelty arvo ts. se on tyhjä. Kirjoitetaan yleensä isoin kirjaimin, mutta on case insensitive eli voidaan kirjoittaa myös Null.
resource
Sisältää viitteen johonkin ulkopuoliseen tietolähteeseen (tiedostokahvat, tietokannat jne).
Tyyppimuunnokset
Etuliite, joka sisältää halutun muuttujatyypin, jatkettuna muuttujan nimellä muuttaa muuttujan tyypin halutuksi.
(integer)$a; // muuttaa muuttujan $a tyypin integer-tyypiksi.
Muuttujan tyyppi voidaan muuttaa myös settype funktion avulla.
settype($testimuuttuja, integer);
Muuttujan tyyppi saadaan selville gettype funktion avulla.
print gettype($testimuuttuja); // tulostaa NULL
$testimuuttuja = 5;
print gettype($testimuuttuja); // tulostaa integer
$testimuuttuja = "viisi";
print gettype($testimuuttuja); // tulostaa string
$testimuuttuja = 5.0;
print gettype($testimuuttuja); // tulostaa double
$testimuuttuja = true;
print gettype($testimuuttuja); // tulostaa boolean
Tuloste:
NULL
integer
string
double
boolean
esimääritellyt muuttujat
PHP:ssä on myös useita esimääriteltyjä muuttujia, jotka ovat automaattisesti käytössä. Alla tärkeimmät.
- $_POST - sisältää post-metodilla lähetetyt lomaketiedot
- $_GET - sisältää get-metodilla lähetetyt lomaketiedot
- $_COOKIE - sisältää evästetietoja
- $_REQUEST - sisältää $_POST, $_GET ja $_COOKIE -muuttujien sisällöt
- $_FILES - lomakkeella lähetetyt tiedostot
- $_SESSION - käynnissä olevan istunnon tiedot
Taulukot
Taulukko (array) tyyppiseen muuttujaan voidaan tallettaa useita arvoja. Kullekin arvolle luodaan indeksi, jonka avulla arvot erotetaan toisistaan. Ellei indeksin arvoja ilmoiteta erikseen, ne luodaan automaattisesti kokonaislukuina nollasta alkaen (0,1,2...).
$maat = array("Suomi", "Ruotsi", "Norja");
print $maat[1];
Tulostaa:
Ruotsi
Taulukko voidaan luoda myös ilman array sanaa, mutta selkeyden vuoksi sitä on suositeltavaa käyttää.
$kaupungit = array("Suomi" => "Helsinki", "Ruotsi" => "Tukholma", "Norja" => "Oslo");
print $kaupungit["Ruotsi"];
Tulostaa
Tukholma
Taulukkoon voidaan lisätä arvoja myöhemmin. Jos indeksille ei anneta arvoa, tulee arvoksi seuraava kokonaisluku. HUOM! Arvoja lisättäessä ei tarvitse käyttää array sanaa, vaan sijoitetaan vain arvo kyseiseen taulukkomuuttujaan (muista hakasulkeet).
$maat[] = "Tanska"; // Tanska saa automaattisesti indeksin 3
$kaupungit["Tanska"] = "Kööpenhamina";
Taulukoista voidaan luoda myös moniulotteisia, jolloin taulukon alkion sisään tallennetaan uusi taulukko omine alkioineen.
count funktio palauttaa taulukon arvojen lukumäärän.
print count($maat);
4
print_r funktio näyttää taulukon koko sisällön.
print_r($kaupungit);
$kaupungit = array("Suomi" => "Helsinki", "Ruotsi" => "Tukholma", "Norja" => "Oslo", "Tanska" => "Kööpenhamina");
print_r($kaupungit);
tulostaa:
Array ( [Suomi] => Helsinki [Ruotsi] => Tukholma [Norja] => Oslo [Tanska] => Kööpenhamina )
HUOM! Käytä aina print_r funktiota taulukon arvojen tulostamiseen, echo- tai print-funktioilla se ei toimi oikein!
foreach-lause
Toinen kätevä tapa tulostaa ja käsitellä taulukon sisältöä on foreach-lause.
Lauserakenne:
foreach (taulukkomuuttuja as avain => arvo) { tehdään jotain taulukon arvoilla...; }
Koodirakenne:
foreach($kaupungit as $avain=>$arvo) { print "$avain: $arvo"; }
Tulostaa:
Suomi: Helsinki
Ruotsi: Tukholma
Norja: Oslo
Tanska: Kööpenhamina
ohjausrakenteet ja ehtolauseet
Kuten muillakin ohjelmointikielillä tehdyissä ohjelmissa, myös PHP:ssä, ohjelman toiminnallisuutta sen suorituksen aikana ohjataan erilaisilla ehto- ja ohjausrakenteilla. Ohjelmanhan tulee yleensä suorittaa erilaisia tehtäviä ja toimenpiteitä riippuen siitä millaisia arvoja sille ohjelman suorituksen aikana annetaan (esim. käyttäjän syöttäminä lomakkeelta).
if...else
Todennäköisesti yleisin ja käytetyin ohjausrakenne on ns. if-then-else rakenne (jos-siinä tapauksessa-muutoin). Tämä rakenne tarkastaa, onko sille välitetty ehtolauseke tosi, jos on, suoritetaan aaltosulkeiden välissä oleva ohjelmakoodi. Ellei ehto täyty eli on epätosi, suoritetaan else-lohkossa, aaltosulkeiden välissä, oleva ohjelmakoodi.
Lauserakenne:
if (ehto) { tehdään jotain, jos ehto tosi...; } else { tehdään jotain muuta...; }
else if...
Samassa rakenteessa voi olla myös useita ehtolauseita. Tällöin tarkastatetaan ensin ensimmäinen ehto, jos ehto täyttyy, suoritetaan siihen liittyvä koodi. Jos ehto on epätosi, siirrytään seuraavaan ehtoon, jos tämä puolestaan on tosi, suoritetaan siihen liittyvä koodi, jos ei jatketaan seuraavaan ehtoon jne, kunnes saavutetaan if-lohkon sulkeva aaltosulku.
if (ehto) { tehdään jotain, jos ehto tosi...; } else if (ehto) { tehdään jotain muuta, jos tämä ehto oli tosi...; } else { tai jotain ihan muuta...; }
Koodirakenne:
$saa = "aurinkoinen"; if ($saa == "aurinkoinen") { print "Onpa kaunis ilma tänään!"; }
Tulostaa:
Onpa kaunis ilma tänään!
$saa = "pilvinen"; if ($saa == "aurinkoinen") { print "Onpa kaunis ilma tänään!"; } else if ($saa == "sateinen") { print "Blääh, vettä sataa..."; } else { print "Tasaisen harmaata..."; }
Tulostaa:
Tasaisen harmaata...
while
Tarkastetaan onko ehto tosi vai epätosi, jos tosi, suoritetaan aaltosulkeiden välissä oleva ohjelmakoodi.
Lauserakenne:
while (ehto) { tehdään jotain, jos ehto tosi...; }
Koodirakenne:
$laskuri = 1; while ($laskuri <= 10) { print "$laskuri kertaa 2 on ".($laskuri*2); $laskuri++; }
Tulostaa:
1 kertaa 2 on 2
2 kertaa 2 on 4
3 kertaa 2 on 6
4 kertaa 2 on 8
5 kertaa 2 on 10
6 kertaa 2 on 12
7 kertaa 2 on 14
8 kertaa 2 on 16
9 kertaa 2 on 18
10 kertaa 2 on 20
do...while
Muutoin täysin vastaava, kuin while-lauseke, mutta koska ehto tarkastetaan vasta lauserakenteen lopussa, suoritetaan aaltosulkeiden välissä oleva ohjelmakoodi ainakin kerran.
Lauserakenne:
do { tehdään jotain...; } while (ehto);
Koodirakenne:
$laskuri = 20; do { print "$laskuri kertaa 2 on ".($laskuri*2); $laskuri++; } while ($laskuri <= 10);
Tulostaa:
20 kertaa 2 on 40
switch
Ehtolausetta verrataan case-lausekkeen arvoon, jos tosi, suoritetaan case-lausekkeen ohjelmakoodi. Jos taas tulokseksi saadaan epätosi, siirrytään seuraavaan case-kohtaan. Näin jatketaan, kunnes ehtoa vastaava case-lauseke saavutetaan tai saavutaan default-lausekkeeseen, jolloin suoritetaan oletuksena suoritettava ohjelmakoodi.
HUOM! Muista lisätä break-avainsana jokaisen case-kohdan koodilohkon loppuun. Break lopettaa switch-lausekkeen suorittamisen ja ohjelmassa jatketaan eteenpäin. Break-sanan puuttuessa ohjelmassa seurataan vain seuraavaan case-lauseeseen ja lopulta suoritetaan default-lausekkeen ohjelmakoodi.
Lauserakenne:
switch (ehto){ case tulos1: toimenpiteet, jos ehto == tulos1; break; default: oletuksena suoritettavat toimenpiteet; }
Koodirakenne:
$valinta = "Appelsiini"; switch ($valinta){ case "Pizza": print "Roskaruokaa, valitse terveellisemmin!"; break; case "Appelsiini": print "Hedelmä on aina terveellinen valinta!"; break; default: print "Ei hedelmä, muttei sentään roskaruokaakaan..."; }
Tulostaa:
Hedelmä on aina terveellinen valinta!
for
For-lausekkeessa annetaan laskurimuuttujalle alkuarvo, ehto sekä kerrotaan, kuinka alkuarvoa tulee muuttaa (esim. kasvattaa).
Lauserakenne:
for(laskurin alustus; ehto; laskurin asetus uuteen arvoon) { suoritettavat toimenpiteet }
Koodirakenne:
for ($laskuri=1; $laskuri <= 10; $laskuri++) { print "$laskuri kertaa 2 on ".($laskuri*2); }
Tulostaa:
1 kertaa 2 on 2
2 kertaa 2 on 4
3 kertaa 2 on 6
4 kertaa 2 on 8
5 kertaa 2 on 10
6 kertaa 2 on 12
7 kertaa 2 on 14
8 kertaa 2 on 16
9 kertaa 2 on 18
10 kertaa 2 on 20
funktiot
Funktiolla tarkoitetaan aliohjelmaa. Funktiolla on aina tarkoitus ts. se tekee jotain. Funktio voi esimerkiksi tulostaa tekstiä näytölle tai vaikkapa laskea yhteen sille parametreinä välitetyt luvut. Funktioilla pyritään helpottamaan ohjelmoijan työtä, koska jotakin tiettyä, usein toistuvaa, tehtävää koodissa ei tarvitse aina kirjoittaa uudestaan, vaan tehtävä voidaan suorittaa kutsumalla funktiota, joka suorittaa tehtävän.
Funktiot jaetaan kahteen päätyyppiin:
- kirjastofunktiot eli niin sanotut valmiit funktiot, jotka sisältyvä PHP-kieleen.
Näistä löydät lisätietoja osoitteessa: www.php.net - käyttäjän kirjoittamat, omat funktiot.
Funktion määrittely
Funktio määritellään varatulla sanalla function. Funktiolle annetaan nimi sekä tarvittaessa parametrit. Parametrit määritellään funktion nimen jälkeen sulkeiden sisällä, pilkulla toisistaan erotettuina. Ellei parametrejä tarvita, jätetään sulkeet tyhjäksi. Tämän jälkeen kirjoitetaan funktion varsinainen toiminto (ohjelmakoodi) aaltosulkeiden sisään. Funktio voi myös palauttaa arvon. Mahdollinen palautusarvo ilmoitetaan return-lausekkeella.
Lauserakenne:
function funktion_nimi($parametri1, $parametri2) { Funktiossa suoritettava koodi tähän...; return $palautusarvo; // Tämä ei ole pakollinen }
Koodirakenne:
function tervehdi($kohde) { print "Morjens!"; print "Mitä kuuluu $kohde?"; }
function laskeYhteen($luku1, $luku2) { $summa = $luku1 + $luku2; return $summa; } ?>
Funktion kutsuminen
Funktiota kutsutaan koodissa nimellä ja parametrit syötetään nimen jälkeen sulkeiden sisään.
Koodirakenne:
tervehdi("Ville");
Tulostaa:
Morjens!Mitä kuuluu Ville?
$ekaluku = 22; $tokaluku = 7; print laskeYhteen($ekaluku, $tokaluku);
Tulostaa:
29
Muuttujien näkyvyys funktion sisällä
Funktion sisällä määritelty muuttuja säilyy paikallisena kyseisen funktion sisällä. Toisin sanoen sitä ei voida käyttää funktion ulkopuolelta suoraan (kutsumatta funktiota) tai muista funktioista.
testiFunktio () { $testimuuttuja = "Tämä on testimuuttuja funktion sisällä!"; } print $testimuuttuja;
Tulostaa:
1
Myöskään funktion ulkopuolella määritelty muuttuja ei näy funktion sisälle, eikä näin ollen ole suoraan käytettävissä funktion sisällä.
globaalit muuttujat
Muuttuja voidaan määritellä ns. globaaliksi muuttujaksi jolloin sitä voidaan käyttää funktion sisällä ilman, että sitä on parametrinä erikseen lähetetty funktiolle. Muuttuja määritellään globaaliksi avainsanalla global.
$muuttujaUlkoa = "Muuttuja funktion ulkopuolella"; print $muuttujaUlkoa; function globaaliTesti () { global $muuttujaUlkoa; print $muuttujaUlkoa; $muuttujaUlkoa = "Tämä on globaali muuttuja, jolle annetaan arvo funktion sisällä!"; print $muuttujaUlkoa; } globaaliTesti(); print $muuttujaUlkoa;
Tulostaa:
Muuttuja funktion ulkopuolella
Muuttuja funktion ulkopuolella
Tämä on globaali muuttuja, jolle annetaan arvo funktion sisällä!
Tämä on globaali muuttuja, jolle annetaan arvo funktion sisällä!
HUOM! Asetettaessa globaaleja muuttujia tulee siis olla hyvin huolellinen ja tarkka, koska muuttujan arvo muuttuu funktion ulkopuolella ja näin ollen koko ohjelmakoodissa!
Muuttujan arvon säilyttäminen funktio-kutsujen välillä
Funktion sisällä määritellyt muuttujat säilyttävät arvonsa ainoastaan funktion suorituksen ajan. Joskus saattaa kuitenkin olla tarpeen säilyttää muuttujan arvo funktiokutsujen välillä (esim. erilaiset laskurit).
Static-avainsanalla määritelty muuttuja säilyttää arvonsa funktiokutsusta toiseen.
function laskuri($teksti) { static $kutsuttuLkm = 0; $kutsuttuLkm++; print "$teksti. Kutsuja $kutsuttuLkm kpl."; } laskuri("Eka kutsu"); laskuri("Toka kutsu"); laskuri("Kolmas kutsu");
Tulostaa:
Eka kutsu. Kutsuja 1 kpl.
Toka kutsu. Kutsuja 2 kpl.
Kolmas kutsu. Kutsuja 3 kpl.
Aika- ja päivämäärä-tietojen käsittely
date() & time() vakiofunktiot
PHP:tä, kuten muitakin ohjelmointikieliä käytettäessä, joudutaan usein käsittelemään aika- ja päivämäärätietoja. Onneksi näiden käsittelyyn löytyy vakiofunktioiden muodossa runsaasti työkaluja. Yleisimmät tällaiset funktiot ovat date() ja time().
time()
Funktio palauttaa ns. aikaleiman (timestamp). Käytännössä tämä arvo on lukema, joka kertoo kuinka monta sekuntia on kulunut alkaen hetkestä 00.00:00 1.1.1970. PHP tarjoaa useita funktioita, joiden avulla tämä lukema voidaan muuttaa helpommin luettavaan muotoon eli toisin sanoen "normaaliksi" päivämääräksi.
print time();
Tulostaa:
1728897835
getdate()
Aikaleima voidaan muuttaa luettavampaan muotoon getdate() vakiofunktion avulla.
$pvm = getdate(); foreach ($pvm as $avain => $arvo) { print "$avain: $arvo"; } print "Tänään on: ".$pvm['mday'].".".$pvm['mon'].".".$pvm['year'];
Tulostaa:
seconds: 55
minutes: 23
hours: 9
mday: 14
wday: 1
mon: 10
year: 2024
yday: 287
weekday: Monday
month: October
0: 1728897835
Tänään on: 14.10.2024
date()
Aikaleiman palauttama lukema voidaan muotoilla myös date() funktion avulla. Funktiolle annetaan parametreina muotoiluarvot sekä aikaleima.
$aika = time(); print date("d.m.Y G.i:s", $aika);
Tulostaa:
14.10.2024 9.23:55
date() funktion avulla voidaan myös syöttää esim. nykyinen päivämäärä muuttujaan.
$pvm = date("d.m.Y"); print "Tänään on $pvm";
Tulostaa:
Tänään on 14.10.2024
date() funktion muotoiluarvot:
a = am/pm
A = AM/PM
d = kuukauden päivä, ilman etunumeroa
D = viikonpäivä
F = kuukauden nimi
h = tunnit (12, etunumerolla)
H = tunnit (24, etunumerolla)
g = tunnit (12, ilman etunumeroa)
G = tunnit (24, ilman etunumeroa)
i = minuutit
j = kuukauden päivä, numerona
l = kuukauden päivä, nimi
L = karkausvuosi (1=kyllä, 0=ei)
m = kuukauden numero (esim. 06)
M = kuukausi (esim. Jan)
n = kuukauden numero (esim. 6)
s = tunnin sekunnit
r = päivämäärä RFC 822 standardin muodossa
u = aikaleima
y = vuosi, 2 numeroa
Y = vuosi, 4 numeroa
z = vuoden päivä (0-365)
Z = sekunnit GMT ajasta
mktime()
mktime() funktion avulla voidaan luoda aikaleima halutusta ajasta ja päivämäärästä. Funktiolle annetaan parametreina tunnit, minuutit, sekunnit, kuukausi, päivä ja vuosi.
$aikaleima = mktime(18,0,0,12,24,2007); print "Aikaleima: $aikaleima"; print date("d.m.Y G.i:s", $aikaleima);
Tulostaa:
Aikaleima: 1198519200
24.12.2007 18.00:00
checkdate()
Jos päivämäärätieto saadaan esim. lomakkeelta, jonka tiedot käyttäjä on lähettänyt, tulee tieto tarkastaa ennen kuin sitä voidaan käyttää.
Päivämäärän voi tarkastaa checkdate() funktion avulla. Funktio palauttaa true, jos päivämäärätieto on validi, false, jos ei ole.
print checkdate(12,24,2007);
Tulostaa:
1
Lomakkeiden käsittely
Web-sovellusten kannalta ehkäpä yleisimmät tehtävät, joita PHP:n avulla suoritetaan, ovat erilaiset lomakkeenkäsittely-tehtävät. Näitä ovat esim. lomaketietojen keräys lomakkeelta, tietojen tarkastaminen ja muokkaus ennen niiden käyttöä sekä tietojen edelleen lähettäminen vaikkapa tietokantaan tai sähköpostiosoitteeseen.
Lomakkeen tiedot lähetetään http-protokollan avulla joko GET- tai POST-metodilla. Näin välitetyt tiedot löytyvät vastaavasti $_GET ja $_POST esimääritellyistä muuttujista.
GET ja POST-metodien erot
Erona näiden kahden välillä on, että GET-metodilla välitetyt tiedot kuljetetaan sivun url-osoitteen mukana. Tiedot näkyvät sellaisenaan parametreina selaimen osoiterivillä, sivuosoitteen perässä. Tätä tapaa käytetään, kun tieto ei ole sellaista, ettei se saisi näkyä muille käyttäjille ja lomakkeelta välitettyjä tietoja tallennetaan esim. kirjanmerkiksi. Yksi esimerkki GET-metodista on tehdä Googlessa haku, jolloin hakuparametrit näkyvät tulossivulla sivuosoitteen perässä. Tällöin haun voisi tallentaa linkkinä ja säilyttää kirjanmerkkinä tai lähettää vaikkapa edelleen.
POST-metodia taas käytetään siirtämään tietoa, jota ei tule näyttää ulkopuolisille.
lomakkeen tiedot taulukosta
Lomake-esimerkki (lähettää tiedot sähköpostina sekä tulostaa lähetetyt tiedot näytölle)
Luokat ja oliot
Tämän kurssin puitteissa PHP-kielen olio-ominaisuudet käydään läpi hyvin nopeasti ja pintapuolisesti. Lähinnä käydään pikaisesti läpi yleisimmät olio-ohjelmoinnin periaatteet ja käsitteet. Lisätietoa luokista ja olioista löytyy sivustolta: www.php.net
Olio-ohjelmointi
Olio-ohjelmoinnissa pyritään tavallaan mallintamaan ohjelmassa reaalimaailman käsitteitä. Olio-ohjelmoinnin perusrakenteita ovat luokat sekä luokista luodut ilmentymät eli oliot.
Luokka on kokoelma metodeja (tekevät jotain, kuten funktiot) sekä attribuutteja (luokan muuttujia).
Olio on luokan ilmentymä. Yhdestä luokasta voi luoda useita olioita. Luokka on tavallaan kaava, jonka mukaan oliot luodaan.
Voitaisiin luoda esimerkiksi Auto-luokka, jossa attribuutteja olisivat merkki, vuosimalli ja väri. Metodeja voisivat puolestaan olla vaikkapa Kiihdytä ja Jarruta.
Kyseisestä luokasta voitasiin tämän jälkeen luoda useita olioita, kuten toyota, audi, skoda jne. ja antaa näille kullekin omat parametriarvot.
Luokan määrittely:
class Auto { private $_nimi; public $merkki; public $vuosimalli; public $vari; function Auto ( $nimi ) { $this->_nimi = $nimi; } public function Kiihdyta() { print "$this->vari $this->merkki kiihdyttää..."; } public function Jarruta() { print "$this->merkki vuodelta $this->vuosimalli jarruttaa..."; } }
Olion luominen luokasta:
$auto1 = new Auto("Toyota"); $auto1 -> merkki = "Toyota"; $auto1 -> vuosimalli = 1995; $auto1 -> vari = "punainen"; print "Merkki: ".$auto1->merkki; print "Vuosimalli: ".$auto1->vuosimalli." ja väri: ".$auto1->vari; $auto1 -> Kiihdyta(); $auto1 -> Jarruta();
Tulostaa:
Merkki: ToyotaVuosimalli: 1995 ja väri: punainen
punainen Toyota kiihdyttää...
Toyota vuodelta 1995 jarruttaa...
MySQL
MySQL Server
Tietokanta on kokoelma tietoja, jotka liittyvät jollain tavalla yhteen. Esimerkiksi tietokanta voisi sisältää tiedot kirjaston kirjoista. Www-sovelluksissa tietokantoihin voidaan tallettaa mm. tuoteluetteloita, asiakasrekisterin tiedot, vieraskirjan viestit jne.
PHP:ssa on tuki kaikille yleisimmille tietokantaohjelmistoille. Näistä verkkosivujen yhteydessä tällä hetkellä suosituin on MySQL Server. Se on ilmainen (GPL lisenssi) ja saatavana useille eri käyttöjärjestelmille. MySQL Server on myöskin käytännössä erittäin nopea ja soveltuukin juuri www-käyttöön erinomaisesti. Jos palvelintarjoajan palvelintilaan kuuluu tietokanta, on se käytännössä yleensä aina juuri MySQL Server tietokanta.
Tietokannan tietotyypit
Tietokanta koostuu tauluista, jotka sisältävät kenttiä, joihin varsinaiset tiedot tallennetaan. Luotaessa uusia kenttiä tietokannan tauluihin, tulee määrittää minkätyyppistä tietoa kenttään tullaan tallettamaan. Alapuolella on listattuna eri tietotyypit.
Numeeriset
- INT = Kokonaisluku välillä -2147484648 - 2147483647
- TINYINT = Kokonaisluku välillä -128 - 127
- SMALLINT = Kokonaisluku välillä -32768 - 32767
- MEDIUMINT = Kokonaisluku välillä -8388608 - 8388607
- BIGINT = Kokonaisluku välillä -9223372036854775808 - 9223372036854775807
- FLOAT = Liukuluku. Maksimissaan 24 numeroa. Määriteltäessä kokonaisten ja desimaalien lukumäärä voidaan asettaa.
- DOUBLE = Kaksoisliukuluku. Maksimissaan 53 numeroa. Määriteltäessä kokonaisten ja desimaalien lukumäärä voidaan asettaa.
- DECIMAL = Desimaaliluku.
Aika ja päivämäärä
- DATE = Päivämäärä muodossa: VVVV-KK-PP.
- DATETIME = Päivämäärä ja aika muodossa: VVV-KK-PP HH:MM:SS
- TIMESTAMP = Aikaleima.
- TIME = Aika muodossa: HH:MM:SS.
- YEAR = Vuosiluku (Jos pituus 2, muodossa: VV, jos pituus 4, muodossa: VVVV)
Merkkijonot
- CHAR = Merkkijono, jonka pituus 1-255 merkkiä. Kokoa ei tarvitse määritellä.
- VARCHAR = Vaihtuvamittainen merkkijono. Pituus on määriteltävä (1-255).
- TEXT / BLOB = Tekstimuotoista tietoa varten. Maksimipituus on 65535 merkkiä.
- TINYTEXT / TINYBLOB = Tekstimuotoista tietoa varten. Maksimipituus on 255 merkkiä.
- MEDIUMTEXT / MEDIUMBLOB = Tekstimuotoista tietoa varten. Maksimipituus on 16777215 merkkiä.
- LONGTEXT / LONGBLOB = Tekstimuotoista tietoa varten. Maksimipituus on 4294967295 merkkiä.
- ENUM = Lista.
Yhteys tietokantaan
Jotta MySQL tietokantaa voidaan käyttää, täytyy siihen ensin luoda yhteys. PHP:ssä yhteys luodaan funktiolla: mysql_connect();
Funktiolle välitetään parametreina käytettävän MySQL palvelimen osoite, käyttäjätunnus ja salasana.
Funktio palauttaa onnistuessaan ns. "kahvan" avattuun tietokantayhteyteen tai epäonnistuessaan false.
Yleisesti käytetään die() -funktiota tulostamaan käyttäjälle virheilmoitus, jos yhteyden luominen epäonnistuu (palauttaa: false).
Koodiesimerkki:
$yhteys = mysql_connect("mysql.palvelin.fi", "kayttajatunnus", "salasana") or die
("Tietokantayhteyttä ei voitu luoda!");
Halutun tietokannan valinta
Kun yhteys tietokantapalvelimeen on luotu, voidaan valita käytettävä tietokanta. Tietokanta valitaan funktiolla: mysql_select_db();
Parametreiksi annetaan halutun tietokannan nimi sekä avattu tietokantayhteys.
Koodiesimerkki:
mysql_select_db("Tietokanta1", $yhteys) or die("Tietokantaa ei voida valita!");
Tietokantakyselyt
Kun yhteys tietokantaan on onnistuneesti luotu sekä käytettävä tietokanta valittu, voidaan tietokantaan tehdä hakuja eli kyselyitä. Kyselyt kirjoitetaan SQL-kyselykielellä. Kysely suoritetaan funktiolla: mysql_query()
Funktiolle välitetään parametreina SQL-kielinen kyselylause sekä aiemmin luodun tietokantayhteyden kahva.
Koodiesimerkki:
$kyselyn_palauttama_tulosjoukko =
mysql_query("SELECT * FROM testitaulu1 WHERE etunimi LIKE 'Matti'" , $yhteys)
or die("Kyselyä ei voitu suorittaa!");
Tulosjoukon käsittely
Kyselyn palauttamaa tulosjoukkoa voidaan käsitellä mysql-funktioiden avulla. Kätevä funktio tulosjoukon käsittelyyn on mysql_fetch_array()
Funktiolle välitetään parametreina äskeisen kyselyn palauttama tulosjoukko ja käydään tiedot läpi while silmukan avulla.
Koodiesimerkki:
$laskuri = 1; while ($rivi = mysql_fetch_array($kyselyn_palauttama_tulosjoukko)) {
$nimi = $rivi[0];
print "$nimi$laskuri";
$laskuri++;
}
Jos taulussa olisi vaikkapa 4 henkilöä, joiden etunimi on Matti, tulostaisi koodi (rivinvaihdot lisätty):
Matti1
Matti2
Matti3
Matti4
Tietokantayhteyden sulkeminen
Lopuksi yhteys tietokantaan katkaistaan funktiolla: mysql_close();
Funktiolle annetaan parametrina avoinna olevan tietokantayhteyden kahva.
Koodiesimerkki:
mysql_close($yhteys);
SQL-kielen peruskomennot
- SHOW DATABASES = Näyttää käytössä olevat tietokannat
- SHOW TABLES = Näyttää tietokannassa olevat taulut
- CREATE BATABASE = Luo tietokannan
- CREATE TABLE = Luo taulun tietokantaan
- USE = Valitsee käytettävän tietokannan
- DESCRIBE = Näyttää tietokannan taulun rakenteen
- SELECT = Hakee tietoja tietokannasta
- INSERT = Lisää tietoja tietokantaan
- UPDATE = Päivittää tietoja tietokantaan
- DELETE = Poistaa tietoja tietokannasta
- REPLACE = Korvaa tietokannassa olevat aiemmat tiedot uusilla tiedoilla
Kyselyiden yhteydessä käytettävät lajitteluoperaattorit
- * (Tähti-operaattori) = Valitsee kaikki tiedot
- FROM = Kertoo mistä taulusta tietoja haetaan
- WHERE = Määrittää hakuehdon
- LIKE = Määrittää hakuehdon merkkijonoille
- ORDER BY = Määrittää tulosjoukon järjestyksen halutun kentän mukaan
- LIMIT = Rajaa hakutulosten määrän halutuksi
- ASC / DESC = Lajittelee aakkosjärjestyksessä alusta loppuun / aakkosjärjestys lopusta alkuun
Esimerkkikyselyitä
SELECT * FROM testitaulu1 WHERE etunimi LIKE 'Matti'
Palauttaa niiden henkilöiden kaikki tiedot, joilla etunimi on Matti.
SELECT id, sukunimi FROM testitaulu1 WHERE etunimi LIKE 'Teppo'
Palauttaa niiden henkilöiden id:n ja sukunimen, joiden etunimi on Teppo.
SELECT etunimi, sukunimi FROM testitaulu1 WHERE lempiruoka LIKE 'Lasagne'
Palauttaa niiden henkilöiden etu- ja sukunimen, joiden lempiruoka on Lasagne.
SELECT sukunimi FROM testitaulu1 WHERE id BETWEEN 1 AND 5
Palauttaa niiden henkilöiden sukunimen, joiden id välillä 1-5.
SELECT id, etunimi, sukunimi FROM testitaulu1 WHERE etunimi LIKE 'Maija' ORDER BY 'sukunimi' DESC LIMIT 3
Palauttaa niiden henkilöiden id:n sekä etu- ja sukunimen, joilla etunimi on Maija. Näyttää maksimissaan 3 tulosta ja järjestää tulokset sukunimen mukaan käänteiseen aakkosjärjestykseen.
Harjoitustehtävät:
Harjoitukset-1 - vastausmallit
Harjoitukset-1 - vastausmallien koodit
Harjoitukset-2 - vastausmallit
Harjoitukset-2 - vastausmallien koodit
Harjoitukset-3 - vastausmallit
Harjoitukset-3 - vastausmallien koodit
Sivuston päivitykset:
09.02.2009
Sivun loppuun lisätty linkit harjoitustehtäviin 1 ja 2 ratkaisumalleineen.
Lisätty myös linkki harjoitustehtävien 1 ratkaisumallien koodiin.
11.02.2009
Sivun loppuun lisätty linkit harjoitustehtäviin 3 ja 4 ratkaisumalleineen.
Lisätty myös linkki harjoitustehtävien 2 ratkaisumallien koodiin.
13.02.2009
Sivut päivitetty 2. kurssipäivän jälkeen. Kirjoitusvirheiden ja esimerkkilomakkeen korjaukset. Lisätty myös linkit harjoitustehtävien 3 ja 4 ratkaisumallien koodeihin.
22.02.2009
Lisätty MySQL Server osuus.
14.03.2009
Lomake-esimerkkiä muokattu hiukan. Nyt lähettää tiedot sähköpostiin sekä tulostaa näytölle lähetetyt tiedot.
Muutamia sekalaisia linkkejä:
- Kaikki kodin remontit - keittiö, kylpyhuone, sauna, sisustus, wc - Kolmoset.com
- Keittiöremontit - kylpyhuoneremontit - saunaremontit ja kalusteet
- Biopolttoaineella toimiva sisustustakka
- Sisustustuotteiden verkkokauppa
- Valokuvausopas aloittelijalle
- IV-järjestelmien nuohous, säätö, huolto sekä puhdistus
- Savuton sisustustakka - Aito tuli ei hormia - Tipico
- Tyyliä ja oivalluksia sisustukseen - Tipicoshop.fi