kermek iwa 11

27
Izgradnja Web aplikacija Izgradnja Web aplikacija Prof. dr.sc. Dragutin Kermek Sveučilište u Zagrebu Fakultet organizacije i informatike Pavlinska 2, Varaždin 42000 [email protected] 11. dio Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin 2 Izgradnja Web aplikacija - FOI Uvod u programiranje na strani poslužitelja/CGI. Programski jezik PHP. Izvršavanje obrade (pretraživanje, zapis podataka i sl.) na strani poslužitelja. Slanje e-mail poruke. Generiranje HTML stranica. Ponovno korištenje koda. Objektna orijentacija. Rad s datumom i vremenom. Korištenje i administriranje baze podataka (MySQL). Realizacija autentikacije i autorizacije korisnika. Programiranje na strani poslužitelja

Upload: vale2712

Post on 25-Oct-2015

32 views

Category:

Documents


2 download

DESCRIPTION

iwa

TRANSCRIPT

Page 1: Kermek IWA 11

Izgradnja Web aplikacijaIzgradnja Web aplikacija

Prof. dr.sc. Dragutin KermekSveučilište u Zagrebu

Fakultet organizacije i informatike

Pavlinska 2, Varaždin 42000

[email protected]

11. dio

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin2Izgradnja Web aplikacija - FOI

Uvod u programiranje na strani poslužitelja/CGI.

Programski jezik PHP.

Izvršavanje obrade (pretraživanje, zapis podataka i sl.) na strani

poslužitelja.

Slanje e-mail poruke. Generiranje HTML stranica.

Ponovno korištenje koda.

Objektna orijentacija. Rad s datumom i vremenom.

Korištenje i administriranje baze podataka (MySQL).

Realizacija autentikacije i autorizacije korisnika.

Programiranje na strani poslužitelja

Page 2: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin3Izgradnja Web aplikacija - FOI

Slanje e-mail poruke

Vrlo često se koristi mogućnost prikupljanja mišljenja putem formulara pri

čemu se podaci ne upisuju u datoteke ili baze podataka nego se šalju kao e-mail

poruke određenoj osobi-grupi.

S druge strane, moderni oblici poslovanja kao što su elektronička kupovina

(amazon.com), elektronička nadmetanja-dražbe (ebay.com) i drugi slični oblici

poslovanja primjenjuju informiranje poslovnih partnera putem elektroničke

pošte.

Predložak za funkciju mail:bool mail (string to, string subject, string message

[, string additional_headers [, string additional_parameters]])

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin4Izgradnja Web aplikacija - FOI

Slanje e-mail poruke / 1.

<HTML><HEAD></HEAD><BODY>

<FORM id=form1 method=post name="form1" action=“primjer35.php"><P><LABEL for="email">E-mail adresa: </LABEL>

<INPUT name="email"></BR><LABEL for="subjekt">Subjekt: </LABEL>

<INPUT name="subjekt"></BR><LABEL for="tekst">Tekst: </LABEL>

<TEXTAREA rows="4" cols="50" name="tekst"></TEXTAREA></BR><INPUT id=submit1 name=submit1 type=submit value=Šalji><INPUT id=reset1 name=reset1 type=reset value=Obriši></FORM>

</BODY></HTML>

Page 3: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin5Izgradnja Web aplikacija - FOI

Slanje e-mail poruke / 2.

<?php$mail_to = $_POST["email"];$mail_from = “From: [email protected]";$mail_subject = $_POST["subjekt"];$mail_body = $_POST["tekst"];

if(mail($mail_to, $mail_subject, $mail_body, $mail_from)){

echo("Poslana poruka za: '$mail_to'!");} else {

echo("Problem kod poruke za: '$mail_to'!");}?>

Primjer35 – Slanje e-mail poruke

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin6Izgradnja Web aplikacija - FOI

Generiranje HTML stranica

Statičke HTML stranice danas ne zadovoljavaju potrebe modernog WWW

poslovanja. Sve više postoji ideja za povezivanjem WWW stranica i podataka

koji su unešeni preko HTML stranica i pohranjeni u spremnike (datoteke, baze

podataka) ili koji već postoje iz drugih aplikacija.

Kao primjer može poslužiti adresar poslovnih partnera. Treba li pružiti

mogućnost izbora poslovnog partnera tada više ne dolazi u obzir statička HTML

stranica koja bi sadržavala izbornik sa njihovim popisom jer adresar se

neprestano dopunjuje. Zbog toga jedino preostaje da se podaci generiraju kod

svakog zahtjeva.

Page 4: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin7Izgradnja Web aplikacija - FOI

Generiranje HTML stranica / 1.

<FORM id=form1 method=post name="form1" action="primjer35.php"><P><LABEL for="email">E-mail adresa: </LABEL><select name="email"><?php$fn = "podaci/ADRESAR.TXT";$fcontents = file ($fn);while (list ($line_num, $line) = each ($fcontents)) {

$value = $line;print "<option value=\"$value\">$value</option>\n";

}?></select><br><LABEL for="subjekt">Subjekt: </LABEL>

<INPUT name="subjekt"></BR><LABEL for="tekst">Tekst: </LABEL>

<TEXTAREA rows="4" cols="50" name="tekst"></TEXTAREA></BR><INPUT id=submit1 name=submit1 type=submit value=Šalji><INPUT id=reset1 name=reset1 type=reset value=Obriši></FORM>

Primjer36 – Generiranje HTML stranica

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin8Izgradnja Web aplikacija - FOI

Cookie

Programiranje na strani klijenta i na strani poslužitelja moraju imati više

dodirnih točaka-sučelja putem kojih se ostvaruje njihova komunikacija.

Prije svega to su standardni ulaz i standardni izlaz na strani poslužitelja kojima

se primaju podaci od klijenta i kojima se šalju podaci klijentu.

Druga važna točka su varijable okoline koje služe strani poslužitelja za

prikupljanje podataka o klientu i njegovom radnom okruženju.

Personalizacija se obavlja na strani klijenta, a identifikator korisnika se zapisuje

kao vrijednost određenog cookie-a.

Ostaje pitanje kako poslužiteljska strana čita i zapisuje cookie?

Upisivanje:int setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])

Page 5: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin9Izgradnja Web aplikacija - FOI

Postavljanje Cookie-a

Primjer37 – Postavljanje Cookiea

<html><head><title>PHP - Primjer 37</title></head><body><?php$naziv = "PzaWeb";$id = "dkermek";$vrijedi_do = time() + 60*60*24*7;

setcookie($naziv, $id, $vrijedi_do);print "<b>Cookie:</b> $naziv <b>vrijedi do:</b> $vrijedi_do.\n";?>

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin10Izgradnja Web aplikacija - FOI

Postavljanje Cookie-a / 1.

Primjer37_1 – Postavljanje Cookiea - u redu

<?php$naziv = "PzaWeb";$id = "dkermek";$vrijedi_do = time() + 60*60*24*7;setcookie($naziv, $id, $vrijedi_do);?><html><head><title>PHP - Primjer 37_1</title></head><body><?phpprint "<b>Cookie:</b> $naziv <b>vrijedi do:</b> $vrijedi_do.\n";?></body></html>

Page 6: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin11Izgradnja Web aplikacija - FOI

Čitanje Cookie-a

Primjer38 – Čitanje Cookiea

Varijable $HTTP_COOKIE_VARS ili $_COOKIE sadrže cookie.

<?php$naziv = "PzaWeb";$id = $_COOKIE[$naziv];print "<b>Cookie:</b> $naziv=$id\n";?>

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin12Izgradnja Web aplikacija - FOI

Ponovno korištenje koda

Razvoj PHP aplikacija može biti jednostavnije i brže ako se provodi

strukturiranje sadržaja Web stranice s ciljem stvaranje predložaka stranica.

Rezultat toga je izdvajanje pojedinih dijelova koji se ponavljaju u svim

stranicama (zaglavlja, podnožja, izbornici i sl) u zasebne datoteke koje se

uključuju u kod pojedinačnih stranica.

To se može provreti na 2 načina:include(nazivdatoteke); include_once(nazivdatoteke);require(nazivdatoteke); require_once(nazivdatoteke);

Između njih postoji malo razlika jer require generira fatalnu pogrešku kada

datoteka ne postoji dok include samo upozorenje.

Page 7: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin13Izgradnja Web aplikacija - FOI

Ponovno korištenje koda / 1.

<?phpinclude('zaglavlje.inc');?>Ovo je tekst!!!<?phpinclude('podnozje.inc');?>

<html><head><title>PHP - Primjer 39</title></head><body><p>Ovo je zaglavlje</p>

<p>Ovo je podnožje</p></body></html>

Primjer39 – Ponovno korištenje koda

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin14Izgradnja Web aplikacija - FOI

Ponovno korištenje koda / 2.

<?phprequire('zaglavlje.inc');?>Ovo je tekst!!!<?phprequire('podnozje.inc');?>

<html><head><title>PHP - Primjer 39</title></head><body><p>Ovo je zaglavlje</p>

<p>Ovo je podnožje</p></body></html>

Primjer39_1 – Ponovno korištenje koda

Page 8: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin15Izgradnja Web aplikacija - FOI

Ponovno korištenje koda / 3.

<?phpinclude('zaglavlje.inc');include('zaglavlje.inc');?>Ovo je tekst!!!<?phpinclude('podnozje.inc');include_once('podnozje.inc');?>

<html><head><title>PHP - Primjer 39</title></head><body><p>Ovo je zaglavlje</p>

<p>Ovo je podnožje</p></body></html>

Primjer39_2 – Ponovno korištenje koda

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin16Izgradnja Web aplikacija - FOI

Objektna orijentacija u PHP-u

Veza prema objektnoj orijentaciji definirana je ulogama:

OO PHP

klasa - klasa

metoda - funkcija

objekt - referenca prema nekom podatku unutar klase

Moguća je realizacija većine OO osobina.

Page 9: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin17Izgradnja Web aplikacija - FOI

Klase

Programiranje u PHP-u može biti jednostavnije i brže ako se koriste gotove

klase. Može se reći da su to biblioteke funkcija koje stoje na raspolaganju

(ukoliko su instalirane na računalu).

Klasa se uključuje u skriptu

include('nazivKlase.php');

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin18Izgradnja Web aplikacija - FOI

Vlastite klase

Realizacija većeg projekta zahtjeva drugačiji pristup nego što je slučaj kod

malih projekata sa nekoliko skripata. Inženjerski pristup radu na projektu

sigurno će biti usmjeren stvaranju vlastitih funkcija koje će se moći koristiti u

više skripata. Te funkcije mogu se objediniti prema srodnosti u nekoliko klasa i

tako višestruko koristiti u skriptama tog i kasnijih projekata.

Konstruktor mora imati isti naziv kao i klasa.

Kontruktor može imati naziv __construct(...)

Destruktor ima naziv __destruct ( void )

Vlastita klasa ima nastavak .php kao i svaka druga PHP skripta.

Page 10: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin19Izgradnja Web aplikacija - FOI

Vlastita klasa - Red

<?class Red{

public $broj;public $elementi;

function Red() {$this->broj = 0;$this->elementi = array();

}

function broj() {return $this->broj;

}

function dodaj($noviElement) {$this->elementi[] = $noviElement;$this->broj++;

}

naziv klase

varijable klase

kostruktor klase

funkcija klase

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin20Izgradnja Web aplikacija - FOI

Vlastita klasa - Red / 1.

function uzmi() {if($this->broj == 0) {

return null;}$odlazi = array_shift($this->elementi);$this->broj--;return $odlazi;

}

function elementi() {return $this->elementi;

}}?>

Page 11: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin21Izgradnja Web aplikacija - FOI

Vlastita klasa - Red / 3.

<? include('Red.php');$red = new Red;$red->dodaj("Jedan");$red->dodaj("Dva");$red->dodaj("Tri");$red->dodaj("Pet");brojElemenata($red->broj());ispisiElemente($red->elementi());$elem = $red->uzmi();print "Uzet element: $elem <br>";brojElemenata($red->broj());ispisiElemente($red->elementi());

function brojElemenata($broj) {print "Ukupno elemenata: $broj<br>";

}

function ispisiElemente($lista) {foreach ($lista as $i) {

print $i . "<br>";}

}

Primjer40 – Vlastita klasa - RedPrimjer40 – Vlastita klasa - Red

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin22Izgradnja Web aplikacija - FOI

Vlastita klasa – Red / 4

<? // Red_1.phpclass Red{

public $broj;public $elementi;

function __contruct() {$this->broj = 0;$this->elementi = array();

}

function __destruct() {print "<br><b>Brišem elemente reda!</b><br>";while ($this->broj != 0) {

print $this->uzmi() . "<br>";}

}

function broj() {return $this->broj;

}

function dodaj($noviElement) {$this->elementi[] = $noviElement;$this->broj++;

}

naziv klase

varijable klase

kostruktor klase

destruktor klase

Page 12: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin23Izgradnja Web aplikacija - FOI

Vlastita klasa - Red / 5.

<? include('Red_1.php');$red = new Red;$red->dodaj("Jedan");$red->dodaj("Dva");$red->dodaj("Tri");$red->dodaj("Pet");brojElemenata($red->broj());ispisiElemente($red->elementi());$elem = $red->uzmi();print "Uzet element: $elem <br>";brojElemenata($red->broj());ispisiElemente($red->elementi());

function brojElemenata($broj) {print "Ukupno elemenata: $broj<br>";

}

function ispisiElemente($lista) {foreach ($lista as $i) {

print $i . "<br>";}

}

Primjer40_1 – Vlastita klasa - Red

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin24Izgradnja Web aplikacija - FOI

Vlastita klasa - Stog

<? include('Red.php');

class Stog extends Red{

function dodaj($noviElement) {array_unshift($this->elementi, $noviElement);$this->broj++;

}

function uzmi() {if($this->broj == 0) {

return null;}$odlazi = array_pop($this->elementi);$this->broj--;return $odlazi;

}}?>

uključenje klase

proširenje klase

Page 13: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin25Izgradnja Web aplikacija - FOI

Vlastita klasa - Stog / 1.

<? include('Stog.php');$stog = new Stog;$stog->dodaj("Jedan");$stog->dodaj("Dva");$stog->dodaj("Tri");$stog->dodaj("Pet");brojElemenata($stog->broj());ispisiElemente($stog->elementi());$elem = $stog->uzmi();print "Uzet element: $elem <br>";brojElemenata($stog->broj());ispisiElemente($stog->elementi());

function brojElemenata($broj) {print "Ukupno elemenata: $broj<br>";

}

function ispisiElemente($lista) {foreach ($lista as $i) {

print $i . "<br>";}

}?>Primjer40_2 – Vlastita klasa - Stog

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin26Izgradnja Web aplikacija - FOI

Rad s datumom i vremenom

Datumski i vremenski podaci imaju značajnu ulogu u mnogim dijelovima Web

aplikacija.

checkdate - validacija gregorijanskog datuma date - formatira lokalno vrijeme/datuma getdate - daje informaciju u datumu/vremenu gettimeofday - daje važeće vrijeme gmdate - formatira GMT lokalno vrijeme/datuma gmmktime - postavlja UNIX timestamp za GMT datumgmstrftime - formatira GMT lokalno vrijeme/datum prema

lokalnim postavkamalocaltime - daje lokalno vrijeme microtime - daje UNIX timestamp s mikrosekundama mktime - daje UNIX timestamp za datum strftime - formatira vrijeme/datuma prema lokalnim

postavkamastrtotime - parsira engleski tekstualni opis datuma/vremena

u UNIX timestamp time - daje važeći UNIX timestamp

Page 14: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin27Izgradnja Web aplikacija - FOI

Rad s datumom i vremenom / 1.

Kodovi za date funkciju:

d,j - dan u mjesecu (01-31, 1-31) D,l - dan u tjednu (Mon-Sun, Monday-Sunday) F,M - mjesec u godini (January-December, Jan-Dec) g,h - sat u danu u 12 satnom formatu (1-12, 01-12) G,H - sat u danu u 24 satnom formatu (0-23, 00-23) m,n - mjesec u godini (01-12, 1-12)s - sekunde u minuti (00-59)t - ukupan broj dana u mjesecuU - ukupan broj sekundi od 01.01.1970.w - dan u tjednu (0-6) y - godina u 2 brojnom formatuY - godina u 4 brojnom formatu z - dan u godini (0-365)

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin28Izgradnja Web aplikacija - FOI

Rad s datumom i vremenom / 2.

<?phpecho "Danas je " . date("d.m.Y") . "<br>";echo "Sada je " . date("H:i:s") . "<br>";echo "Ovo je " . date("w.") . " dan u tjednu" . "<br>";echo "Ovo je " . date("z.") . " dan u godini" . "<br>";?>

Primjer41 – rad s datumom i vremenom

Page 15: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin29Izgradnja Web aplikacija - FOI

RAD S BAZAMA PODATAKA

Složeni projekti uglavnom su temeljeni na primjeni baza podataka. U posljednje

vrijeme kada se spominje ozbiljna poslovna primjena WWW-a tada on nije

iznimka od nepisanog pravila primjene baza podataka.

Otvorenost WWW donosi znatno više problema na području sigurnosti i rada

na zaštiti baza podataka.

Na predmetu “Izgradnja Web aplikacija" koristi se baza podataka MySQL

kojoj se pristupa iz PHP-a.

MySQLPHP

engine

Web

server

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin30Izgradnja Web aplikacija - FOI

Otvaranje veze prema poslužitelju MySQL-a

Prvi korak je otvaranja veze prema poslužitelju baze podataka:

resource mysql_connect ( [string server [, string username [, string password [, bool new_link [, int client_flags]]]]])

Svi paremetri su opcionalni tako da se uzimaju pretpostavljene vrijednosti, a to

su “localhost” za server, username se preuzima od vlasnika procesa i password

je prazan

Veza sa MySQL se može uspostaviti funkcijom mysql_pconnect koja otvara

stalnu vezu prema bazi koja se ne zatvara ni sa mysql_close funkcijom

Page 16: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin31Izgradnja Web aplikacija - FOI

Povezivanje na BP kod MySQL-a

Nakon otvaranja veze prema poslužitelju baze podataka slijedi odabir baze

podataka

bool mysql_select_db ( string database_name [, resource link_identifier])

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin32Izgradnja Web aplikacija - FOI

Postavljanje karakter seta kod MySQL-a

Nakon odabira baze podataka poželjno je postaviti karakter set prema kojem su

zapisani podaci u tablice.

bool mysql_set_charset ( string $charset [, resource $link_identifier ] )

Page 17: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin33Izgradnja Web aplikacija - FOI

Izvršavanje operacija na BP kod MySQL-a

Operacije se mogu izvršiti na nekoliko načina pri čemu izbor ovisi o operaciji i

načinu rada s dobivenim podacima.

int mysql_query (string query [, int link_identifier])

mysql_fetch_row(),mysql_fetch_array(), mysql_fetch_object().

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin34Izgradnja Web aplikacija - FOI

SQL SELECT kod MySQL-a<? $dbc = mysql_connect("localhost", "PzaWeb2002", "FOI");if(! $dbc) {

echo "Problem kod povezivanja na bazu podataka!";exit;

}$db = mysql_select_db("PzaWeb", $dbc);if(! $db) {

echo "Problem kod selektiranja baze podataka!";exit;

}if(! mysql_set_charset(“cp1250”, $dbc))) {

echo "Problem kod postavljanja karakter seta utf-8!";exit;

}$sql = "select prezime, ime, maticni_broj FROM POLAZNICI " .

"order by prezime, ime";$rs = mysql_query($sql);if(! $rs) {

echo "Problem kod upita na bazu podataka!";exit;

}

Page 18: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin35Izgradnja Web aplikacija - FOI

SQL SELECT kod MySQL-a / 1.

print "<TABLE><TR><TD>Prezime<TD>Ime<TD>Maticni_broj\n";

while( list($prezime, $ime, $maticni_broj) = mysql_fetch_array($rs)) {print "<TR><TD>$prezime<TD>$ime<TD>$maticni_broj\n";

}

mysql_close($dbc);?>

Primjer42 – SQL SELECT kod MySQL-a

Primjer42_4 – SQL SELECT kod MySQL-a s mysql_pconnect

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin36Izgradnja Web aplikacija - FOI

SQL INSERT kod MySQL-a

<? $dbc = mysql_connect("localhost", "PzaWeb2002", "FOI");if(! $dbc) {

echo "Problem kod povezivanja na bazu podataka!";exit;

}$db = mysql_select_db("PzaWeb", $dbc);if(! $db) {

echo "Problem kod selektiranja baze podataka!";exit;

}if(! mysql_set_charset(“cp1250”, $dbc))) {

echo "Problem kod postavljanja karakter seta utf-8!";exit;

}$sql = "insert into POLAZNICI " .

"(maticni_broj, prezime, ime, lozinka, email_adresa) " ."values ('00001/00-R', 'Kermek', 'Dragutin', '123456', '[email protected]')";

$rs = mysql_query($sql);

Page 19: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin37Izgradnja Web aplikacija - FOI

SQL INSERT kod MySQL-a / 1.

if(! $rs) {echo "Problem kod upisa u bazu podataka!<br>";echo mysql_error();exit;

}

mysql_close($dbc);?>

Primjer42_1 – SQL INSERT kod MySQL-a

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin38Izgradnja Web aplikacija - FOI

PHP funkcije kod MySQL-a

mysql_affected_rows - broj redaka koji su obuhvaćeni prethodnom operacijommysql_change_user - promjena korisnika aktivne vezemysql_client_encoding - vraća tekst karakter setamysql_close - zatvaranje vezemysql_connect - otvaranje veze prema MySQL poslužiteljumysql_create_db - kreiranje baze podatakamysql_data_seek - pomak internog pokazivača rezultatamysql_db_query - slanje SQL upitamysql_drop_db - brisanje baze podatakamysql_errno - vraća vrijednost poruke pogreške prethodne operacijemysql_error - vraća tekst poruke pogreške prethodne operacijemysql_fetch_array - preuzima redak rezultata kao asocijativno poljemysql_fetch_field - vraća informaciju o stupcu iz rezultata kao objektmysql_list_tables - lista tablica u MySQL DMBS-umysql_num_fields - vraća broj polja u rezultatumysql_num_rows - vraća broj redaka u rezultatumysql_pconnect - otvara perzistentnu vezu prema MySQL poslužiteljumysql_result - vraća rezultatmysql_set_charset - postavlja krarakter setmysql_tablename - vraća naziv tablice

Page 20: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin39Izgradnja Web aplikacija - FOI

Proširenje funkcioalnosti rada s MySQL-a

Sastoji se on nekoliko klasa:

mysqli – predstavlja vezu između PHP i MySQL baze podataka

mysqli_stmt – predstavlja pripremljenu naredbu

mysqli_result – predstavlja rezultat izvršenja naredbe nad bazom podataka

Može se korisititi u objektno orijentiranom ili proceduralnom stilu.

Prvi korak je otvaranja veze prema poslužitelju baze podataka i bazi podataka:

mysqli mysqli_connect ( [string host [, string username [, string passwd [, string dbname [, int port [, string socket]]]]]] )

Svi paremetri su opcionalni tako da se uzimaju pretpostavljene vrijednosti, a to

su “localhost” za server, username se preuzima od vlasnika procesa i password je prazan.

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin40Izgradnja Web aplikacija - FOI

mysqli i result operacije

<? $mysqli = new mysqli("localhost", "PzaWeb2002", "FOI", "PzaWeb", 3306);if (mysqli_connect_errno()) {

echo "Problem kod povezivanja na bazu podataka! " . mysqli_connect_error();exit;

}if(! $mysqli->set_charset(“cp1250”, $dbc))) {

echo "Problem kod postavljanja karakter seta utf-8!";exit;

}$sql = "select prezime, ime, maticni_broj FROM POLAZNICI " .

"order by prezime, ime";$result = $mysqli->query($sql);if(! $result) {

echo "Problem kod upita na bazu podataka!";exit;

}

Page 21: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin41Izgradnja Web aplikacija - FOI

mysqli i result operacije

print "<TABLE><TR><TD>Prezime<TD>Ime<TD>Maticni_broj\n";while( list($prezime, $ime, $maticni_broj) = $result->fetch_array()) {

print "<TR><TD>$prezime<TD>$ime<TD>$maticni_broj\n";}$result->close();$mysqli->close();

Primjer42_2 – SQL SELECT kod MySQLI-a

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin42Izgradnja Web aplikacija - FOI

Otvaranje veze prema poslužitelju PostgreSQL-a

Prvi korak je otvaranja veze prema poslužitelju baze podataka s izborom baze

podataka:

resource pg_connect ( string connection_string [, int connect_type] )

Connection_string sadrži elemente/parametre za uspostavljanje veze:"host= port= dbname= user= password="

Svi paremetri su opcionalni tako da se uzimaju pretpostavljene vrijednosti.

Page 22: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin43Izgradnja Web aplikacija - FOI

Izvršavanje operacija na BP kod MySQL-a

Operacije se mogu izvršiti na nekoliko načina pri čemu izbor ovisi o operaciji i

načinu rada s dobivenim podacima.

int pg_query (resource connection, string query )

pg_fetch_row(),pg_fetch_array(), pg_fetch_object().

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin44Izgradnja Web aplikacija - FOI

SQL SELECT kod PostgreSQL-a

<? $dbc = pg_connect("host=localhost port=5432 dbname=PzaWeb user=PzaWeb2002 password=FOI");if(! $dbc) {

echo "Problem kod povezivanja na bazu podataka!";exit;

}$sql = "select prezime, ime, maticni_broj FROM POLAZNICI " .

"order by prezime, ime";$rs = pg_query($dbc, $sql);if(! $rs) {

echo "Problem kod upita na bazu podataka!";exit;

}print "<TABLE><TR><TD>Prezime<TD>Ime<TD>Maticni_broj\n";while( list($prezime, $ime, $maticni_broj) = pg_fetch_array($rs)) {

print "<TR><TD>$prezime<TD>$ime<TD>$maticni_broj\n";}pg_close($dbc);

Primjer42_3 – SQL SELECT kod PostgeSQL-a

Page 23: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin45Izgradnja Web aplikacija - FOI

Kreiranje baze podataka - MySQL

Za kreiranje baze podataka treba imati dozvolu za tu vrstu operacije.

- kreiranje baze podatakaCREATE DATABASE FOI_PzaWeb;

- kreiranje korisnika s lozinkomCREATE USER FOI_korisnik IDENTIFIED BY 'foi2007';

- pridruživanje dozvola korisniku za rad s bazom podatakaGRANT DELETE, INSERT, SELECT, UPDATEON `FOI_PzaWeb`.*TO ' FOI_korisnik '@'localhost' IDENTIFIED BY 'foi2007';

- mogućnost korištenja stare verzije lozinke (bez kripriranja)SET PASSWORD FOR ' FOI_korisnik '@'localhost' = OLD_PASSWORD('foi2007');

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin46Izgradnja Web aplikacija - FOI

Kreiranje tablice - MySQL

Za kreiranje tablice u bazi podataka treba imati dozvolu za tu vrstu operacije.

CREATE TABLE POLAZNICI (maticni_broj CHAR(10) NOT NULL,prezime CHAR(25) NOT NULL,ime CHAR(25) NOT NULL,lozinka CHAR(20) NOT NULL,email_adresa CHAR(40) NOT NULL,datum_kreiranja datetime NOT NULL,datum_promjene datetime NOT NULL,PRIMARY KEY (maticni_broj),INDEX prezime_ime (prezime, ime)

);

Page 24: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin47Izgradnja Web aplikacija - FOI

SQL

Skup naredbi za upravljenje i rad s podacima baze podataka.

DDL - Data Definition Language (DDL)

DML - Data Manipulation Language (DML)

DCL - Data Control Language (DCL)

TCL - Transaction Control (TCL)

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin48Izgradnja Web aplikacija - FOI

SQL - DDL

Data Definition Language (DDL) – za definiranje strukture baze statements ili

sheme.

CREATEALTERDROP TRUNCATECOMMENTRENAME

Page 25: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin49Izgradnja Web aplikacija - FOI

SQL - DML

Data Manipulation Language (DML) – za upravljenje/manipulaciju s podacima

u shemi.

SELECTINSERTUPDATEDELETE

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin50Izgradnja Web aplikacija - FOI

SQL - DCL

Data Control Language (DCL) – za postavljenje dozvola.

GRANTREVOKE

Page 26: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin51Izgradnja Web aplikacija - FOI

SQL - TCL

Transaction Control (TCL) – za upravljenje promjenama koje DML proizvode,

formiranje grupa naredbi - transakcije.

COMMITSAVEPOINTROLLBACKSET TRANSACTION

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin52Izgradnja Web aplikacija - FOI

SQL DCL – MySQL 1.

Dozvola ZnačenjeALL [PRIVILEGES]ALL [PRIVILEGES]ALL [PRIVILEGES]ALL [PRIVILEGES] Sve dozvole osim GRANT OPTIONALTERALTERALTERALTER Dozvola za ALTER TABLEALTER ROUTINEALTER ROUTINEALTER ROUTINEALTER ROUTINE Dozvola promjene ili brisanja pohranjenih proceduraCREATECREATECREATECREATE Dozvola za CREATE TABLECREATE ROUTINECREATE ROUTINECREATE ROUTINECREATE ROUTINE Dozvola kreiranja pohranjenih proceduraCREATE TEMPORARY CREATE TEMPORARY CREATE TEMPORARY CREATE TEMPORARY TABLESTABLESTABLESTABLES Dozvola za CREATE TEMPORARY TABLECREATE USERCREATE USERCREATE USERCREATE USER Dozvola za CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGES.CREATE VIEWCREATE VIEWCREATE VIEWCREATE VIEW Dozvola za CREATE VIEWDELETEDELETEDELETEDELETE Dozvola za DELETEDROPDROPDROPDROP Dozvola za DROP TABLEEVENTEVENTEVENTEVENT Dozvola kreiranja događaja za upravljača događajaEXECUTEEXECUTEEXECUTEEXECUTE Dozvola korisniku da izvršava pohranjene procedureFILEFILEFILEFILE Dozvola za SELECT ... INTO OUTFILE i LOAD DATA INFILEINDEXINDEXINDEXINDEX Dozvola za CREATE INDEX i DROP INDEXINSERTINSERTINSERTINSERT Dozvola za INSERT

Page 27: Kermek IWA 11

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin53Izgradnja Web aplikacija - FOI

SQL DCL – MySQL 2.

Privilege MeaningLOCK TABLESLOCK TABLESLOCK TABLESLOCK TABLES Dozvola za LOCK TABLES za tablice za koje korisnik ima dozvolu SELECTPROCESSPROCESSPROCESSPROCESS Dozvola da korisnik vidi pohranjenje procedura s SHOW PROCESSLISTREFERENCESREFERENCESREFERENCESREFERENCES Nije implementiranoRELOADRELOADRELOADRELOAD Dozvola za FLUSHREPLICATION CLIENTREPLICATION CLIENTREPLICATION CLIENTREPLICATION CLIENT Omogućava korisniku da pita gdje su glavni i pomoćni serveriREPLICATION SLAVEREPLICATION SLAVEREPLICATION SLAVEREPLICATION SLAVE Potrebno za replikaciju pomoćnog serveraSELECTSELECTSELECTSELECT Dozvola za SELECTSHOW DATABASESSHOW DATABASESSHOW DATABASESSHOW DATABASES SHOW DATABASES prikazuje sve baze podatakaSHOW VIEWSHOW VIEWSHOW VIEWSHOW VIEW Dozvola za SHOW CREATE VIEWSHUTDOWNSHUTDOWNSHUTDOWNSHUTDOWN Dozvola za mysqladmin shutdownSUPERSUPERSUPERSUPER Dozvola za CHANGE MASTER, KILL, PURGE MASTER LOGS, i SET GLOBAL, the

mysqladmin debug komande, itdTRIGGERTRIGGERTRIGGERTRIGGER Omogućava korisniku da kreira ili obriše okidačeUPDATEUPDATEUPDATEUPDATE Dozvola za UPDATEUSAGEUSAGEUSAGEUSAGE Sinonim za “bez privilegija”GRANT OPTIONGRANT OPTIONGRANT OPTIONGRANT OPTION Omogućava pridruživanje dozvola

Prof.dr.sc. D.Kermek, Fakultet organizacije i informatike, Varaždin54Izgradnja Web aplikacija - FOI

Korištena i dodatna literatura

� http://www.sitepoint.com/books/Kevs-php-mysql.pdf

� http://www.devshed.com/Server_Side/PHP/DB_Basics/DB_Basics.pdf

� http://www.devshed.com/Server_Side/PHP/PHPMySQLPublishing/PHPMyS

QLPublishing.pdf