AMVA50,php ja mysql |
1. Yleistä | 2. Web toimintaympäristönä | 3. Yleistä tietokannoista | 4. SQL-kielen perusteet | 5. PHP ja MySQL |
6. Esimerkkisovellus | 7. Käyttäjien hallinta | 8. SQL-lauseiden turvallisuus | 9. Oppimistehtävät |
6.2 Tietokantayhteyden avaaminen 6.3 Aloitussivu, kaikkien tietueiden hakeminen 6.5 Ylläpitosivuston aloitussivu
|
6. ESIMERKKISOVELLUS
6.1 Yleistä sovelluksestaTässä luvussa käydään läpi yksinkertainen esimerkkisovellus, jossa toteutetaan tietueiden lisäys, poisto, päivitys ja haku MySQL-tietokannan taulukosta. Esimerkkisovellusta voisi tehostaa ja parannella monella tavalla, mutta se on yritetty toteuttaa niin, että tietokannan käsittelytoiminnot tulevat esille mahdollisimman selkeästi. Tutustu ennen esimerkkikoodeihin siirtymistä valmiiseen esimerkkisovellukseen tästä linkistä: Puhelinluettelo Ylläpitosivujen käyttäjätunnus on testaaja ja salasana on testi. Sovellusta varten on luodaan uusi hakemisto puhelin ja siihen alikansio yllapito. Tarkoituksena on, että käyttäjät pääsevät vain katselemaan tietoja ja ylläpito-sivut on suojattu salasanalla. Sovelluksen hahmottamista voi auttaa tästä linkistä avautuva sivukartta. Ennen sovelluksen koodaamista tulee olla luotuna tietokanta ja siihen taulu luettelo, jossa on kentät id, sukunimi, etunimi ja puh. Luodaan tietokanta. Tietokannan taulu luodaan seuraavalla SQL-lauseella. create table luettelo ( id integer auto_increment primary key, sukunimi varchar(30), etunimi varchar(30), puh varchar(15)); 6.2 Tietokantayhteyden avaaminenLuodaan hakemistoon puhelin tiedosto funktiot.php, jonka sisältö on seuraava: <?php function AvaaTietokanta() { //Asetukset tietokantayhteyttä varten $palvelin="localhost"; $tietokanta="oma sukunimi"; $user="oma tunnus"; $passwd="oma salasana"; Selityksiä koodiin:
6.3 Aloitussivu, kaikkien tietueiden hakeminen tietokannan taulustaLuodaan hakemistoon puhelin tiedosto tiedot.php, johon haetaan tietokannasta kaikki tietueet <?php require "funktiot.php"; ?> Selityksiä koodiin:
6.4 Etsi-toiminnon toteutusLuodaan hakemistoon puhelin tiedosto etsi.php, joka hakee tietokannasta etsittävän sukunimen. Etsittävä sukunimi saadaan tiedoston tiedot.php lähettämästä lomakekentästä hakusana.
<html> <head> <title>yritys Oy-henkilökunta, Etsinnän tulos</title> </head> <body> <?php require "funktiot.php"; $yhteys=AvaaTietokanta(); $hakusana=$_GET['hakusana']; $sql_lause="SELECT sukunimi,etunimi,puh FROM luettelo WHERE sukunimi LIKE '%$hakusana%'"; $tulos=mysql_query($sql_lause) or die("virhe ".mysql_error()); if (!$tulos) { echo "Kyselyssä tapahtui virhe"; exit; } echo "<table border=\"1\">"; echo "<tr>"; echo "<td bgcolor=\"silver\">Sukunimi"; echo "<td bgcolor=\"silver\">Etunimi"; echo "<td bgcolor=\"silver\" >Puh"; echo "</tr>"; while($rivi=mysql_fetch_row($tulos)) { echo "<tr>"; echo "<td>" .$rivi[0] ."<td>".$rivi[1]. "<td>". $rivi[2]; echo "</tr>"; } echo "</table>"; ?> </body> </html> Selityksiä koodiin:
6.5 Ylläpitosivuston aloitussivuLuodaan hakemistoon yllapito tiedosto kaikki.php, joka hakee tietokannasta kaikki tietueet. Id toimii muokattavan tietueen tunnisteena ja linkkinä muokkaussivulle.
<html> <head> <title>yritys Oy-henkilökunta,Ylläpito</title> </head> <body> <h1>Yhteystietojen ylläpito</h1> <a href="lisaaminen.php">Lisää uusi henkilö</a><p> <b>Muokkaa tietoja valitsemalla Id.</b></p> <?php require "../funktiot.php"; $yhteys=AvaaTietokanta(); $sql_lause="select id,sukunimi,etunimi,puh FROM luettelo ORDER BY sukunimi, etunimi"; $tulos=mysql_query($sql_lause) or die("virhe ".mysql_error()); if (!$tulos) { echo "Kyselyssä tapahtui virhe"; exit; } echo "<table border=\"1\">"; echo "<tr>"; echo "<td bgcolor=\"silver\">Id"; echo "<td bgcolor=\"silver\">Sukunimi"; echo "<td bgcolor=\"silver\">Etunimi"; echo "<td bgcolor=\"silver\" >Puhelin"; echo "</tr>"; while($rivi=mysql_fetch_row($tulos)) { echo "<tr>"; echo "<td><a href=\"muokkaus.php?id=$rivi[0]\">" .$rivi[0] ."</a><td>".$rivi[1]. "<td>". $rivi[2]. "<td>". $rivi[3]; echo "</tr>"; } echo "</table>"; ?> </body> </html> Selityksiä koodiin:
6.6 PäivityssivutLuodaan hakemistoon yllapito tiedosto muokkaus.php, joka näyttää lomakekentissä muokattavan tietueen tiedot. Lomakkeella voi päivittää tietoja tai poistaa tietueen. Muokattavan tietueen id-saadaan kaikki.php-sivulta linkin mukana URL:n jatkeena.
<?php require "../funktiot.php"; $yhteys=AvaaTietokanta(); //haetaan kaikki tietueet luettelo-taulusta $haku=$_GET['id']; //urlin mukana välitetty id:n arvo $sql_lause="select sukunimi,etunimi,puh FROM luettelo WHERE id=$haku"; $tulos=mysql_query($sql_lause) or die("virhe ".mysql_error()); //luetaan muuttujataulukkoon $rivi=mysql_fetch_row($tulos); ?> <html> <head> <title>Tietojen päivitys</title> </head> <body> <form method="get" action="muokattu.php"> <input type="hidden" name="id" value="<?php echo $haku ?>"> Sukunimi: <input type="text" name="sukunimi" value="<?php echo $rivi[0] ?>"><p> Etunimi: <input type="text" name="etunimi" value="<?php echo $rivi[1] ?>"><p> Puhelin: <input type="text" name="puh" value="<?php echo $rivi[2] ?>"><p> <input type="submit" name="toiminto" value="Tallenna"> <input type="submit" name="toiminto" value="Poista"> </form> </body> </html> </html>Selityksiä koodiin:
Lomakkeelle kirjoitetut muuttuneet tiedot lähetetään tietokantaan päivitettävksi skriptille muokattu.php. Luodaan hakemistoon yllapito tiedosto muokattu.php, joka päivittää tai poistaa tietueen.
<?php require "../funktiot.php"; $yhteys=AvaaTietokanta(); if($_GET['toiminto']=="Tallenna") { $sukunimi=$_GET['sukunimi']; $etunimi=$_GET['etunimi']; $puh=$_GET['puh']; $id=$_GET['id']; $sql_lause="update luettelo set sukunimi='$sukunimi',etunimi='$etunimi',puh='$puh' where id='$id'"; if(!$tulos=mysql_query($sql_lause)) { $teksti="Tietojen päivitys ei onnistunut"; $virhe=mysql_error(); } else { $teksti="Tiedot on päivitetty!"; } } elseif($_GET['toiminto']=="Poista") { $id=$_GET['id']; $sql_lause="delete from luettelo where id='$id'"; if(!$tulos=mysql_query($sql_lause)) { $teksti="Tietojen poiso ei onnistunut"; $virhe= mysql_error(); } else { $teksti="Tiedot on poistettu!"; } } ?> <html> <head> <title>yritys Oy-henkilökunta,Ylläpito</title> </head> <body> <?php echo $teksti ."<br>"; echo $virhe."<p>"; ?> <a href="kaikki.php">Paluu ylläpidon pääsivulle</a> </body> </html> Selityksiä koodiin:
6.7 Tietueen lisäyssivutLuodaan hakemistoon yllapito tiedosto lisaaminen.php, jossa on lomake uuden tietueen lisäämistä varten.
<html> <head> <title>yritys Oy-henkilökunta,Uuden Henkilön lisääminen</title> </head> <body> <b>Uuden henkilön lisääminen</b> <form action="lisatty.php" method="get"> Sukunimi<br> <input type="text" name="sukunimi"><br> Etunimi<br> <input type="text" name="etunimi"><br> Puhelin<br> <input type="text" name="puh" size="30"><p> <input type="submit" name="tallenna" value="Tallenna"> <input type="reset" name="reset" value="Tyhjennä"> </form> </body> </html> Luodaan hakemistoon yllapito tiedosto lisatty.php, joka lisää tietueen tietokantaan.
<html> <head> <title>yritys Oy-henkilökunta,Uusi henkilö lisätty</title> </head> <body> <?php require "../funktiot.php"; $yhteys=AvaaTietokanta(); $sukunimi=$_GET['sukunimi']; $etunimi=$_GET['etunimi']; $puh=$_GET['puh']; $sql_lause="INSERT INTO luettelo (sukunimi,etunimi,puh)VALUES ('$sukunimi', '$etunimi','$puh')"; if(!$tulos=mysql_query($sql_lause)) { echo "Tallennus epäonnistui!"; } else { echo "<b>Uuden henkilön tiedot lisättiin tietokantaan:</b><br>"; echo "$sukunimi $etunimi, $puh<p>"; } ?> <a href="kaikki.php">Paluu ylläpidon pääsivulle.</a> </body> </html>
|