Kermek IWA 11
description
Transcript of 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
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
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>
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.
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]]]]])
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>
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.
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
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.
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.
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;
}}?>
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
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
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
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
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
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 ] )
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;
}
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);
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
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;
}
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.
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
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)
);
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
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
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
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