Professional Documents
Culture Documents
PHP
PHP
PHP
Uvod
HTML i JavaScript se izvravaju na
klijentskoj strani, odnosno na korisnikom
raunaru
PHP je jedan od programskih jezika za
izradu dinamikih veb strana koji se
izvrava na serverskoj strani
PHP moe da memorie podatke i koristi
ih u kasnijem trenutku
Istorija
1995 - PHP (Personal Home Page) jezik
je zapoeo Rasmus Lerdorf za potrebe
line veb strane 1995.
1999 - Zeev Suraski i Andi Gutmans su
dalje razvili PHP 3 (PHP Hypertext
Preprocessor) i Zend kompajler kao
osnovu za PHP 4.
2004 - PHP 5 ukljuuje i objektno
programiranje.
Trenutno se radi na PHP 6
Alternative PHP-u
Alternative
Python
Perl
ASP Active Server Pages
JSP Java Server Pages
LAMP Linux Apache MySQL PHP (Python,
Perl)
WAMP Windows Apache MySQL PHP
(Python, Perl)
XAMPP Cross-Platform Apache MySQL
PHP Perl
Popularnost
Na tritu vie od 50% veb servera su
tipa Apache
Najpopularniji programski jezik za
dinamiko programiranje veb strana na
serverima Apache je PHP
PHP je uopte jedan od najpopularnijih
programskih jezika
PHP koriste wikipedia.org, yahoo.com,
facebook.com itd.
Popularnost (langpop.com)
Reference
Nije standard
www.php.net
Jason Gilmore, Beginning PHP and MySQL:
From Novice to Professional, Third Edition
(Beginning from Novice to Professional),
Apress, March 2008.
Luke Welling, and Laura Thomson
PHP and MySQL Web Development (4th
Edition) (Developer's Library), Addison-
Wesley Professional, October 2008.
www uopte
Instalacija WAMP servera
WAMP server se moe nai na:
http://www.wampserver.com/en/
Instalacija je jednostavna.
Pre instalacije idite na skype > tools >
options > advanced > connection i
iskljuite port 80. Zatim zatvorite
Skype.
Kada je WAMP instaliran, moete
otvoriti Skype.
Konfiguracija servera
Konfiguracija Apache servera se
obavlja u okviru fajla:
wamp\bin\apache\apache2.2.22\conf\
httpd.conf
Konfiguracija PHP kompajlera se
obavlja u okviru fajla
wamp\bin\php\php5.4.3\php.ini
Kada se promeni konfiguracija, klikne
se na Wamp ikonicu, pa na Restart
Osobine
Platformski neutralan
Slian C-u od koga je nastao
Integrisanost sa (X)HTML-om
Nestruktuiran i nekonzistentan
Generalije
Komande se zavravaju ;
Kljune rei (komande), imena
funkcija i klasa nisu osetljiva na
veliinu slova (case insensitive), dok
imena promenljivih jesu. Npr.
promenljiva $txt se razlikuje od
promenljive $TXT, dok su funkcije
sort i SORT iste.
Za ta se koristi PHP?
Omoguava dinamiki HTML sadraj
Vri obrade na serveru, npr.
prikuplja statistike o poseenosti
Obrauje podatke iz formulara
Povezuje korisnike sa bazama
podataka na serveru
Implementira autentifikaciju i zatitu
komunikacije
1. Osnove PHP-a
Tag
Komentari
Prikaz
Promenljive i njihovi tipovi
Operatori
Funkcije
Objekti
Izvravanje koda
U okviru HTML koda:
<script type=php">
...PHP kod
</script>
Ili u eksternom fajlu:
<script type=php" src="phpkod.php">
</script>
Ali ee se koristi uproena sintaksa
<?php ...PHP kod?>
odnosno
<?php include(phpkod.php) ?>
Direktorijum php fajlova
U konfiguracionom fajlu Apache servera,
httpd.conf, se odreuje glavni direktorijum u
kome su php fajlovi.
Kada su Apache, php, i MySQL baza posebno
konfigurisani: U fajlu httpd Apache servera je
odreen defolt direktorijum za dokumente
sledeom naredbom:
DocumentRoot "C:/Program Files/Apache Software
Foundation/Apache2.2/htdocs
To znai da su fajlovi u direktorijumu:
C:\Program Files\Apache Software
Foundation\Apache2.2\htdocs
Direktorijum php fajlova
U konfiguracionom fajlu Apache servera,
httpd.conf, se odreuje glavni direktorijum u
kome su php fajlovi.
Kada je instaliran WAMP, onda je defolt
direktorijum sledei
DocumentRoot "C:/wamp/www
To znai da su fajlovi u direktorijumu:
C:\wamp\www
Drugi direktorijumi mogu da se odrede ili
relativno u odnosu na defolt direktorijum ili
pomou aliasa, npr:
Alias /slike /ftp/pub/slike
XHTML fajlovi sa php
kodom
Ako elimo da koristimo php kod u fajlu
sa .html ekstenzijom, u httpd fajlu Apache
servera treba ubaciti liniju
(wamp\bin\apache\apache2.2.22\conf\
httpd.conf)
AddType application/x-httpd-php .html
Pozivanje php ili html
fajlova
Pomou URL adrese
localhost/proba/proba.php
Fajl proba.php je u direktorijumu
wamp\www\proba
Komentari
Za komentar jedne linije - oznaka // ili # :
// komentar u jednoj liniji ...
<?php
$a = 1.234; $b = 1.2e3; $c = 7E-10;
?>
Znakovni niz - string
Mogu biti pod apostrofima (ab) ili navodnicima (ab)
Kada se koriste apostrofi navodnici se koriste za navodnike u
tekstu i obrnuto. Apostrof unutar apostrofa \, slino za navodnike.
Za dui tekst pod navodnicima, moe se koristiti <<< sa nekom
promenljivom koja razgraniava tekst (nema razmaka posle EOT):
$s=<<<EOT
Text
EOT;
Za dui tekst pod apostrofima
$s=<<<EOD
Text
EOD;
Primer:
echo <<<EOT
Primer dueg znakovnog niza koji moe zauzimati i veliki broj
redova i puno navodnika itd.
EOT;
String - primeri
Primer:
<?php $foo = "foobar";$a=2;
echo foo je $foo <br />;
echo foo je $foo <br />;
Echo a je $a <br />;
Echo a je $a <br />; ?>
Rezultat:
foo je $foo
foo je foobar
a je $a
a je 2
Niz - array
Sintaksa definisanja niza
ImeNiza=array([indeks1=>]vrednost1, )
Indeksi mogu biti celi brojevi ili stringovi. Indeksi koji nisu
specificirani uzimaju vrednosti redom 0,1,2,...
Primer
<?php
$niz=array("Aleks" => "9", "Sanja" =>8 , "Mirko"
=>6);
echo $niz['Aleks'], "<br />";
echo {$niz['Aleks']} <br />";
echo $niz["Sanja"];
?>
Rezultat:
9
9
8
Multidimenzionalni nizovi
Primer:
$familije=array
(Simi=>
array(Branka,Dejan),
Brusin=>
array(Mia,Maja,Marija));
Objekat - object
Objekti su slini kao kod JavaScript-
a, ali se sintaksa razlikuje
Objekti se definiu klasama kojima
pripadaju
Klase imaju definisane atribute i
metode
Promenljive objekti se dobijaju
instanciranjem klase
Resurs - resource
Promenljive tipa resurs su pokazivai na
sloene eksterne promenljive
Primer su pokaziva na otvoren fajl ili na
vezu sa bazom podataka
Promenljive tipa resurs se generiu
razliitim funkcijama u zavisnosti od
primene
Kompajler automatski brie promenljive
tipa resurs koje ne pokazuju na neki
resurs
NULL vrednost
Vrednost NULL je
tip podataka/vrednost koja se moe dodeliti
promenljivoj
Pokazuje da promenljiva ne sadri nikakvu
korisnu vrednost
Promenljiva sa vrednou NULL ima takvu
dodeljenu vrednost
Vrednost null se dodeljuje promenljivoj kada
se eli definisati da promenljiva ne sadri
nikakav podatak
Operatori
Aritmetiki
Na nivou bita
Relacioni
Logiki
Aritmetiki operatori
Operator Opis Operator Opis
+ sabiranje += sabiranje
dodela
- oduzimanje -= oduzimanje
dodela
* mnoenje *= mnoenje
dodela
/ deljenje /= deljenje
dodela
% moduo %= Moduo
dodela
++ inkrement -- dekrement
Aritmetiki operatori
$a = 1 + 1;
$b = $a * 3;
$c = $b / 4;
$d = $b $a;
$e = -$d;
$f = ($g = 4) + 5;
echo a, b, c, d, e, f, g su , ,$a,
,$b, ,$c, ,$d, ,$e, , $f, ,$g;
Nakon izvravanja prethodnog primera dobija se
sledei tekst na ekranu:
a, b, c, d, e, su 2 6 1.5 4 -4 9 4
Na nivou bita
Operator Upotreba Opis
Logiko I (AND) $a & $b Rezultatni bit je 1, jedino ako su oba bita 1 u ostalim
sluajevima rezultat je 0.
Logiko ILI (OR) $a | $b Rezultatni bit je 0, jedino ako su oba bita 0 u ostalim
sluajevima rezultat je 1.
Pomeranje ulevo $a << $b Pomera binarni sadraj operanda za b mesta ulevo. Prazna
mesta popunjava sa vrednou 0.
Pomeranje udesno $a >> $b Pomera binarni sadraj operanda za b mesta udesno. Prazna
sa znakom mesta popunjava sa vrednou najstarijeg bita.
Na nivou bita
15 & 9 rezultat 9 (1111 & 1001
= 1001)
15 | 9 rezultat 15 (1111 | 1001
= 1111)
15 ^ 9 rezultat 6 (1111 ^ 1001
= 0110)
Logiki operatori
Operato
r Upotreba Opis
I (&& ili expr1 && expr2 Rezultat je true, jedino ako su oba operanda true, u
and) ostalim sluajevima rezultat je false.
ILI (|| ili expr1 || expr2 Rezultat se dobija false, jedino ako su oba operanda
or) false, u ostalim sluajevima rezultat je true.
NE (!) !expr Rezultat se dobija komplement od vrednosti
operanada. Ako je operand true, rezultat je false,
ako je operand false, rezultat je true
ILI (xor) expr1 xor expr2 Rezultat je true, ako su operandi razliiti, i obrnuto,
rezultat je false, ako su operandi isti
Logiki
$a = true;
$b = false;
$c = $a || $b;
$d = $a && $b;
$f = (!$a && $b) || ($a && !$b);
$g = !$a;
echo " a = ", $a, " <br /> " ;
echo " b = ", $b , "<br />" ;
echo " c = ", $c , "<br />" ;
echo " d = " , $d , "<br />" ;
echo " f = " , $f , "<br />" ;
echo " g = " , $g;
Rezultat izvravanja prethodnog primera je:
a=1
b=
c=1
d=
f=1
g=
Operatori poreenja
Operator Upotreba Opis
Jednakost (==) Rezultat je true ako su operandi $x == $y rezultat je true ako su $x i
jednaki $y jednaki.
Nejednakost (!= ili Rezultat je true ako su operandi $x ! = $y rezultat je true ako su $x i
razliiti. $y razliiti.
<>)
Vee (>) Rezultat je true ako je levi operand $x > $y ako je $x vee od $y.
vei od desnog operanda.
Vee ili jednako Rezultat je true ako je levi operand $x >= $y ako je $x vee ili jednako
(>=) vei ili jednak desnom operandu $y.
Manje (<) Rezultat je true ako je levi operand $x < $y rezultat je true ako je $x
manji od desnog operanda manje od $y.
Manje ili jednako Rezultat je true ako je levi operand $x <= $y rezultat je true ako je $x
(<=) manji ili jednak desnom manje ili jednako $y.
operandu
Jednako bez Rezultat je true ako su operandi $x === $y rezultat je true ako su $x
konverzije jednaki bez konverzije podataka i $y jednaki bez konverzije
tipova (===) podataka
Razliito bez Rezultat je true ako su operandi $x !== $y rezultat je true ako su $x
konverzije razliiti bez konverzije podataka i $y razliiti bez konverzije
tipova (!==) podataka
Operatori poreenja
$a = 4;
$b = 1;
$c = $a < $b;
$d = $a == $b;
echo c = , $c, <br /> ;
echo d = , $d ;
Rezultat izvravanja prethodnog primera
je
c=
d=
String operator .
Pomou string operatora . spajaju se dva
stringa
Primer
$a=Aleksandra; $b=Smiljani;
$c=$a. . $b;
$a.= S;
echo $a, <br />, $c;
Rezultat
Aleksandra S
Aleksandra Smiljani
Operator nizova +
Pomou string operatora + spajaju se
dva niza
Primer
$a=array(0=>1,1=>2,2=>3);
$b=array(3=>4,4=>5);
$c=$a+$b;
echo $c[0],$c[1],$c[3],$c[4];
Rezultat
1245
Operator greke @
Pre izraza (funkcija,promenljivih
itd.) moe se postaviti operator
greke @
Uloga ovog operatora je da ignorie
greke koje mogu da nastanu pri
izraunavanju izraza (ukljuujui i
izvravanje funkcije itd.)
Operator za izvrni kod
Naredba izmeu dva akcenta `` izvrava
naredbe operativnog sistema (npr.
kreiranje direktorijuma, listanje
direktorijuma itd.)
Funkcionie kada Apache nije u Safe
mode i kada funkcija shell_exec nije
iskljuena
Safe mode se ukljuuje a shell_exec
iskljuuje u fajlu php.ini, zatim se
Apache restartuje.
Operator za izvrni kod:
primer
Primer
<?php
$output = `dir`;
echo "<pre>$output</pre>";
?>
Rezultat
Volume in drive C has no label.
Volume Serial Number is E82B-743B
04/24/2009 00:36
.
04/24/2009 00:36
..
11/20/2004 14:16 44 index.html
04/19/2009 22:51 21 phpinfo.php
04/24/2009 13:28 58 phpproba.php
3 File(s) 123 bytes
2 Dir(s) 78.881.165.312 bytes free
Operator za izvrni kod:
primer
Primer
<?php
$new_dir = "Bob";
`mkdir $new_dir`
?>
Rezultat: otvoren je novi folder u
okviru foldera gde je PHP fajl koji ga
kreira
Funkcije
Funkcije predstavljaju grupu naredbi
koja se moe izvriti kao pojedinana
jedinica
Funkcije su korisne jer ine program
preglednijim i lakim za auriranje
Kao i bilo koji drugi PHP kod, funkcije se
moraju definisati u okviru <?php ?>
elementa
Funkcija se sastoji iz deklaracije funkcije
i njenog poziva
Deklaracija funkcija
Sintaksa za definisanje funkcije je :
function imeFunkcije(parametri) {
naredbe;
}
Pozivanje funkcije
Da bi se izvrila funkcija potrebno ju je
pozvati sa odreenog mesta u okviru
programa
Funkcija se poziva njenim imenom i
specifikacijom argumenata u okviru
zagrada
Vrednosti argumenata se prosleuju
odgovarajuim parametrima funkcije u
skladu sa deklaracijom funkcije
Mogunosti
Funkcija moe biti pozvana
rekurzivno
Funkcija moe biti definisana
uslovno ili unutar druge funkcije, i
onda je deklarisana samo ako je
uslov ispunjen odnosno kada je ta
druga funkcija pozvana
Naredba return
Slui da bi se vratio rezultat funkcije
pozvanoj naredbi
Dodeljuje pozvanoj naredbi vrednost
odreenog izraza
Tip moe biti proizvoljan
return 8;
return $p*$m;
Opseg vaenja promenljive
Prema opsegu vaenja promenljive se dele na
superglobalne, globalne ili lokalne
Superglobalne promenljive su ugraene u PHP i
vae u bilo kom programu i funkciji
Globalne promenljive se deklariu izvan
funkcije, i moe im se pristupiti iz bilo kog dela
programa
Lokalne promenljive se deklariu u okviru
funkcije i jedino su dostupne u okviru funkcije
u kojoj su deklarisane
Parametri su takoe lokalne promenljive
Primer lokalne promenljive
<!DOCTYPE html>
<html>
<body>
<?php
$x=5; // globalna
function mojTest()
{
$x=1;
echo $x; // lokalna
}
mojTest();
?>
</body>
</html>
Primer globalne promenljive
<?php
$x=5; // globalna
$y=10; // globalna
function mojTest()
{
global $x,$y;
$y=$x+$y;
}
mojTest();
echo $y; // izbacuje 15
?>
Argumenti funkcije
Argumenti funkcije su izrazi koji su razdvojeni
zarezom
Promenljiva, argument, moe biti prosleena
direktno $a ili preko reference &$a. U drugom
sluaju moe da se menja vrednost argumenta.
Promenljivim, argumentima, se moe dodeliti
defolt vrednost. Primer:
function birajKafu($tip = kapuino")
{
return Izabran je $tip.";
}
birajKafu(espreso);birajKafu();
Ugraene funkcije
Postoji veliki broj funkcija koje su ili ugraene
po defoltu ili se ukljuuju kroz ekstenzije i
dodatne biblioteke u PHP
Kategorizacija funkcija i potrebne ekstenzije se
mogu nai na veb strani
http://www.php.net/manual/en/funcref.php
Spisak svih funkcija se mogu nai na veb
strani:
http://www.php.net/manual/en/indexes.php
Promenljive funkcije
Primer
<?php
function fu() {
echo Ovo je fu()<br />";}
function bar($arg = ''){
echo Ovo je bar();
argument je bio '$arg'.<br />";}
$funk = 'fu';
$funk();
$funk = 'bar';
$funk('test'); ?>
Rezultat
Ovo je fu()
Ovo je bar(); argument je bio 'test'.
Primer
Primer deklaracije funkcije:
function calculate($a,$b,$c) {
$d = ($a+$b) * $c;
return $d;
}
Primer poziva funkcije:
$x = calculate(4,5,9);
echo "x je ", $x, "<br />;
$y = calculate(($x/3),3,5);
echo "y je ", $y;
Rezultat primera:
x je 81
y je 150
Objekti
PHP podrava objekte kao strukturu
podataka
Objekti se definiu pomou funkcija
Za svaki objekat su vezane osobine i
metode
Osobine su promenljive kojima se dodaju
odreene vrednosti
Metode su funkcije u okviru objekata
kojima mogu da se menjaju njihove
osobine
Kreiranje klase i instance
objekta
Klasa objekta ili prototip se definie klasom ija
je sintaksa
class mojObjekat {
[[deklaracijaOsobine1] osobina1;]
[[deklaracijaOsobine2] osobina2;]
[[deklaracijaMetode1] metoda1;]
[[deklaracijaMetode2] metoda2;]}
Instanca objekta se definie pomou naredbe
new
mojaInstanca=new mojObjekat
Osobine klase mogu biti naknadno definisane
Deklaracije osobine
Deklaracija osobine moe biti
public moe se menjati sa bilo kog
mesta direktno
private moe se menjati samo
pomou metode objekta
protected nepoznata je van objekta
<?php
class Math {
const pi = 3.14159;
}
echo " Math::pi = ,Math::pi;
?>
Pozivanje statikih osobina i
metoda
Statike osobine i metode se takoe mogu zvati bez instanciranja objekta
Primer
<?php
class Poseta{
private static $posetioci = 0;
function __construct(){
self::$posetioci++;}
static function izbrojPosetioce(){
return self::$posetioci;}}
$posete = new Poseta();
echo Poseta::izbrojPosetioce()."<br />";
$posete2 = new Poseta();
echo Poseta::izbrojPosetioce()."<br />";
echo $posete -> izbrojPosetioce();
?>
Rezultat primera:
1
2
2
Nasleivanje izmeu klasa
Primer:
<?php
class SimpleClass
{ public $var = 'a default value';
public function displayVar() {
echo $this->var;}
}
class ExtendClass extends SimpleClass
{
public function displayVar()
{echo "Extending class <br />";
parent::displayVar();
}
}
$extended = new ExtendClass();
$extended->displayVar();
?>
Rezultat:
Extending class
a default value
2. Kontrola toka
Ternarni operator
Naredba if-else
Naredba switch
Petlje
for petlja
while petlja
Izlazi iz blokova
break
continue
goto
Naredbe include, require
Ternarni operator
Sintaksa:
logIzraz ? izraz1 : izraz2
gde je izraz log_izraz bilo koji izraz iji
rezultat je vrednost logikog tipa. Ako je
rezultat izraza true, onda se izvrava
izraz1, u suprotnom izraz2.
Primer:
Primer:
if ($x == 8) {
$y=$x;
}
else {
$z=$x;
$y=$y*$x;
}
Kontrola toka - if
Jo jedan primer:
if ($mesec == 1)
$ime_meseca = Januar;
else if ($mesec == 2)
$ime_meseca = Februar;
else if ($mesec == 3)
$ime_meseca = Mart;
else if ($mesec == 4)
$ime_meseca = Maj;
else
....
else if ($mesec == 12)
$ime_meseca = Decembar;
Kontrola toka - switch
Sintaksa
switch (izraz) {
case vr1: naredbe1; [break;]
...
case vrN: naredbeN; [break;]
[default: naredbeDef;]
}
Kontrola toka - switch
Primer:
switch($mesec) {
case 1: $ime_meseca = Januar; break;
case 3: $ime_meseca = Mart; break;
case 5: $ime_meseca = Maj; break;
case 7: $ime_meseca = Jul; break;
case 8: $ime_meseca = Avgust; break;
case 10: $ime_meseca = Oktobar; break;
case 12: $ime_meseca = Decembar; break;
case 4: $ime_meseca = April ; break;
case 6: $ime_meseca = Jun; break;
case 9: $ime_meseca = Septembar; break;
case 11: $ime_meseca = Novembar; break;
case 2: $ime_meseca = Februar ;
}
Petlje - while
Sintaksa:
[inicijalizacija;]
while(logIzraz){
naredbe;
}
Primer:
$i=1;
while($i<=10){
echo $i, "<br />";
$i=$i+1;
}
Petlje - do-while
Sintaksa:
[inicijalizacija;]
do {
naredbe;
} while (logIzraz);
Primer:
$i=1;
do {
echo $i, "<br />";
$i=$i+1;
} while($i<=10)
Petlje - for
Sintaksa:
for(inicijalizacija; logIzraz; iteracija){
naredbe;
}
Primer:
for($i=1; $i<=10; $i++){
echo $i, "<br />";
}
Petlje - foreach
Sintaksa:
foreach (izrazNiza as [index=>] vrednost) {
naredbe;
}
Primer:
$a = array(1, 2); $b= array(2=>4);
foreach (($a+$b) as $v) {
echo Vrednost \$a je $v. ";}
Rezultat:
Vrednost $a je 1. Vrednost $a je 2. Vrednost
$a je 10.
Kontrola toka - break
Primer:
1:{
2: {
3: {
echo pre break-a;
break 2;
}
echo ovo nee biti prikazano;
}
echo posle break-a;
}
Rezultat:
pre break-a posle break-a
Kontrola toka - break
Primer:
1:{
2: {
3: {
echo pre break-a;
break 3;
}
echo ovo nee biti prikazano;
}
echo posle break-a;
}
Rezultat:
pre break-a ovo nee biti prikazano posle break-a
Kontrola toka - continue
Takoe moe koristiti numeriki argument
Primer:
for($i=0; $i<10; $i++){
echo $i+ ;
if ($i%2 ==0)
continue;
echo <br />;
}
Rezultat:
01
23
45
67
89
Komanda toka goto
Primer:
<?php
goto a;
echo 'Fu';
a:
echo 'Bar';
?>
Komanda include
Primer
poziv.php
<?php
$boja = zelena';
$voce = jabuka';
?>
test.php
<?php
echo Jedna $boja $voce";
include poziv.php';
echo Jedna $boja $voce";
?>
Rezultat skripta test.php
Jedna
Jedna zelena jabuka
Naredba include_once ukljuuje fajl samo ako nije bio prethodno
ukljuen.
Komanda require
Komanda require je ista kao
komanda include samo u njenom
sluaju ukoliko se fajl ne nae
obustavlja se dalje izvrenje
programa.
Komanda require_once ukljuuje
fajl samo ako nije prethodno
ukljuen.
2. PHP funkcije
Funkcije nizova
Funkcije sa uzorcima za
pretraivanje
Funkcije sa stringovima
Matematike funkcije
Funkcije sa datumom i vremenom
Funkcija nizova print_r
Slui za ispisivanje nizova
Primer:
$glavniGradovi
=array(Srbija=>Beograd,
Francuska=> Pariz, Belgija=>
Brisel);
print_r($glavniGradovi);
Rezultat:
Array ( [Srbija] => Beograd [Francuska]
=> Pariz [Belgija] => Brisel )
Funkcija nizova list
Primer:
$glavniGradovi = "Beograd|Pariz|Brisel";
list($a[0],$a[1],$a[2])=explode("|",
$glavniGradovi);
print_r($a);
Rezultat:
indeksima i vrednostima
Kombinovanje nizova
Funkcije:
array_combine(niz1,niz2) daje nov niz u
kome vrednosti prvog niza postaju indeksi
drugog niza
array_merge(niz1,niz2) daje novi niz
spajanjem dva niza. Ukoliko su dva indeksa
ista, uzima se indeks drugog niza, kod
operatora + je suprotno.
array_slice(niz1,ofset[,duzina]) daje novi niz
kao deo niza date duine poev od indeksa sa
rednim brojem ofset
array_splice(niz1,ofset[,duzina][,niz2]) daje
niz u kome je obrisan deo niza date duine
poev od ofseta, i eventualno ga zamenjuje
drugim nizom
Kombinovanje nizova
Funkcije:
array_intersect(niz1,niz2) daje niz svih
vrednosti koje su zajednike za dva niza
array_intersect_assoc(niz1,niz2) daje niz
svih parova indeks-vrednost koje su
zajednike za dva niza
array_diff(niz1,niz2[,niz3]) daje vrednosti
prvog niza koje se ne nalaze u narednim
nizovima koji su argumenti funkcije
Pretraivanje pomou
uzoraka
Postoji dve vrste uzoraka
POSIX
PCRE Perl Compatible Regular
Expression
Perl uzorci su najpopularniji, i isti
kao i kod Javascript-a
Uzorak
Uzorak je niz znakova i specijalnih
znakova
Sintaksa:
imeUzorka = /mustra/atributi;
Gde je mustra niz znakova i specijalnih
znakova, a atributi su znakovi koji
specificiraju nain apliciranja mustre.
Sintaksa mustri:
http://www.php.net/manual/en/regexp.re
ference.php
Specijalni znaci u uzorcima
Karakter Predstavlja
\cx control-x
\t Tab znak
\n Nova linija
\s Blanko znak
Izvravanje case-insensitive
i
ispitivanja.
Izvrava globalno ispitivanje,
znai pronai e se sva
pojavljivanja definisanog
g
uzorka, a nee se ispitivanje
zaustaviti posle prvog
pronalaska uzorka.
^[a-zA-Z0-9_\.\+\-]+@([a-zA-Z0-9]|[a-zA-
Z0-9][a-zA-Z0-9_\-]
{0,61}[a-zA-Z0-9])(\.([a-zA-Z0-9]|[a-zA-Z0-
9][a-zA-Z0-9_\-]{0,61}[a-zA-Z0-9]))*$
Funkcije uzorka
Funkcije:
preg_grep(imeUzorka,imeNiza) daje niz sa svim
elementima niza koji u sebi sadre uzorak
preg_match(imeUzorka,imeStringa[,nizUzoraka])
daje listu poduzoraka datog uzorka u zadatom
stringu koji se uva u zadatom nizu
preg_replace(imeUzorka,imeStringa,imeNiza)
zadati uzorak se zamenjuje stringom u datom nizu
stringova (ili nizu)
preg_split(imeUzorka,imeStringa) stvara niz
delova teksta koji su razdvojeni zadatim uzorkom
Funkcije uzorka - primer
Primer:
<?php
$delimitedText=+Jason+++++++++++
+Columbus+++OH;
$fields=preg_split(/\+{1,}/,$delimitedText);
foreach($fields as $field) echo $field.<br />;?>
Rezultat:
Jason
Columbus
OH
Funkcije uzorka primer 2
Primer:
<?php
preg_match(/^[0-9a-zA-Z\.]+\.(gif|jpg|png|
jpeg)$/, slika.jpg,$niz); print_r($niz); ?>
Rezultat:
Array([0]=>slika.jpg [1]=>jpg)
Kada bi bila slika.jpge rezultat bi bio prazan niz
Funkcije uporeenja
stringova
Funkcije:
strlen(string) duina stringa
strspn(string1,string2) daje duinu
segmenta u kome se nalaze samo znaci
iz drugog stringa
Manipulacija stringovima
Funkcije:
strtolower(string) sva slova se
menjaju u mala
strtoupper(string) sva slova se
menjaju u velika
ucfirst(string) prvo slovo se menja u
veliko
Dodavanje i oduzimanje od
stringova
Funkcije:
ltrim(string1,string2) oduzimaju se znaci sa
leva prvog stringa koji pripadaju drugom
stringu
rtrim(string1,string2) oduzimaju se znaci sa
desna prvog stringa koji pripadaju drugom
stringu
trim(string1,string2) oduzimaju se znaci s
krajeva prvog stringa koji pripadaju drugom
stringu
str_pad(string1,duzina,string2[,tip]) dodaje
se drugi string prvom stringu dok se ne
dopuni do duine, tip moe biti
STR_PAD_LEFT, STR_PAD_RIGHT,
STR_PAD_BOTH
Jo neke funkcije stringova
Funkcije:
explode(separator,string) daje niz delova
stringa koji su razgranieni znakom koji je
separator
implode (separator,niz) obrnuto od explode
strpos(string,podstring) nalazi prvu poziciju
podstringa u stringu
strrpos(string,podstring) nalazi poslednju
poziciju podstringa u stringu
substr_count(string,podstring) - broji broj
nepreklapajuih podstringova u stringu
Sortiranje niza - primer
Primer:
<? php
function sortirajDatume($a,$b){
If ($a=$b) return 0;
list($adan,$amesec,$agodina)=explode(-,$a);
list($bdan,$bmesec,$bgodina)=explode(-,$b);
$amesec=str_pad($amesec,2,0,STR_PAD_LEFT);
$bmesec=str_pad($bmesec,2,0,STR_PAD_LEFT);
$adan=str_pad($adan,2,0,STR_PAD_LEFT);
$bdan=str_pad($bdan,2,0,STR_PAD_LEFT);
$a=$agodina.$amesec.$adan;
$b=$bgodina.$bmesec.$bdan;
return ($a > $b ? 1 : -1);}
Sortiranje niza - primer
$datumi = array(7-10-2007,6-2-2008,30-12-
2008);
sort($datumi);
print_r($datumi);
echo <br />;
usort($datumi,sortirajDatume);
print_r($datumi);}
Rezultat:
Array ( [0] => 30-12-2008 [1] => 6-2-2008 [2] => 7-10-2007)
Array ( [0] => 7-10-2007 [1] => 6-2-2008 [2] => 30-12-2008)
Matematike funkcije
Veliki broj matematikih funkcija je
na raspolaganju, mogu se nai na:
http://www.php.net/manual/en/book.
math.php
Datum i vreme
Funkcije koje se tiu datuma i
vremena mogu se nai na:
http://www.php.net/manual/en/refs.
calendar.php
3. PHP u praksi
PHP interfejsi preko superglobalnih
promenljivih
Obrada podataka iz formulara
Aploudovanje fajlova
Rad sa fajlovima
PHP sesije i kolaii
PHP e-mail
PHP autentifikacija
Superglobalne promenljive
Superglobalne promenljive su interfejsi
PHP programa sa spoljnom okolinom
preko kojih razmenjuju informacije
Neke vane superglobalne su sledee:
$_SERVER, $_GET, $_POST, $_FILES,
$GLOBALS, $_COOKIE, $_SESSION,
$_ENV
Superglobalne promenljive (superglobals)
se mogu nai na:
http://us2.php.net/manual/en/reserved.va
riables.php
Superglobalna $_SERVER
$_SERVER je niz sa informacijama o hostu i
serveru
Neki elementi niza $_SERVER
$_SERVER[HTTP_REFERER] URL veb adrese sa koje
se dolo na datu stranu
$_SERVER[REMOTE_ADDR] klijentova IP adresa
$_SERVER[REQUEST_URI] relativna putanja do
zadatog fajla, ukljuujui i upite pomou get metode
$_SERVER[HTTP_USER_AGENT] operativni sistem i
brauzer klijenta
$_SERVER[PHP_SELF] skript koji se izvrava, ime
fajla ukljuujui relativnu putanju. Konstanta __FILE__
jeste magina (magic) konstantna i daje kompletno ime
fajla ukljuujui i absolutnu adresu
Superglobalna $_GET
$_GET je niz koji sadri parametre koji su
prosleeni metodom get
HTTP metoda get se koristi kada se preuzima
sadraj sa servera, i njeni parametri se
prosleuju kroz URL
Stranice dobijene get metodom mogu da se
memoriu, i uvaju se u keu
Primer, ukucajmo proba u polje za
pretraivanje na www.naslovi.net:
http://www.naslovi.net/search.php?q=proba
Tada je $_GET[q] jednak proba
Superglobalna $_POST
$_POST je niz parametara koji se prosleuju kroz metod
post, koristei atribute name
Primer:
<html>
<form action=http://localhost/upis.php method=post>
<p> e-meil: <br /> <input type=text name=emeil />
</p>
<p> ifra: <br /> <input type=password name=ifra />
</p>
<input type=submit name=upis value=Upii se! />
</ form>
</html>
U fajlu upis.php
<?php echo $_POST[email]; ?>
Supeglobalna $_POST
Pomou HTTP metode post se alju podaci odvojeno kroz
formular
Podaci poslati post metodom se ne mogu memorisati
(bookmark) niti keirati. Zbog toga pruaju veu
bezbednost prenosa. Podaci nisu ograniene duine kao
kod get metode.
Klijent alje serveru
POST /formulari/upis.php HTTP/1.1
Host: primer.rs
Content-Type: application/x-www-form-urlencoded
ime=Pera&telefon=063-330-754
Server odgovara
HTTP/1.1 201 Created
Date:
Content-Length: 0
Location:http://primer.rs/formulari/upis.php
Superglobalna $_FILE
$_FILE je matrica koja se koristi kod
aploudovanja fajlova.
Elementi ove matrice opisuju zadati fajl:
$_FILE[nameAtribut][name] ime fajla koji
je aploudovan kroz input tag iji je name
atribut jednak nameAtribut
$_FILE[nameAtribut][type] tip fajla
$_FILE[nameAtribut][size] veliina fajla
$_FILE[nameAtribut][tmp_file] privremeno
ime fajla
Superglobalna $_FILE
Jo jedan element ove matrice:
$_FILE[nameAtribut][error] opisuje greku
do koje je dolo pri aploudovanju fajla, moe
imati sledee vrednosti:
UPLOAD_ERR_OK: fajl je uspeno aploudovan
UPLOAD_ERR_INI_SIZE: fajl prelazi maksimalnu
veliinu dozvoljenu parametrom upload_max_filesize
specificiranu u php.ini
UPLOAD_ERR_FORM_SIZE: fajl prelazi max veliinu
specificiranu u formularu parametrom
MAX_FILE_SIZE (ne koristi se)
UPLOAD_ERR_PARTIAL: fajl je samo delimino
aploudovan
UPLOAD_ERR_NO_FILE: fajl nije bio specificiran
Superglobalna $_COOKIE
$_COOKIE je niz koji nosi informacije o
kolaiima.
Indeksi ovog niza su imena kolaia, a
vrednosti su vrednosti kolaia.
Kolaii se setuju funkcijom:
setcookie ( ime [, vrednost [, rok [, putanja [,
domen [, zatita [, httponly ]]]]]] )
U php.ini se definie veliina bafera u kojem
se uva html strana pre slanja, da ne bi
zaglavlje bilo poslato pre setovanja kolaia,
npr:
output_buffering=1024
Superglobalna $_SESSION
$_SESSION je niz indeksa (kljueva)
i vrednosti koji se vezuje za
korisnika.
Sesija se generie pomou funkcije
start_session() kojom se kolai ija
je vrednost jednaka SID (ID sesije)
alje korisniku.
Rad sa formularima
Primer formulara u jednom fajlu upis2.php:
<?php
if (isset($_POST["upis"])){
else {
echo <<<EOT
<form action="http://localhost/upis2.php" method="post">
<p> E-meil: <br /> <input type="text" name=emeil" /> </p>
<p> ifra: <br /> <input type="password" name="sifra"/> </p>
<input type="submit" name="upis" value="Upii se!" />
</form>
EOT;
}?>
Rad sa formularima
Prosleivanje promenljivih
od PHP ka JavaScript-u
Primer:
<?php
$user_id = $_GET["uid"]; ?>
<script type=text/javascript">
var user_id = <?php echo($user_id);?>;
alert("Your user ID is:" + user_id);
</script>
Rad sa formularima:
PHP i JavaScript
Primer fajla upis3.php:
<html>
<form action="http://localhost/upis3.php" method=post>
<p> e-meil: <br /> <input type="text" name="emeil" ></p>
<p> ifra: <br /> <input type="password" name="sifra"/>
</p>
<input type="submit" name="upis" value="Upii se!" />
</form>
<?php if (isset($_POST["upis"])){
$x='emeil;?>
<script type="text/javascript">
alert ("Emeil je: <?php echo $_POST[$x]; ?>");
</script>
<?php } ?>
</html>
Rad sa formularima:
PHP i JavaScript
Rad sa formularima:
izbor opcija
Primer formulara sa listom u fajlu checkbox.php, daje niz sa value
atributiima izabranih polja:
<?php
echo <<<EOT
Izaberite omiljene programske jezike? <br />
<form action="checkbox.php" method=post>
<input type="checkbox" name="jezici[]" value="csharp"/> C# <br />
<input type="checkbox" name="jezici[]" value="jscript"/> JavaScript <br />
<input type="checkbox" name="jezici[]" value="perl"/> Perl <br />
<input type="checkbox" name="jezici[]" value="php"/> PHP <br />
<input type="submit" name="upis" value="Poalji!" />
</form>
EOT;
if (isset($_POST['upis']))
{echo "Izabrali ste jezike: <br />";
foreach($_POST['jezici'] AS $jezik) echo "$jezik <br />";}
?>
Rad sa formularima:
izbor opcija
Konfiguracija za
aploudovanje fajlova
U php.ini fajlu se mogu konfigurisati:
file_uploads On|Off
max_execution_time brojSekundi
memory_limit brojMegaBajtaM (za dati
skript)
upload_max_filesize brojMegaBajtaM
upload_tmp_dir imeStringa
post_max_size brojMegaBajtaM (koliina
podataka po jednoj post metodi vei od
upload_max_filesize)
Aploudovanje fajla
Primer fajla aploudFajla.php :
<form action="aploudFajla.php"
enctype="multipart/form-data"
method=post>
Broj indeksa: <br /> <input type="text"
name=brojIndeksa" /> <br />
Domai: <br /> <input type="file"
name="domaci" /> <br />
<input type="submit" name="posalji"
value="Poalji!" />
</form>
Aploudovanje fajla
<?php
define ("fajloviDomaci","C:\Program
Files\wamp\www\domaci\\");
if (isset($_FILES['domaci'])){
if (is_uploaded_file($_FILES['domaci']['tmp_name'])){
if ($_FILES['domaci']['type'] != 'application/pdf'){
echo "<p> Domai moe biti aploudovan samo u *.pdf
formatu </p>";}
else {
$brojIndeksa=$_POST[brojIndeksa'];
$rezultat=move_uploaded_file($_FILES['domaci']
['tmp_name'],fajloviDomaci._$brojIndeksa.pdf");
if ($rezultat==1) echo "<p> Fajl je uspeno aploudovan.
</p>";
else echo "<p> Fajl nije aploudovan, pokuajte ponovo.
</p>";}}}
?>
Aploudovanje fajla
<?php
define ("fajloviDomaci","C:\Program Files\Apache Software
Foundation\Apache2.2\htdocs\domaci\\");
if (isset($_FILES['domaci'])){
if (is_uploaded_file($_FILES['domaci']['tmp_name'])){
if ($_FILES['domaci']['type'] != 'application/msword'){
echo "<p> Domai moe biti aploudovan samo u *.doc formatu
</p>";}
else {
Aploudovanje fajlova
sa vremenskim oznakama
Nastavak primera:
$datum=date("d-m-y");
if (!is_dir(fajloviDomaci.$datum)) {
mkdir(fajloviDomaci.$datum);}
$brojIndeksa=$_POST['brojIndeksa'];
$rezultat=move_uploaded_file($_FILES['domaci']
['tmp_name'],fajloviDomaci.
$datum."\\"."_$brojIndeksa.doc");
session.cookie_domain string
Konfiguracija sesija
Parametri koji mogu da se konfiguriu
u php.ini
session.gc_maxlifetime brojSekundi
session.use_trans_sid = 0|1
poaljioca
smtp_port ceoBroj po defoltu 25
if (in_array($_SERVER['PHP_AUTH_USER'].":"
.md5($_SERVER['PHP_AUTH_PW'])."\n", $sifLoz))
$autorizovan = TRUE;}
if (! $autorizovan) {
header('WWW-Authenticate: Basic Realm');
header('HTTP/1.0 401 Neautorizovan');
/* Ako korisnik ukuca Cancel dobija se sledee */
print('Morate dati ispravne login podatke!');
exit;}
echo "Materijal sa restrikcijama ..."
?>
Autentifikacija: Primer kada
su lozinke u fajlu
PHP i DOM (Document
Object Model)
DOM je interfejs sa veb stranom kao
hijerarhijskom strukturom
Pomou PHP-a se mogu itati,
dopisivati, ili menjati pojedini
elementi veb strane.
Sve klase koje ine DOM:
http://php.net/manual/en/book.dom.p
hp
DOM klasa DOMNode i njeni
metodi
DOMNode::appendChild Dodaje dete
DOMNode::cloneNode Klonira nod (element)
DOMNode::getNodePath Nalazi putanju do
noda
DOMNode::hasAttributes Proverava da li nod
ima atributa
DOMNode::hasChildNodes Provera da li nod
ima dece
DOMNode::insertBefore Dodaje novi vor pre
datog noda
DOMNode::removeChild Uklanja dete
DOMNode::replaceChild Zamenjuje dete
...
Osobine DOMNode klase
nodeName, nodeValue, nodeType,
parentNode, childNodes, firstChild,
lastChild, previousSibling,
nextSibling, attributes,
textContent...
DOM klasa DOMDocument i
njeni metodi
DOMDocument::createElement Kreiraj novi element
DOMDocument::createTextNode Kreiraj novi tekst
element
DOMDocument::getElementById Nadji element sa
datim ID-em
DOMDocument::getElementsByTagName Nadji
elemente sa datim imenom taga
DOMDocument::loadHTML Upii HTML element iz
stringa
DOMDocument::loadHTMLFile Upii HTML element iz
fajla
DOMDocument::saveHTML Sauvaj HTML element u
string
DOMDocument::saveHTMLFile Sauvaj HTML element u
fajl
...
DOM klasa DOMElement i
njene metode
DOMElement::getAttribute Vrednost atributa
DOMElement::getAttributeNode Daje atribut ali
kao element hijerarhijskog dokumenta
DOMElement::getElementsByTagName Daje
elemente sa datim tagom
DOMElement::hasAttribute Proverava da li element
ima dati atribut
DOMElement::removeAttribute Uklanja atribute
DOMElement::removeAttributeNode Uklanja
atribut definisan kao element
DOMElement::setAttribute Dodaje nov atribut
DOMElement::setAttributeNode Dodaje novi
atribut kao element
...
Primer rada sa DOM
klasama
Primer rada sa DOM klasama
<?php
$domDokument = new DOMDocument('1.0', "UTF-8");
$domElement = $domDokument->
createElement(field,neki podaci);
$domAtribut = $domDokument->
createAttribute(ime);
$domAtribut->value = vrednost atributa;
$domElement->appendChild($domAtribut);
$domDokument->appendChild($domElement);
$stringRezultat= $domDokument->saveXML();
echo $stringRezultat;
?>
Rezultat
<?xml version="1.0" encoding="UTF-8"?>
<field ime=vrednost atributa">neki podaci</field>
Primer rada sa vorovima
Primer
<?php
$doc = new DOMDocument();
$foo = $doc->createElement("foo");
$doc->appendChild($foo);
$bar = $doc->createElement("bar");
$foo->appendChild($bar);
$bazz = $doc->createElement("bazz");
$foo->appendChild($bazz);
echo $doc->saveXML();?>
Dobija se:
<foo>
<bar></bar>
<bazz></bazz>
</foo>
Primer rada sa DOM
hijerarhijskom strukturom
<?php
$xml = <<<XML <?xml version="1.0"?>
<userdata>
<name>Jovan</name>
<name>Pera</name>
</userdata> XML;
$doc = new DOMDocument();
$doc->loadXML($xml);
$names = $doc->firstChild->
getElementsByTagName("name");
$myname = $names->item(0)->nodeValue;
echo ($myname);
4. PHP i baze podataka
Uvod
Konfigurisanje privilegija
mySQL komande
PHP komande za rad sa mySQL (my
Structured Query Language)
bazama podataka
MySQL
Najpoznatija i najvie koriena open-sors
baza podataka zasnovana na SQL jeziku
Korienje ove baze podataka je besplatno
MySQL komande su neosetljive na veliinu
slova (case sensitive), ali je praksa se piu
velikim slovima. Promenljive su osetljive na
veliinu slova.
Uputstvo za korienje MySQL baze se moe
nai na:
http://dev.mysql.com/doc/refman/5.6/en/
index.html
Trite baza podataka 2013
www.vertabelo.com
MySQL i druge open-sors
baze 2014
jelastic.com
Baze podataka
Baze podataka se sastoje iz tabela, koje
se sastoje iz kolona
Korisnici mogu pristupati ovim bazama,
tabelama, kolonama u zavisnosti od
svojih privilegija koje se prethodno
konfiguriu
Pristup moe biti radi kreiranja baze,
brisanja baze, dodavanja ili menjanja
informacija u bazi, i brisanja informacija u
bazi
Konfigurisanje MySQL
baza podataka i privilegija
Moe se pristupiti koristei razne klijente:
mysql klijent podrazumeva el komandni
interfejs, i moe da konfigurie baze podataka
i da im pristupa
mysqladmin klijent se fokusira na
administrativne komande
MySQL Administrator je GUI klijent razvijen od
strane mySQL tima
phpMyAdmin je GUI klijent prilagoen PHP-u
Organizacija privilegija
Privilegije se zapravo nalaze u mysql bazi
podataka, koja se sastoji iz sledeih tabela:
user odreuje korisnike koji mogu da se loguju na
server sa bilo kog hosta i njihove privilegije
db odreuje koji korisnici mogu da pristupe kojim
bazama podataka
host odreuje hostove sa kojih se moe pristupiti
kojim bazama
tables_priv: odreuje koji korisnici mogu da pristupe
kojim tabelama date baze
columns_priv: odreuje koji korisnici mogu da
pristupe kojim kolonama date tabele date baze
mysql tabela user
Column Datatype Null Default
Select_priv enum(N, Y) No N
Insert_priv enum(N, Y) No N
Update_priv enum(N, Y) No N
mysql tabela db
Column Datatype Null Default
Db char(64) binary No No
Select_priv enum(N, Y) No N
Insert_priv enum(N, Y) No N
Update_priv enum(N, Y) No N
mysql tabela host
Column Datatype Null Default
Db char(64) binary No No
Select_priv enum(N, Y) No N
Insert_priv enum(N, Y) No N
Update_priv enum(N, Y) No N
Delete_priv enum(N, Y) No N
mysql tabela tables_priv
Column Datatype Null Default
Host char(60) No No
Db char(64) No No
User Char(16) No No
Table_name char(64) No No
Grantor Char(77) No No
Column_priv skupKolona No No
mysql tabela columns_priv
Column Datatype Null Default
Host char(60) No No
Db char(64) No No
User Char(16) No No
Table_name char(64) No No
Column_name Char(64) No No
Column_priv skupPrivKolona No No
mysql tabela procs_priv
Column Datatype Null Default
Host char(60) No No
Db char(64) No No
User Char(16) No No
Routine_name char(64) No No
Routine_type enum No No
Proc_priv skupKolona No No
http://dev.mysql.com/doc/refman/5.6/
en/grant.html
MySQL komande
Najvanije komande: CREATE,
DROP, SELECT, INSERT, DELETE,
UPDATE
Kompletan spisak komandi:
http://dev.mysql.com/doc/refman/5
.6/en/sql-syntax.html
Kreiranje baze i brisanje
baze
Baza podataka se kreira jednostavnom
naredbom:
CREATE DATABASE imeBaze;
Baza podataka se brie naredbom
DROP DATABASE imeBaze;
U bazu se ulazi naredbom
USE imeBaze;
Alternativno tabela i kolone se zovu:
imeBaze.imeTabele i
imeBaze.imeTabele.imeKolone
Kreiranje tabele
CREATE TABLE [IF NOT EXISTS] imeTabele (
imeKolone1 tipKolone1 [atributiKolone1],
[imeKolone1 tipKolone2 [atributiKolone2],]);
Primer:
CREATE TABLE zaposleni (
id INT UNSIGNED NOT NULL AUTO_INCREMENT
PRIMARY KEY,
ime VARCHAR(25) NOT NULL,
prezime VARCHAR(25) NOT NULL,
telefon VARCHAR(45) NOT NULL);
Tip i atributi kolona
Tipovi kolona mogu biti INT, FLOAT, DOUBLE, INT
UNSIGNED, DATE, TIMESTAMP, CHAR, NATIONAL
CHAR CHARACTER SET imeAlfabeta, [NATIONAL]
[CHARACTER SET charset_name] VARCHAR
(duina)
Kompletna lista tipova se moe nai na:
http://dev.mysql.com/doc/refman/5.6/en/data-
type-overview.html
Atributi kolona su: DEFAULT vrednost,
AUTO_INCREMENT, NOT NULL, PRIMARY KEY,
UNIQUE,... Kompletna lista:
http://dev.mysql.com/doc/refman/5.6/en/create-
table.html
Menjanje tabela
Tabela se menja komandom
ALTER TABLE imeTabele [ADD COLUMN|
CHANGE|DROP] [imeKolone1]
imekolone2
[,tipKolone2[,atributiKolone2]] [AFTER
imekolone3]
Primer:
http://www.php.net/manual/en/
class.mysqli.php
PHP klase za rad sa MySQL
bazom
Razvijen je skup funkcija za rad sa
MySQL bazama, od kojih su najvanije:
mysqli::query, mysqli_result::fetch_all,
mysqli::close, ...
Kompletna lista se moe nai na stranici
http://www.php.net/manual/en/class.
mysqli.php
Uspostavljanje i raskidanje
veze sa bazom
Sintaksa
link=mysqli_connect(host[,korisnik[,lozinka[
, baza]])
mysqli_close(link)
Primer:
$l=mysqli_connect(localhost, aleks,
12cikpogodi);
mysqli_close($l);
Uspostavljanje i raskidanje
veze sa bazom pomou klasa
Sintaksa
link= new mysqli(host[,korisnik[,lozinka[,
baza]])
link->close()
Primer:
$veza=mysqli_connect ('localhost');
$sql='CREATE DATABASE IF NOT EXISTS
katedra DEFAULT COLLATE
utf8_general_ci';
mysqli_query ($veza,$sql);
Kreiranje, brisanje i
ispisivanje baza-klase
Sintaksa kreiranja i brisanja baza:
$veza->query (upit)
Primer kreiranja baze:
$veza=new mysqli('localhost');
$sql='CREATE DATABASE IF NOT
EXISTS katedra DEFAULT
CHARACTER SET utf8';
$veza->query($sql);
Kreiranje, brisanje i
ispisivanje tabele-klase
Primer kreiranja baze:
$veza=new mysqli('localhost, NULL,
NULL, firma);
$sql=CREATE TABLE Zaposleni
(ID int PRIMARY KEY,
Prezime varchar(255),
Ime varchar(255),
Adresa varchar(255),
Grad varchar(255));
$veza->query($sql);
PHP komande za itanje iz
baze
Metode klase mysqli_result na
http://www.php.net/manual/en/class.
mysqli-result.php
Metode:
$rez=$veza->mysqli($upit);
$rez->fetch_all();
$rez->fetch_assoc();
$rez->fetch_array();
itanje iz baze pomou
PHP-a
Primer:
<?php
if isset($_POST[unesi]){
$veza=new mysqli(localhost, aleks, tajna,
kompanija);
$upit=SELECT proizvod,cena FROM proizvodi
WHERE cena<{$_POST[maxcena]};
$rez=$veza->query($upit);
while ($red=$rez->fetch_assoc()){
echo $red[proizvod].:. $red[cena];}}
?>
Brisanje iz baze pomou
PHP-a
Primer:
<?php
if isset($_POST[unesi]){
$veza=new mysqli(localhost, aleks, tajna,
kompanija);
for ($i=0; $i<count($_POST[IDreda]); $i++){
$IDreda=$_POST[IDreda][$i];
$upit=DELETE FROM proizvodi WHERE
IDreda=$IDreda;
$rez=$veza->query($upit);}
if ($rez) echo Podaci izbrisani!
$veza->close();}
?>
Upis u bazu pomou PHP-a
Primer:
<?php
if isset($_POST[submit]){
$veza=new mysqli(localhost, aleks, tajna, kompanija);
$IDproizvoda=$_POST[IDproizvoda];
$naziv=$_POST[naziv];
$cena=$_POST[cena];
$upit=INSERT INTO proizvodi SET
IDproizvoda=$IDproizvoda, naziv=$naziv
cena=$cena;
$rez=$veza->query($upit);
If ($rez) echo Podaci ubaeni!;}
?>
PHPMyAdmin
Users: dodavanje korisnika
Users: dodavanje korisnika
Ide se na Add User
Izabere se korisniko ime, ifra, i
host
Ovi podaci se koriste kada se
konektuje na server pomou
komandi mysqli_connect(), ili new
mysqli()
Rad sa bazama i tabelama
Export: uvanje baze
Export: uvanje baze
Ide se sa localhost-a (NE udje se
ubazu) na Custom opciju za Export
Method
Izabere se baza
Dodaju se komande DROP, CREATE,
USE, baze
Zatim klikne na Go
Domai mogu da se rade i
na
Portabilan XAMPP
http://portableapps.com/apps/develo
pment/xampp
Kodiranje fajla u brauzeru
Na (X)HTML stranici se definie
kodiranje (UTF-8)
Alternativno, u httpd.conf fajlu se doda
komanda
AddDefaultCharset UTF-8
Ili se u .htaccess fajl doda komanda i
onda se u folderu u kome je .htaccess
fajl primenjuje pravilo
AddDefaultCharset UTF-8
Kodiranje znakova u bazi
Pri kreiranju baze, tabela i kolona
definie se njihov alfabet, odnosno
CHARACTER SET i COLLATION
Da bi se u bazi videla slova srpske
azbuke, na primer, potrebno je
poslati podatke bazi koristei utf-8
kodiranje naredbom
mysqli_set_charset($veza,"utf8");