PHP-koodia ajetaan ainoastaan .php-tiedostoista, huomaa siis ettet voi käyttää PHP:tä tavallisissa .html-dokumenteissa. PHP on palvelimella ajettava skriptikieli mikä tarkoittaa sitä että jokainen muutos näkyvään sivuun vaatii sivun uudelleenlatausta (koodi suoritetaan palvelimella ja selaimelle lähetetään tavallista .html-dokumenttia vastaavaa dataa).
#1 Yhteys tietokantaan
PHP: Voidaksemme käsitellä tietokannassa olevaa tietoa on ensin luotava yhteys tietokantaan:
- Koodi: Valitse kaikki
<?php
$palvelin="localhost"; // localhost-oletusarvoa tarvitsee muuttaa ainoastaan palvelimen sijaitessa muulla palvelimella
$tunnus="kayttajatunnus"; // käyttäjä jolla on tarvittavat oikeudet tietokantaan
$salasana="salasana"; // käyttäjän salasana
$tietokanta="tietokanta"; // tietokannan nimi
mysql_connect("$palvelin", "$tunnus", "$salasana")or die("Tietokantapalvelimeen yhdistäminen epäonnistui");
mysql_select_db("$tietokanta")or die("Tietokannan valinta epäonnistui");
?>
#2 Tiedon tallentaminen tietokantaan
Oletamme tässä osuudessa tietokannasta löytyvän yhteystiedot-nimisen taulun joka sisältää seuraavat sarakkeet: id, nimi, email ja puh. Esimerkissä luomme yksinkertaisen lomakkeen ja käsittelijän joilla tieto viedään tietokantaan.
HTML: Tiedon lähettämiseen PHP-käsittelijälle (joka tallentaa datan tietokantaan) tarvitaan HTML-lomake:
- Koodi: Valitse kaikki
<form action="" method="post">
<input type="text" size="20" name="nimi"> Nimi<br>
<input type="text" size="20" name="email"> Email<br>
<input type="text" size="20" name="puh"> Puh<br>
<input type="submit" value="Tallenna">
</form>
PHP: rand()-funktio on hyödyllinen satunnaisen tunnistetiedon generointiin. Satunnaista ID:tä käytettäessä muita rivin sarakkeita voidaan huoleti muokata, tallennus voidaan kohdistaa ID-tunnisteen avulla.
PHP: array-key-exists()-funktion avulla saamme helposti selville onko lomakkeella lähetetty dataa. Tarkistamme ettei lähetetyt kentät ole tyhjiä sekä tiedon tallentumisen if-ehtolauseilla.
- Koodi: Valitse kaikki
<?php
if(array_key_exists('nimi', $_POST) and $_POST["nimi"] <> "" and $_POST["email"] <> "" and $_POST["puh"] <> "") {
$id = rand(0,99999);
$tallenna="INSERT INTO yhteystiedot (id,nimi,email,puh)"."VALUES ('$id', $_POST[nimi]', '$_POST[email]', '$_POST[puh]')";
if(mysql_query($tallenna)) {
echo '<p>Tallentaminen onnistui!</p>';
} else {
echo '<p>Tallentaminen epäonnistui!</p>';
};
};
?>
#3 Tiedon hakeminen tietokannasta
Hyödyllisintä on tietenkin tiedon saaminen tietokannasta sivustolle.
PHP: Käytämme tiedon hakuun mysql_query ja mysql_fetch_array -funktioita. Esimerkissä tulostamme while-silmukalla taulun kaiken sisällön yksinkertaiseen taulukkoon.
- Koodi: Valitse kaikki
<?php
$haku=mysql_query("SELECT * FROM yhteystiedot");
echo '
<table>
<tr>
<td>Nimi</td>
<td>Email</td>
<td>Puh</td>
</tr>
';
while($data=mysql_fetch_array($haku)) {
echo '
<tr>
<td>'.$data[nimi].'</td>
<td>'.$data[email].'</td>
<td>'.$data[puh].'</td>
</tr>
';
};
echo '</table>';
?>
PHP: Hakua voidaan rajata lisäämällä queryyn WHERE-ehtoja. Tarvittaessa while-silmukan voi jättää pois. Tällöin kannattaa myös tarkistaa yksinkertaisella ehtolauseella löytyykö hakuehdoilla mitään. Esimerkissä poimitaan osoiteriviltä ID-arvo (esim. henkilot.php?id=12345) ja haetaan tietokannasta henkilön tiedot.
- Koodi: Valitse kaikki
<?php
$haku=mysql_query("SELECT * FROM yhteystiedot WHERE id='$_GET[id]'");
$data=mysql_fetch_array($haku);
if(isset($data["id"])) {
echo '
<ul>
<li>'.$data[nimi].'</li>
<li>'.$data[email].'</li>
<li>'.$data[puh].'</li>
</ul>
';
} else {
echo '<p>Haettua ID:tä ei löytynyt.</p>';
};
?>
#4 Yhteenveto oppaasta
Tavoite on opettaa yksinkertaisesti tiedon hakemisen ja tallentamisen perusteet. Kokeilematta, soveltamatta ja harjoittelematta ei tätäkään asiaa opita, toivottavasti kuitenkin tämäkin opas tarjoaa joillekin pienen ponnahduslaudan alkuun.
Palaute on tervetullutta. Tiedon muokkaaminen/poistaminen on hyvä heittää omaksi oppaakseen joten niitä on turhahkoa ehdottaa lisättäväksi. Olen kuitenkin avoin palautteelle huonosti valituista termeistä ja tietenkin mahdollisista kömmähdyksistä itse oppaassa. Otan myös tarvittaessa vastaan kritiikkiä siitä oletuksestani että phpMyAdminin käyttö on riittävän helppoa aloittelijallekin käsin.
ps. Hienostelijat voivat myös tutustua mysql_close-funktioon.


