You are on page 1of 235

Visoka kola strukovnih studija za

informacione i komunikacione tehnologije


Beograd

Osnove PHP-a

Sintaksa php koda


Poetna i krajnja oznaka koda:
1.

<?

?>

2.

<?php

?>

3.

<script language="php"> </script>

Svi klasini simboli i atributi su preuzeti iz html-a

<?php phpinfo(); ?>

Primer kreiranja php koda

echo je naredba za ispis na ekranu

<html>
<head><title> Pocetak PHP-a</title></head>
<body bgcolor="#000FF">
<?php
echo"<p><hr>";
echo"Tekst ispisan u PHP-u";
?>
</body>
</html>

Primer
<html>
<head>
<title>Moj prvi PHP skript</title>
</head>
<body>
Ako se u tranici nalazi bilo koja
<?php
linija PHP koda, ona se nakon
mora snimiti u formi ime.php
print Zdravo narode!;
?>
</body>
</html>

Eksterni fajl

Kao i kod drugih jezika, kod u PHP-u se moe


direktno pisati na tekuoj stranici ili uvesti kao
spoljanji fajl.
Funkcija include, kompletan sadraj zadatog
spoljanjeg fajla postavlja u stranicu koja je taj
kod pozvala.
Ovaj kod se kopira na mesto
<html>
gde je funkcija include delovala
<body>
<?php
Ovaj deo koda se tada ponaa
include("header.php");
kao sastavni deo poetne stranice ?>
<p> text</p>
</body>
</html>

Sintaksa php oznaka

Svaki iskaz u php-u mora se zavriti sa ;


Iza komande dolaze znaci navoda gde se definie
na ta komanda deluje
echo"Tekst ispisan u PHP-u";

Ukoliko je potrebno prikazati znake navoda a da


se ne tumae kao sastavni deo komande treba u
rei pre navoda staviti \
echo"Ova kua je \"haos\" !";
Ova kua je "haos" !

Komentari su odvojeni sa #, //, /* - */


Prva dva se definiu jednoredno i stavljaju se na
poetak svakog pojedinanog reda, dok su druga
dva za poetak i kraj vierednih komentara

Komentari
<?php
echo "Zdravo, svete!<br>"; // Ovo je komentar u jednom redu
// u stilu jezika C++
/* Ovo je blok komentara
u vie redova. */
echo "Zdravo, jo jednom.<br>";# Ovo je komentar u stilu
# komandnih okruenja Unixa
?>
<?php
/* Sledei red e ispisati, "Ovo nee
ispisati nita."
*/
?>
Ovo nee ispisati <?php # echo "neto"; ?> nita.<br>

Primer
Pored klasinog ispisivanja komandom echo
postoje i specijalni znaci koji ostavljaju dodatne
mogunosti
Prelazak u novi red uticajem servera, ili html-a
echo "Hallo\n";

echo "Hallo<BR>"; Tabela 2.1 Izlazne sekvence u znakovnim


nizovima pod navodnicima
Znak

Znaenje

\n

Nov red

\r

Povratak u prvu kolonu (carriage-return)

\t

Horizontalni tabulator

\\

Obrnuta kosa crta

\"

Znak navoda

\$

Znak za dolar

Promenljive

Poinju rezervisanim simbolom $, nakon ega ide


promenljiva kao u html-u, tj. poinju slovom ili _
Imena promenljivih su keysensitive

Primer:
$pera="Perica Peric";
$broj=15;
$niz[0]=22;
$niz1[22]="milence";

Promenljive u svom imenu mogu da


sadre samo alpha-numerike
karaktre (a-Z, 0-9, and _ )
Promenljive ne smeju da sadre n
space-ove.
Ako promenljiva ima vie rei
moraju biti povezane sa _ ili
meusobno spojene.
($my_string, $myString)

Primer

Primer

Promenljive kod ispisa

<?php
$glumac = "Marlon Brando";
print "$glumac";
// ispisuje Marlon Brando
echo $glumac;
// takoe ispisuje Marlon Brando
print $glumac;
// takoe ispisuje Marlon Brando
print '$glumac';
// ispisuje $glumac
?>

Tipovi podataka
a)
b)
c)
d)
e)
f)

String (tekst)
Integer (Celobrojni broj)
Double (Racionalni broj)
Niz
Objekat
Nepoznati tip
Za razliku od drugih jezika, tip podataka
ne mora da definie programer nego PHP
odluuje kada e koji podatak tumaiti
kao odreeni tip

a) String (tekst)

Stavljanjem pod znake navoda,


promenljiva je automatski postala string,
bez obzira na sadraj
Primer
$x=Pera
$x1=Pera Peric
$y=5
$y1=5.25
$z=Pera Peric 225/25

Spajanje stringova
Spajanje je proces dodavanja novog stinga na kraj prethodnog
Spajanje se vri sa . (U JavaScript-u je to +)

Primer

$x=Pera
$y=Peric
$z=
$ime= $x. $z. $y
Spajanje je mogue i kroz komandu ispisa echo (U JavaScript-u

je to document.write)
Primer

$x=Pera
$y=Peric
echo Ime studenta je: $x , a prezime: $y
Duina stringa odreuje se funkcijom strlen

Primer: echo strlen("Hello world!"); vraa 12

Funkcije za string-ove

b) Integer (Celobrojni broj)

Svaka promenljiva ija je vrednost


celobrojna veliina je automatski
odreena kao tip Integer
Brojne vrednosti se piu bez znakova
navoda
Primer
$x=55
$y=-123
$z=1

c) Double (Racionalni broj)

Svaka promenljiva ija je vrednost


racionalni broj je automatski
odreena kao tip Double
Brojne vrednosti se piu bez znakova
navoda
Primer
$x=0.55
$y=-2.123
$z=1.0

Primer

Proste matematike operacije

Operacije koje se mogu koristiti u PHP-u


su:

Sabiranje (+)
Oduzimanje (-)
Mnoenje (*)
Deljenje (/)
Moduo (%)

Primer
$x=55
$y=-2.123
$z=2*($x+ $y) - $y/3

Operatori
Pored standardnih izdvajaju se sledei:
+=
$x+=5
$x= $x+5
+=
$x+=$y
$x= $x+$y
-=
$x-=5
$x= $x-10
/=
$x/=10
$x= $x/10
*=
$x*=10
$x= $x*10
++
$x++
$x = $x +1
-$x-$x = $x -1

Prioriteti operacija su kao i u standardnoj


matematici

Logiki operatori

Konstante

Promenljive su oznake kojima se neka vrednost


moe dodeliti i u toku koda promeniti
Konstantama se vrednost ne moe menjati
Za konstante se uzimaju one veliine koji su
sigurno fiksne (18% PDV, 3.14 Pi, 0 stepeni taka
leenja...)
Rezervisana re za kreiranje konstante je DEFINE
Primer

define(broj-pi, 3.14);
define(CenaSveske, 50);
define(Skola, Visoka ICT);

Primer

Konverzije

PHP automatski vri konverziju podataka u


procesu nalaenja rezultata neke operacije
Primer:
$x=5
$y=-2.5
$a=12P

$z=$x (5,automatski z vidi kao Integer)


$z=$x* $y (-12.5, automatski z vidi kao Double)
$z=$x* $a (60, jer je prepoznao broj, a P ignorie)

U drugim jezicima ovo nije mogue, nego su


dozvoljene operacije meu istim tipovima
podataka

Gettype i settype

Funkcija gettype moe da utvrdi tip


promenljive
Primer:

$a=12
Echo gettype($a) // vraa rezultat Integer

Funkcija settype moe da promeni tip


promenljive
Primer:

$a=12
settype($a, string);
echo gettype($a) // vraa rezultat String, a ranije
bi bio Integer

Isset, unset i empty

Funkcija isset se koristi da se proveri da li ve postoji


promenljiva sa tim imenom
Echo isset($a) vraa 1 ako ta promenljiva postoji, ili
nita ako ne postoji (moe biti problem)
Funkcija empty (suprotna od isset) se koristi da se
proveri da li ve postoji promenljiva sa tim imenom
Echo empty($a) vraa 1 ako ta promenljiva ne postoji
Funkcija unset se koristi da bi se unitila promenljiva
sa nekim imenom i oslobodio prostor u memoriji
unset($a) brie promenljivu a

Funkcije promenljivih

Rad sa datumima i vremenom

PHP ima ugraene funkcije za prikaz datuma i


vremena u velikom broju formata
Funkcija date i gmdate daje mogunost prikaza
datuma i vremena
Najlaka upotreba je sa echo
Kao argument se oekuje format koji se oekuje za
prikaz
Primer

<?php
echo gmdate(M d Y);
?>

e) Nizovi

Svaki niz mora da sadri oznaku $, ime, uglastu


zagradu, i oznaku elementa niza
Ne mora se inicijalno definisati promenljiva tipa
niz
Ne mora se definisati inicijalna duina niza

Kreiranje niza je mogue:


a) Kreiranjem samo jednog njegovog lana

$ime_niza[0]=
$ime_niza[1]=
$ime_niza[2]=

"Pera";
"Mika";
"Laza";

b) Kreiranjem celog niza


$ime_niza= array ("Pera", "Mika", "Laza")

Primer

Nizovi

Nizovi automatski definiu svoj prvi lan sa


indeksom 0
Moe se promeniti numeracija kao
$ime_niza= array (1=> "Pera", "Mika", "Laza");

Sada je prvi element niza sa indeksom 1

Numeracija ne mora biti ak ni brojevima


$ime_niza= array ( "p1"=> "Pera", "m1"=> "Mika",
"l1"=> "Laza");

Brzo pristupanje elementima niza


for ($brojac=1; $brojac<100; $brojac++)
{ echo (ime_niza[$brojac]) }

Sortiranje nizova

Sortiranje sadraja niza po abecednom redu


je funkcijom sort()
Sintaksa sort(ime_niza)
Ako je kao indeks niza korien neki od
stringova, tada se kao sortiranje koristi
funkcija asort()
Funkcije rsort() i arsort() rade sortiranje u
obrnutom abecednom redu
Funkcija ksort() vri sortiranje sadraja niza
prema indeksima koji su string tipa

Primer

Za niz
$ime_niza[0]=
$ime_niza[2]=
$ime_niza[1]=

"Pera";
"Laza";
"Mika";

Funkcija sort($ime_niza) vraa


$ime_niza[2]= "Laza";
$ime_niza[1]= "Mika";
$ime_niza[0]= "Pera";

Funkcija rsort($ime_niza) vraa


$ime_niza[0]= "Pera";
$ime_niza[1]= "Mika";
$ime_niza[2]= "Laza";

Funkcije spajanja i rastavljanja

Funkcija implode("separator", $ime_niza) od


datog niza kreira string tako to redom uzima
jedan po jedan lan niza i meusobno ih
razdvaja separatorom
Funkcija explode("separator", $ime_niza)
jedinstveni string deli u odnosu na separator i
dodeljuje elementima niza

Primer

Za niz
$ime_niza[0]= "Pera";
$ime_niza[2]= "Laza";
$ime_niza[1]= "Mika";
Funkcija $proba1= implode("," , $ime_niza) daje
$proba1= Pera,Mika,Laza
Funkcija $proba2= explode("," , $proba1) daje
$proba2[0]= "Pera";
$proba2[2]= "Laza";
$proba2[1]= "Mika";

Funkcije nizova

Toliko za sada

Visoka kola strukovnih studija za


informacione i komunikacione tehnologije
Beograd

Naredbe

Naredba if

Sintaksa

if (uslov koji je taan)


jedna linija koda za izvravanje
if (uslov koji je taan)
{
jedna linija koda za izvravanje
druga linija koda za izvravanje
....
}

Primer

if

<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
{
}
?>
</body>
</html>

echo Pozdrav!<br />";


echo " Lep provod za vikend!";
echo Vidimo se u ponedeljak!";

Naredba if - else

Sintaksa

if (uslov)
{
jedna linija koda za izvravanje za taan uslov
....
}
else
{
jedna linija koda za izvravanje za netaan uslov
....
}

Primer

if - else

<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
echo Lep provod za vikend!";
else
echo Prijatan dan!";
?>
</body>
</html>

Naredba if - elseif - else

Sintaksa

if (uslov 1)
{ jedna linija
....}
elseif (uslov 2)
{ jedna linija
....}
else
{ jedna linija
....}

koda za izvravanje

koda za izvravanje

koda za izvravanje

Primer

if - elseif - else

<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
echo Lep provod za vikend!";
elseif ($d=="Sun")
echo " Lepo provedite subotu!";
else echo " Prijatan dan!";
?>
</body>
</html>

Ugnjedavanje
if (uslov)
{
if (uslov 1)
{
jedna linija koda za izvravanje
druga linija koda za izvravanje
....
}
}
else {....}

Primer

Switch - Case

switch ($ime)
{
case "Pera":
echo "Dobar dan Pero";
break;
case "Mika":
echo " Dobar dan Miko ";
break;
case "Laza":
echo " Dobar dan Lazo ";
break;
default:
echo "Dobar dan (vae ime nije poznato programu)";
}

Primer

Petlje While

Ispisivanje reenice 10 puta

$reenica = "Sutra u 15h na as !";


$i = 0;
while ($i<=10)
{
echo $reenica;
$i++;
}

Primer

Petlje While

<html>
<body>
<?php
$i=1;
while($i<=5)
{
echo Broj je " . $i . "<br />";
$i++;
}
?>
</body>
</html>

Primer Petlje Do-While


$reenica = "Sutra u 15h na as !";
$i = 0;
do
{
echo $reenica;
$i++;
}
while ($i<=10)

For petlja
for ($a=1; $a<=10; $a++)
{
echo ("Dobar dan !");
}

for ($a=1; $a<=10; $a++)


{
if ($a%2 == 0)
{ echo ("Broj $a je paran broj !");}
}

Foreach

Koristi se najee kod nizova, i to kada


se ne zna kolika je duina niza da bi se
kreirala klasina for petlja
Ova petlja prolazi kroz sve elemente
<html>
<body>
<?php
$arr=array("one", "two", "three");
foreach ($arr as $value)
{ echo "Value: " . $value . "<br />"; }
?>
</body>
</html>

Foreach

Continue - Break

Funkcije list i each

Problem moe da nastane kada se u niz upisuju


vrednosti sa indeksima koji nisu susedni.
Tada postoji veliki broj "rupa" u nizu i dosta
vremena je potrebno da se izgubi na prikaz svih
podataka, da bi se stiglo do eljenih
Primer
$ime_niza[0]= "Pera";
$ime_niza[92]= "Laza";
$ime_niza[961]= "Mika";
Funkcije list i each omoguavaju da se vrate
samo oni indeksi i elementi koji imaju vrednost

Funkcije list i each

Najea primena je
while (list(Vrednost_indeksa, Sadraj_elementa) =
each (ime_niza)

Ovo znai: Za svaki od elemenata niza ime_niza,


definisati promenljivu Vrednost_indeksa jednaku
indeksu elementa niza i promenljivu
Sadraj_elementa jednaku sadraju elementa.
Ispisivanjem sadraja promenljivih
Vrednost_indeksa i Sadraj_elementa dobija se
indeks i sadraj samo onih elemenata niza koji
imaju neki sadraj

Toliko za sada

Visoka kola strukovnih studija za


informacione i komunikacione tehnologije
Beograd

Preuzimanje podataka
iz formulara

Kreiranje formulara

Formular se kreira u HTML-u


Tag <form> i </form>
Atribut action="stranica_za_obradu.php"
Atribut method moe biti post ili get
Ostali atributi mogu biti: enctype, id,
class, language, name, style, title ...
Primer

<form action="obrada.php" method="post">


....
</form>

JavaScript i PHP zajedno

Skoro uvek se provera popunjenosti ili ispravnosti


podataka pre slanja u bazu vri JavaScript-om
Ako se u formularu koristi taster tipa Submit,
tada e sadraj stranice biti automatski poslat na
adresu definisanu u atributu action, bez
prethodne provera scripta
Da bi se to spreilo, u tag form se stavlja dogaaj
OnSubmit, koji kao rezultat oekuje logiku
promenljivu
Ako ova promenljiva bude true, nastavlja se sa
slanjem podataka PHP-a, i obratno
Vrednost true dodeljuje JavaScropt ako je
provera zadovoljila oekivanja

JavaScript i PHP zajedno


<html>
<head>
<script language="JavaScript">
function Provera()
{
var tel=document.formular1.telefon.value.length
if(tel<5) {alert("Niste upisali ispravan broj telefona !!!") ;
return false;}
else {return true;}
}
</script>
</head>
<body>
<form name="formular1" method="post" action="1.php" onSubmit="return
Provera()">
<p>Telefon: <input type="text" name="telefon"></p>
<input type="submit" name="Poruci" value="Porui" >
<input type="reset" name="Brisanje" value="Brisanje">
</form>
</body>
</html>

Kreiranje linka u body-ju

Kreiranje linka kroz script

Kreiranje linka kroz dogaaj

Method GET
Get govori browser-u da vrednosti koje korisnik
upie u formular doda URL adresi i prosledi ih
eljenoj stranici
Da bi se razlikovala URL adresa od podataka koji se
alju, browser dodaje ? iza adrese ime oznai
poetak podataka
Podaci se alju u formi ime/vrednost
Primer
www.pera.com/obrada.php?ime=mika
Ako postoji vie parova ime/vrednost tada ih
browser razdvaja znakom &
Primer
www.pera.com/obrada.php?ime=mika&prezime=mikic

Method GET
Ukoliko se Get-om alje sadraj tekstualnog polja
koje ima vie rei (textarea), tada se moraju
pamtiti razmaci, ali i svi specijalni karakteri koji su
uneti u tekst
Da bi se ovakav zahtev realizovao definisana je
tablica koja koduje znakove koji se ne mogu
pojaviti u URL adresi, ali se zamenjuju tekstom
Na primer tekst Kurs: Php programiranje! bi
izgledao:
www.pera.com/obrada.php?TextArea=Kurs%3A%20
Php%20programiranje%21

URL kodovanje

Method POST

Za razliku od Get, podaci koji se alju Post


metodom su nevidljivi za korisnika, i ne
dodaju se URL adresi
Oni se prenose u telu HTTP zahteva
Post metod nema ogranienje u smislu
veliine, dok Get ima, zbog ogranienja
duine URL adrese
Nema pravila koje definie koji metod je
bolji, nego se to ostavlja programeru

Veza HTML i PHP stranice


1.

2.

3.

4.

Napraviti HTML stranicu sa tagom form,


atributom action i method
U formularu napraviti elemente koji imaju
definisane name atribute
Napraviti taster Submit za slanje podataka na
php stranu, koja je definisana u atributu
action
Napraviti pomenutu PHP stranicu u kojoj se
poziva $a= $_POST[' atribut_name '], i
podatak je iz HTML strane doao u PHP
stranicu u promenljivu $a

Prenos iz tekstualnog polja


Prenos sadraja tekstualnog polja u PHP
se vri po atributu name
Iz tog razloga treba voditi rauna da ne
bude praklapanja atributa po imenu
Sadraj polja se prenosi u originalu, bez
obzira na broj rei i razmake
Preuzimanje u PHP kodu je pomou
$_POST[' atribut_name ']
Kod nekih verzija dovoljno je samo
$atribut_name

1.php

index.html

Primer

<html>
<head> </head>
<body>
<form action="1.php" method="post">
Unesite ime
<input type="text" name="ime">
<br>
<input type="submit" value="Unos">
</form>
</body>
</html>

<html>
<head> </head>
<body>
Uneto ime je:
<?php
echo $_POST['ime']
>
<br>
</body>
</html>

Primer

Slanje u php

<form action="http://www.nesto.com/provera.php" method="GET">


Ime: <input type="text" name="firstname" size="15">
Prezime : <input type="text" name="lastname" size="15">
<input tupe="submit" value="Potvrda podataka">
</form>
<? echo"Vas ime :";
echo"$ firstname ";
echo"Vas prezime :";
echo"$ lastname ";
?>
-------------------------------------------------------------------Za unete podatke Nenad Kojic, nakon klika na Potvrda podataka
otvara se stranica sa podacima
Vae ime je Nenad
Vae prezime je Koji

Provera unosa podatka u neko od polja


<form action="strana.html" method = "POST">
<input name="Ime">
<input type="submit">
isset vraa vrednost
</form>
<?
if (isset ($Ime))
{
echo "Vae ime je $Ime";
$rezultatupita=true;
}
?>

true ako postoji


promenljiva Ime

Alternativa
<?
if (!isset ($Ime))
{
echo "Morate uneti Ime";
$rezultatupita=false;
}
?>

Jedna-dve strane

PHP_SELF

Primer a
<html>
<head>
<title>Formular za PHP testiranje</title>
</head>
<body>
<h2>Prost formular</h2>
<form method=post action=formprocesor.php>
<input type=text size=26 name=ime>Ime: <br />
<input type=text size=26 name=prezime>Prezime: <br />
<input type=text size=26 name=email>E mail adresa: <br />
<textarea rows=4 cols=26 name=address></textarea>
Adresa: <br />
<input type=submit value=Send name=submit>
<input type=reset value=Clear name=reset>
</form>
</body>
</html>

Primer b
<?php
// alje podatke i zahvaljuje korisniku
print <h2>Hvala Vam $ime, primili smo vae informacije </h2>;
print Ime: $ime <br /> \n;
print Prezime: $prezime <br /> \n;
print Email adresa: $email <br /> \n;
print Adresa: $adresa <br />\n;
// alje podatke formulara na specificiranu adresu, email adresu
$to = "peraperic@NNscience.org";
$subject = "Informacije prikupljene formularom";
$body = "Ime: $ime \n Prezime: $prezime \n Email adresa: $email \n
Adresa: $adresa \n";
mail ($to,$subject,$body);
?>

Check taster

Prenos sadraja checkbox-a u PHP se vri po


atributu name
Svaki box ide za sebe
Ako u tagu <input> nije definisan atribut value,
tada je rezultat ekiranog polja u PHP-u on (dok
se u suprotnom ne prikazuje)
Ako je atribut value definisan, prenosi se value
vrednost
Za sluaj kada ima vie checkbox-ova mogue je
za name kreirati niz. Na taj nain sva polja se
prozivaju preko imena niza, iji je elemenat
odreen redosledom pojavljivanja box-ova

1.php

index.html

Primer <html>

<html>
<head> </head>
<body>
<form action="1.php" method="post">
Opcije:
1<input type="checkbox" name="1" >
2<input type="checkbox" name="2" >
3<input type="checkbox" name="3"
value="Treci" >
4<input type="checkbox" name="4"
value="Cetvrti" ><br>
<input type="submit" value="Obrada">
</form>
</body>
</html>

<body>
Predmeti: <br>
<?php
echo $_POST['1'];
echo ("<br>");
echo $_POST['2'];
echo $_POST['3'];
echo $_POST['4'];
?>
</body></html>

Radio tasteri

Prenos sadraja checkbox-a u PHP se vri po


atributu name
Svaki radio button mora imati isti name
Ako u tagu <input> nije definisan atribut value,
tada je rezultat ekiranog polja u PHP-u on (dok
se u suprotnom ne prikazuje)
Ako je atribut value definisan, prenosi se value
vrednost

1.php

index.html

Primer <html>

<html>
<head> </head>
<body>
<form action="1.php" method="post">
Opcije:
1<input type="radio" name="1" >
2<input type=" radio " name="1"
value="Drugi" > <br>
<input type="submit" value="Obrada">
</form>
</body>
</html>

<body>
Izbor: <br>
<?php
echo $_POST['1'];
?>
</body>
</html>

Padajua lista

Prenos sadraja izabranog polja padajue liste u


PHP se vri po atributu name taga Select
Ovo vai za liste gde je dozvoljen izbor samo
jedne od ponuenih vrednosti
Ako se koristi opcija Multiple, tada se prenos
izabranih polja preuzima kroz atribut name taga
Select, a u PHP-u ita kreiranjem niza sa tim
imenom.

1.php

index.html

Primer <html>

<html>
<head> </head>
<body>
<form action="1.php" method="post">
Opcije:
<select name="123">
<option>11</option>
<option>22</option>
<option>33</option>
</select><br>
<input type="submit" value="Obrada">
</form>
</body>
</html>

<body>
Izbor: <br>
<?php
echo $_POST['123'];
?>
</body>
</html>

Primer
<p>Kojim danima moete doi na razgovor?</p>
<select name="radni_dani[]" Multiple>
<option value="Ponedeljak">Ponedeljak</option>
<option value="Utorak">Utorak</option>
<option value="Sreda">Sreda</option>
<option value="etvrtak">etvrtak</option>
<option value="Petak">Petak</option>
</select><br/><br/>
print "Dani za razgovor: $radni_dani[0] $radni_dani [1]
$radni_dani [2] $radni_dani [3] $radni_dani [4] <br>\n";

Skrivena polja

Koriste se za prosleivanje podataka sa jedne


stranice na drugu, ali bez uticaja korisnika
Ovo se moe zamisliti kao polje koje je unapred
popunjeno, i koje e svoju vrednost proslediti php
stranici kao i sva druga polja koje popunjava
korisnik
U HTML-u se kreira kao:
<input type="hidden" name="pera" value="mika">
Kao i ostali elementi poziva se svojim name
atributom, a prenosi vrednost value-a

Skrivena polja

Skrivena polja mogu da prenose i informaciju iz


php strane na drugu php stranu
Da bi se ovo iskoristilo potrebno je ceo HTML
formular kreirati kroz php kod, kada se i
elementima formulara mogu dodeliti vrednosti
promenljivih u php-u
Automatskom dodelom vrednosti nekom od
elemenata formulara i njenim daljim
prenoenjem dobija se alat za prenos sadraja
promenljivih meu stranama

Primer - Skrivena polja


<html>
<head> </head>
<body>
<?php
$promenljiva1 = "Pera";
echo "<form action="2.php" method="post">";
echo "<input type="text" name="3" >";
echo "<input type="hidden" name="4" value=$promenljiva1>";
echo "<input type="submit" value="Obrada">";
echo"</form>"
?>
</body>
</html>

Primer

Utvrivanje itaa i IP-a

<html>
<head>
<title>Utvrivanja IP adrese i web itaa</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
</head>
<body>
<?php
$yourIP = getenv("REMOTE_ADDR");
$yourbrowser = getenv("HTTP_USER_AGENT");
echo "<h1>Hello</h1>\n";
echo "Vidim vasu IP adresu sa koje dolazite <b>$yourIP </p>;
echo "Koristite sledeci web pretrazivac $yourbrowser ";
?>
</body>
</html>

Toliko za sada

Visoka kola strukovnih studija za


informacione i komunikacione tehnologije
Beograd

Organizacija koda

Funkcije
Sintaksa funkcije je slina kao i u JavaScript-u
Rezervisana re function, () za parametre i {}
za telo funkcije
Rezervisana re return za vraanje vrednosti
koja je traena od funkcije
Sintaksa
function ime_funkcije (ulazni parametri)
{
telo (kod) funkcije
Return izlazna promenljiva
}

Primer
<?php
function pdv ($osnovna_cena, $stopa_pdv)
{
$pdv_iznos = $osnovna_cena * $stopa_pdv/100;
$cena_sa_pdv = $osnovna_cena + $pdv_iznos ;
return $cena_sa_pdv ;
}
$osnovna_cena = 100;
$stopa_pdv = 18 ;
$razultat = pdv($osnovna_cena, $stopa_pdv);
echo (" Cena proizvoda sa PVD-om je $razultat ");
?>

Funkcije
U verziji PHP4, ukoliko se neki od oekivanih ulaznih
parametara ne poalje, tada se podrazumeva da je njegova
vrednost 0
Primer

<?php
function pdv ($osnovna_cena, $stopa_pdv)
{
$pdv_iznos = $osnovna_cena * $stopa_pdv/100;
$cena_sa_pdv = $osnovna_cena + $pdv_iznos ;
return $cena_sa_pdv ;
}
$osnovna_cena = 100;
$stopa_pdv = 18 ;
$razultat = pdv($osnovna_cena);
echo (" Cena proizvoda sa PVD-om je $razultat ");
?>
Kao rezultat e se vratiti 100

Globalne i lokalne promenljive

Pojam promenljive vezuje se za vreme trajanja web


strane
Promenljive koje se koriste u funkcijama, imaju lokalni
karakter, i vae samo dok se kod funkcije izvrava
Te promenljive su lokalne promenljive
Ista lokalna promenljiva se zato moe koristiti u svim
funkcijama, jer se njeno trajanje na njih i ograniava
Globalna promenljiva se nalazi u glavnom delu koda, i
mora da bude jedinstvena u njemu
Ime globalne promenljive moe biti i ime lokalne, ali
se mora voditi rauna ko u kom trenuku izvravanja
koda ima koju vrednost

Promenljive
Globala promenljiva $suma se oznaava sa:
global $suma
Superglobalne promenljive Automatski
definisane i dostupne kroz sam program:
$_GET
$_POST
$_Request
$_COOKIES
$_SESSION

Primer
<?php
$glob_prom = pera;
function primer ($glob_prom )
{
$glob_prom = mika;
return $glob_prom ;
}
primer ($glob_prom ) ;
echo $glob_prom;
?>

Ispisuje pera

Primer
<?php
$glob_prom = pera;
function primer ($prva)
{
$prva = mika;
return $prva ;
}
primer ($glob_prom ) ;
echo $prva;
echo $glob_prom;
?>

Nema vrednost van funkcije


Ispisuje pera

Globalne i lokalne promenljive

ta bi bilo ako se vrednost globalne


promenljive pozove unutar funkcije gde
postoji promenljiva sa istim tim imenom?
Nee se ni videti unutar nje, jer se ne zna
koja je koja promenljiva
Zato se globalne promenljive jasno
oznaavaju kao takve
Prvi nain je stavljanjem rei global ispred
promenljive koja je globalna a poziva se u
nekoj od funkcija
Drugi je upotrebom niza $GLOBALS

Primer
<?php
$prva = pera;
function primer ($druga)
{
global $prva ;
echo $prva ;
$druga = mika;
return ;
}
primer ($prva ) ;
echo $prva;
?>

Ispisuje pera

Ispisuje pera

Primer
<?php
$prva = pera;
function primer ($druga)
{
echo $GLOBALS[prva] ;
$druga = mika;
return $druga ;
}
primer ()
echo $prva;
echo $druga;
?>

Ispisuje pera

Ispisuje pera
nita

Zadravanje vrednosti

Ako lokalna promenljiva treba da zadri svoju


vrednost i nakon isteka koda funkcije, za potrebe
sledeeg pozivanja te funkcje, tada se ispred imena
promenljive pie re static
Static se samo prvi put izvrava i promenljivoj dodeli
inicijalnu vrednost, a nakon toga lokalna promenljiva
pamti svoju vrednost za sledee pozivanje funkcije

Primer
function broj_poseta_sajtu()

{
static $broj=0;
return $broj=$broj+1;
}

Pri svakom pozivanju funkcije vrednost $boj bi bila 1,2,3,

Primer za static
<?php
function broj_poseta_sajtu()
{
static $broj=0;
return $broj=$broj+1;
}
for ( $i=1; $i<5 ; $i++)
{
$promenljiva = broj_poseta_sajtu() ;
echo $promenljiva;
}
?>

1234

Funkcije i promenljive

U PHP-u regularno vae rekurzije i ugnjedavanja


funkcija
Takoe vai mogunost dodele funkcija pojedinim
petljama i obratno
Rezime promenljivih
Globalne promenljive imaju vrednost kroz ceo
program, ali ako se koriste u funkciji mora se koristiti
prefiks global
Lokalne promenljive imaju vrednost samo unutar
funkcije i za vreme trajanja funkcije
Statike promenljive su lokalne promenljive kojima
vrednost traje unutar funkcije svaki put kada se
funkcija pozove

Ukljuivanje datoteka

Ukljuivanjem sadraja spoljanje datoteke moe se u


postojeu stranicu dodati tekst ili deo koda
Naredba za ukljuivanje datoteke je include
Sintaksa include(ime_datoteke);
Primer include(tekst.txt)

Nailaskom na ovaj red koda, ako je u tekst.txt


definisan neki tekst, taj tekst bi se ukljuio u sadraj
stranice, kao da je kreiran u HTML-u
Ako postoji potreba za vie datoteka, onda se prave
generika imena koja su slina, i koja se programski
mogu pozvati

Primer : Ako postoji 10 datoteka sa imenima tekst1.txt,


tekst2.txt, ..., tada se mogu kroz for petlju pozvati kao
ime

$brojac=1;
include (tekst.$brojac..txt);

Toliko za sada

Visoka kola strukovnih studija za


informacione i komunikacione tehnologije
Beograd

WEB PROGRAMIRANJE
PHP
PHP 4 - Kroz primere

HTML kod poetne strane

<html><head>
<title>PHP - Kroz primere</title>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1250"></head>
<body>
<form action="obrada.php" method="post">
<table border="0">
<tr bgcolor="#cccccc">
<td width="150">Artikal</td>
<td width="15">Koliina</td>
</tr>
<tr>
<td>Sveska</td>
<td align="center"><input type="text" name="sveska" size="3" maxlength="3"></td>
</tr>
<tr>
<td>Olovka</td>
<td align="center"><input type="text" name="olovka" size="3" maxlength="3"></td>
</tr>
<tr>
<td>Gumica</td>
<td align="center"><input type="text" name="gumica" size="3" maxlength="3"></td>
</tr>
<tr>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Narui"></td>
</tr>
</table>
</form>
</body>
</html>

Atributi tagova bitni za PHP


name="sveska"

name="olovka"

name="gumica"

action="obrada.php"
method="post"

Stranica obrada.php
<html>
<head>
<title>OnLine knjiara - Izvetaj narudbine</title>
</head>
<body>
<h1>OnLine knjiara</h1>
<h2>Izvetaj</h2>
<?php
echo "<p> Porudbina prihvaena </p>";
?>
</body>
</html>

Upotreba funkcije date


Ugraena funkcija

<html>
za vreme
<head>
<title>OnLine knjiara - Izvetaj narudbine</title>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1250">
</head>
H: Sati u 24h formatu
<body>
<h1>OnLine knjiara</h1>
i: Minuti sa vodeom nulom
<h2>Izvetaj</h2>
<?php
echo "<p> Porudbina prihvaena u <p>";
echo date("H:i, j F");
echo "</p>";
?>

j: Dan

</body>
</html>

F: Mesec

Preuzimanje elemenata obrasca

Promenljivima $neto dovoljno je definisati nain


prenosa podataka (u ovom sluaju POST) i name
odreenog elementa obrasca.
Potpuna putanja, kao u sluaju JavaScript-a nije
potrebna
Iz tog razloga vie razliitih obrazaca na istoj
strani moraju imati razliita name svakog od
objekata.

Proizvoljna imena
promenljivih

name elemenata
obrasca

$sveska1 = $_POST['sveska'];
$olovka1 = $_POST['olovka'];
$gumica1 =$ POST['gumica'];

Prihvatanje podataka i njihov prikaz


<body>
<h1>OnLine knjiara</h1>
<h2>Izvetaj</h2>
<?php
echo "<p> Porudbina prihvaena u <p>";
echo date("H:i, j F");
echo "</p>";
$sveska1 = $_POST['sveska'];
$olovka1 = $_POST['olovka'];
$gumica1 =$_POST['gumica'];
echo "<p> Naruili ste : <p>";
echo "<p> Sveske komada: $sveska1 <p>";
echo "<p> Olovke komada: $olovka1 <p>";
echo "<p> Gumice komada: $gumica1 <p>";
?>
</body>

Konstante

Konstante se definiu naredbom define


Vrednosti konstanti su neke vrednosti kao i kod
promenljivih, ali se jednom zadata vrednost
konstante ne moe menjati, dok se promenljivoj
moe
Promenljive ispred imena imaju simbol $, dok
konstante nemaju

define('CenaSveske', 50);
define('CenaOlovke', 30);
define('CenaGumice', 10);

Dodela poetnih vrednosti

1.
2.
3.
4.
5.
6.

Tipovi podataka u PHP-u su:


Intiger - celobrojne veliine
Double - pokretni zarez dvostruke preciznosti
String - znakovi
Boolean - logiki
Array - nizovi
Object - za definisanje klasa.

Definisanje promenljivih razliitih tipova:


$ukupnoartikala=0;
$ukupnacena=0.00;

Aritmetiki operatori i operatori poreenja

<?php
echo "<p> Porudbina prihvaena u <p>";
echo date("H:i, j F");
echo "</p>";
$sveska1 = $_POST['sveska'];
$olovka1 = $_POST['olovka'];
$gumica1 =$_POST['gumica'];
echo "<p> Naruili ste : <p>";
echo "<p> Sveske komada: $sveska1 <p>";
echo "<p> Olovke komada: $olovka1 <p>";
echo "<p> Gumice komada: $gumica1 <p>";
define('CenaSveske', 50);
define('CenaOlovke', 30);
define('CenaGumice', 10);
$ukupnoartikala=0;
$ukupnacena=0.00;
$ukupnoartikala = $sveska1 + $olovka1 + $gumica1;
echo "Ukupan broj artikala: $ukupnoartikala <br />";
$ukupnacena = $sveska1*CenaSveske+$olovka1*CenaOlovke+$gumica1* CenaGumice
echo "Ukupno za uplatu: $ukupnacena dinara. <br />";
?>

IF petlja

Verzija IF petlje sa jednim izvrenjem


if($ukupnoartikala==0)
echo "Morate izabrati bar jedan artikal !";
Verzija IF petlje sa vie izvrenja
if($ukupnoartikala==0)
{
echo "Morate izabrati bar jedan artikal !";
echo "Izaberite ponovo !";
}

IF-ELSE petlja

Verzija IF - ELSE petlje


if($ukupnoartikala==0)
{
echo "Morate izabrati bar jedan artikal !";
}
else

{
echo "Hvala to ste izabrali nae proizvode.";
if($sveska1>0)
echo "Izabrali ste sveske, komada: $sveska1.";
if($olovka1>0)
echo "Izabrali ste olovke, komada: $olovka1.";
if($gumica1>0)
echo "Izabrali ste gumice, komada: $gumica1.";
}

<?php
<?php
echo "<p> Porud
Porudbina prihva
prihvaena u <p>";
echo date("H:i,
date("H:i, j F");
echo "</p>";
$sveska1 = $_POST['sveska
'];
$_POST['sveska'];
$olovka1 = $_POST['olovka
'];
$_POST['olovka'];
$gumica1 =$_POST['gumica
'];
=$_POST['gumica'];
define('CenaSveske',
define('CenaSveske', 50);
define('CenaOlovke',
define('CenaOlovke', 30);
define('CenaGumice',
define('CenaGumice', 10);
$ukupnoartikala=0;
ukupnoartikala=0;
$ukupnacena=0.00;
ukupnacena=0.00;
$ukupnoartikala = $sveska1 + $olovka1 + $gumica1;
echo "Ukupan
"Ukupan broj artikala:
artikala: $ukupnoartikala
$ukupnoartikala <br />";
if( $ukupnoartikala == 0 )
{
echo "Morate izabrati bar jedan artikal ! <br />";
}
else
{
echo "Hvala to ste izabrali nae proizvode. <br />";
if($sveska1>0)
echo "Izabrali ste sveske, komada: $sveska1. <br />";
if($olovka1>0)
echo "Izabrali ste olovke, komada: $olovka1. <br />";
if($gumica1>0)
echo "Izabrali ste gumice, komada: $gumica1. <br />";
}
$ukupnacena = $sveska1 * CenaSveske+
CenaSveske+ $olovka1 * CenaOlovke+
CenaOlovke+ $gumica1 * CenaGumice;
CenaGumice;
echo "Ukupno
"Ukupno za uplatu:
uplatu: $ukupnacena
$ukupnacena dinara.
dinara. <br
<br />";
?>

IF-ELSE petlja

ELSEIF

Verzija ELSEIF petlje (Obraun popusta na koliinu)


if( $sveska1 < 5)
$popust=0;
else if( $sveska1 >=5 && $sveska1<=9 )
$popust=5;
else if( $sveska1 >=10 && $sveska1<=19 )
$popust=10;
else if( $sveska1 >=20)
$popust=15;

Izraunavanje nove cene

Stara metrika za cenu

$ukupnacena =
$sveska1 * CenaSveske+
$olovka1 * CenaOlovke +
$gumica1 * CenaGumice;

Nova metrika za cenu

$ukupnacena =
$sveska1 * (CenaSveske - (CenaSveske*$popust)/100) +
$olovka1 * CenaOlovke +
$gumica1 * CenaGumice;

Select sekcija

<select name="pronalazenje">
<option value =" a">Ja sam stari kupac</option>
<option value =" b">TV oglas</option>
<option value =" c">Internetom</option>
<option value =" d">Od prijatelja</option>
</select>

$ pronalazenje=$_POST[' pronalazenje '];

Else-If petlja

if($ pronalazenje == 'a')


echo '<p> Stari kupac.</p>';
elseif($ pronalazenje == 'b')
echo '<p>Kupac obaveten TV oglasom.</p>';
elseif($ pronalazenje == 'c')
echo '<p>Kupac obaveten internetom.</p>';
elseif($ pronalazenje == 'd')
echo '<p>Kopac obaveten od strane prijatelja.</p>';
else
echo '<p>Nepoznat podatak o obavetavanju kupca.</p>';

Case

Select sekcija

$ pronalazenje=$_POST[' pronalazenje '];


switch($pronalazenje)
{
case 'a':
echo "<p>
break;
case 'b':
echo "<p>
break;
case 'c':
echo "<p>
break;
case 'd':
echo "<p>
break;
default:
echo "<p>
break;
}

Stari kupac. </p>";


Stari kupac. </p>";
Stari kupac. </p>";
Stari kupac. </p>";
Stari kupac. </p>";

<html><head>
<title>PHP - Kroz primere</title>
primere</title>
<meta httphttp-equiv="Contentequiv="Content-Type" content="text/html; charset=Windows
charset=Windows--1250"></head>
<body>
<form action="obrada.php
action="obrada.php"" method="post">
<table border="0">
<tr bgcolor="#
cccccc">
">
bgcolor="#cccccc
<td width="150">Artikal
</td>
width="150">Artikal</td>
<td width="15">Koli
ina</td>
width="15">Koli
ina</td>
</tr
>
</tr>
<tr>
tr>
<td>Sveska
</td>
<td>Sveska</td>
<td align="center"><input type="text" name="sveska
name="sveska"" size="3" maxlength="3"></td>
maxlength="3"></td>
</tr
>
</tr>
<tr>
tr>
<td>Olovka
</td>
<td>Olovka</td>
<td align="center"><input type="text" name="olovka
name="olovka"" size="3" maxlength="3"></td>
maxlength="3"></td>
</tr
>
</tr>
<tr>
tr>
<td>Gumica
</td>
<td>Gumica</td>
<td align="center"><input type="text" name="gumica
name="gumica"" size="3" maxlength="3"></td>
maxlength="3"></td>
</tr
>
</tr>
<tr><td>
Kako ste saznali za nas?</td>
tr><td>Kako
nas?</td>
Dodatak
<td><select
">
<td><select name="pronalazenje
name="pronalazenje">
originalnoj
<option value =" a">Ja
a">Ja sam stari kupac</option>
kupac</option>
verziji koda
<option value =" b">TV oglas</option>
oglas</option>
<option value =" c">Internetom
</option>
c">Internetom</option>
<option value =" d">Od
d">Od prijatelja</option>
prijatelja</option>
</select> </td></tr
>
</td></tr>
<tr><td
i"></td></tr
>
tr><td colspan="2"
colspan="2" align="center"><input type="submit" value="Naru
value="Naru
"></td></tr>
</table></form></body></html>

Kd prve strane

<html><body>
<table border="0" cellpadding="3">
<tr>
<td bgcolor="#CCCCCC" align="center">Udaljenost u km</td>
<td bgcolor="#CCCCCC" align="center">Cena u dinarima</td>
</tr>
<tr>
<td align="right">50</td>
<td align="right">5000</td>
</tr>
<tr>
<td align="right">100</td>
<td align="right">10000</td>
</tr>
<tr>
<td align="right">150</td>
<td align="right">15000</td>
</tr>
<tr>
<td align="right">200</td>
<td align="right">20000</td>
</tr>
<tr>
<td align="right">250</td>
<td align="right">25000</td>
</tr>
</table></body></html>

Dodavanje nove
strane sa podacima

Generisanje podataka prethodne tabele


pomou While
<? php
$rastojanje=50 ;
while($rastojanje <= 250)
{
$cena=100* $rastojanje ;
echo "<tr> \n <td> $rastojanje </td> \n";
echo "<td> \n <td> $cena </td> \n </tr> \n ";
$rastojanje +=50;
}
?>

Generisanje podataka prethodne tabele


pomou For
<? php
for($rastojanje=50 ; $rastojanje <= 250; $rastojanje +=50)
{
$cena=100* ($rastojanje-50) ;
echo "<tr> \n <td> $rastojanje </td> \n";
echo "<td> \n <td> $cena </td> \n </tr> \n ;
}
?>

Naputanje strane
if ( $ukupnoartikala == 0)
{
echo " Niste naruili nita na prethodnoj strani ! <br />";
exit ;
}

Toliko za sada o PHP -u

Visoka kola strukovnih studija za


informacione i komunikacione tehnologije
Beograd

Upravljanje datotekama i
direktorijumima

Datoteke

Datoteka je ureena sekvenca bajtova smetenih


na disku, CD-ROM-u ili nekom drugom medijumu
Direktorijum je poseban tip datoteke koji uva
imena drugih datoteka ili direktorijuma
Direktorijum i datoteka se karakteriu svojom
putanjom
Putanje se razliito zapisuju za Linux i Windows
Za Unix sistema, kao to je Linux
/home/moje/podaci/arhiva.txt
Za Windows
C:\moje\podaci/arhiva.txt
PHP koji je instaliran na windows-u e ispravno
konvertovati oba tipa crta, ali je potrebno
putanju pisati pod znacima navoda, da se \ ne bi
tumaila kao escape

DATOTEKE

Txt
Nizovi
SQL

Upisivanje i itanje podataka

1.
2.
3.

1.
2.
3.

Upisivanje podataka podrazumeva tri koraka:


Otvaranje datoteke (Ako ne postoji treba je napraviti)
Upisivanje podataka u datoteku
Zatvaranje datoteke

itanje podataka iz datoteke podrazumeva:


Otvaranje datoteke (Ako ne postoji- reiti programski)
itanje podataka
Zatvaranje datoteke

Otvaranje datoteke 1

Za otvaranje datoteke koristi se php funkcija


fopen()

Reimi rada sa datotekama:


-Da li se otvara samo za itanje, upis ili oba ?
-Da li se upisuje preko postojeeg sadraja ili dodatak ?
-ta ako je datoteka u upotrebi ?

r Otvara se datoteka za itanje (r+ itanje i upis od poetka)


w - Otvara se datoteka za upis (w+ itanje i upis od poetka)
a - Otvara se datoteka sa nastavljanjem sadraja (ako je nema pravi
se)
b Ide u kombinaciji sa drugim simbolima, i pravi razliku izmeu
binarnih i tekstualnih datoteka
t - Ide u kombinaciji sa drugim simbolima, i pravi text tip datoteku.

Otvaranje datoteke 2

Prvo se definie putanja root-a samog servera u promenljivoj


$DOCUMENT_ROOT
$DOCUMENT_ROOT = $_SERVER[ DOCUMENT_ROOT ]
(Kod simuliranja Root je npr C particija hard diska)

Zatim se definie promenljiva ($nasadatoteka) u koju se smetaju


podaci iz datoteke
$nasadatoteka=fopen($DOCUMENT_ROOT//folder/spisak.txt,ab);

Otvaranje datoteka pomou FTP i HTTP protokola

Smetanje na udaljenom raunaru definie se protokolom, nakon


ega se uspostavlja veza sa tim serverom automatski. Jedini uslov
je crta na kraju adrese.

Dobar primer
http://www.primer.com/

Otvaranje datoteke 3

Datoteka treba da je van direktorijuma u kome se nalazi


prezentacija iz sigurnosnih razloga
Ukoliko datoteka ne postoji, PHP generie greku
Da se ova greka ne bi videla pie se simbol @
@ $nasadatoteka=fopen($DOCUMENT_ROOT//folder/spisak.txt,ab);

Treba proveriti da li je datoteka dostupna, i ako ne generisati neku


poruku korisniku
Ako funkcija fopen() ne uspe, vraa se vrednost false

@ $nasadatoteka=fopen($DOCUMENT_ROOT/AppServ/www/spisak.txt,ab);
If (! $nasadatoteka)
{
echo Vaa porubina nije prihvaena. Molimo pokuajte ponovo ! ;
exit;
}

Otvaranje datoteke 4

Druga mogunost je fread(), koja ita jedan po


jedan znak iz datoteke
Primer:

do($jedan_karakter=fread($datoteka, 1); $brojac.= $jedan_karakter;)


while ($jedan_karakter)

Skoro na isti nain radi i funkcija fgetc(): koja ita


jedan po jedan znak iz datoteke, a kada doe do
kraja vraa False
Primer:

$jedan_karakter=fread($datoteka, 1); je isto to i


$jedan_karakter=fgetc($datoteka)

Otvaranje datoteke 5

Funkcija feof() vraa True kada doe do kraja


datoteke, a u suprotnom vraa False
Sintaksa feof($datoteka)
Funkcija fgets() ita skupove znakova. Za razliku
od fgetc() koja ita jedan po jedan znak, fgets()
ita grupu znakova u navedenoj duini. Prestaje
sa itanjem nailaskom na novi red ili kraj
datoteke
itanje cele datoteke je sa funkcijom file()
itanje cele datoteke sa ispisom je funkcijom
fpassthru(), ili pomou readfile()

Primer itanje datoteke

Primer

Brojai

Upis u datoteku

Upis se vri funkcijom


fwrite($nasadatoteka , $tekst);

Tekst iz promenljive $tekst upisuje se u datoteku na koju


pokazuje $nasadatoteka
Moe se definisati broj karaktera (duina) koja se upisuje
fwrite($nasadatoteka , $tekst, strlen($tekst));
Delovi zapisa se moraju razdvojiti nekim simbolima, ako se
smetaju u isti red

$tekst = $date.\t.$knjige. knjiga\t.$olovke.olovki\t .$gumice.


gumica\t.$ukupnoartikala.\n;

t je simbol za tabulator

Zatvaranje datoteke

Datoteka se zatvara funkcijom fclose(), dok je konkretno


fclose($nasadatoteka);

Za razliku od upisa, kod zatvaranja se mnogo retko deavaju


sluajevi da se funkcija ne realizuje, pa se obino ne proverava

Zatvaranjem datoteka, funkcija fclose() vraa true, pa se uvek


moe proveriti kao

$zatvaranje=fclose($nasadatoteka);
If (! $zatvaranje)
{
echo Vaa porudbina nije jo uvek obraena (snimljena).
Molimo pokuajte ponovo ! ;
exit;
}

Prekid rada

Prekid rada se moe uraditi i automatski ako je u


toku nekog obaveznog koraka bila greka
Za to se koristi funkcija die
Najee je to u if uslovu u kombinaciji sa
otvaranjem, pa ukoliko se desi problem, kod se
prekida, i korisniku se prikazuje adekvatna
greka
Primer

$counter=./count.dat;
If (!($datoteka=fopen($counter, r))) die (Problem sa
otvaranjem datoteka, pokusajte ponovo!);

itanje iz datoteke

Za otvaranje se koristi funkcija fopen()


Treba isitati sve zapise koji postoje do tog trenutka
Funkcija feof() File End Of File vraa true ako je
pokaziva na kraju datoteke
while (!feof($nasadatoteka))

Ispis svih elemenata podrazumeva prolaz petljom kroz


svaki red datoteka i ispis istog.

@ $nasadatoteka=fopen($DOCUMENT_ROOT/AppServ/www/spisak.txt,r);
If (! $nasadatoteka)
{
echo Nema novih podudbina ! ;
exit;
itanje red po red
}
while (!feof($nasadatoteka))
do kraja datoteke,
{
ili nakon iitanih
$spisak=fgets($nasadatoteka, 999);
998 bajtova
echo $spisak <br/>;
}
fclose($nasadatoteka);

Naini itanja datoteke 1

itanje red po red, dok se ne doe do kraja datoteke, ili se isita


998 bajtova
$spisak=fgets($nasadatoteka, 999);
itanje uz rastavljanje na pojedinana polja, u odnosu na mesta
gde se nalaze graninici (tabulatori)
$spisak=fgetcsv($nasadatoteka, 100, \t);

Rezultati se smetaju u niz $spisak, a 100 je duina u karakterima


i trebalo bi da bude due od duine najdueg reda u datoteci

itanje cele datoteke je funkcijom readfile() i prikazuje se direktno


u web itau, funkcijom file(), kojom se sadraj smeta u niz
readfile ($DOCUMENT_ROOT//folder/spisak.txt);

Naini itanja datoteke 2


$nasadatoteka=fopen($DOCUMENT_ROOT/AppServ/www
/spisak.txt,rb);
fpassthru($nasadatoteka);

Funkcija fpassthru ita sve fajlove od trenutne


pozicije pa do kraja fajla i smeta u bafer
<?php
$file = fopen("test.txt","r");
// ita prvi red
fgets($file);
// Ostatak redova ita i alje u bafer
echo fpassthru($file);
fclose($file); ?>

Naini itanja datoteke 3


$nasadatoteka=fread($DOCUMENT_ROOT/AppServ
/www /spisak.txt, 15);

Na ovaj nain iz datoteke sa definisanom putanjom


se ita 15 bajtova i vraa kao string, smetajui u
promenljivu $nasadatoteka
Kada se proita prvih 15 bajtova, i ponovo pozove
funkcija fread, ona automatski ita sledeih 15
bajtova, i tako redom
Kada se doe do kraja, i ostane manje od 15
bajtova, taj broj se proita i vrati promenljivoj kao
string

Primer
<?
$plik="test.txt";
$czytanie=@fopen($plik,"r");
$tekst="";
while(!feof($czytanie)) {
$tekst.=fread($czytanie,500);
}
fclose($czytanie);
print($tekst);
?>

Kopiranje i menjanje imena


Kopiranje (prva u druga)
if(!copy (./prva.txt , druga.txt )) die (Nije
uspelo kopiranje datoteke prva.txt u
druga.txt!);

Promena imena
if(!rename (./prva.txt , druga.txt )) die (Nije
uspela promena imena prva.txt u druga.txt!);

Provera postojanja i brisanje


Provera postojanja
if(file_exists($DOCUMENT_ROOT/AppServ/www/spisak.txt))
echo Porudbina eka na obradu !;
else
echo Nema novih porudbina !;

Brisanje datoteke
unlink ($DOCUMENT_ROOT/AppServ/www/spisak.txt)

Funkcija unlink() vraa false ako se brisanje ne izvri. Za


razliku od veine drugih jezika ne postoji funkcija delete

Primer

Uzimanje informacija

Podrazumeva se datoteka
count.dat u tekuem
direktorijumu

Dolazi na
poetak
datoteke

Primer
Podrazumeva se datoteka
count.dat u tekuem
direktorijumu

Broja poseenosti

Zakljuavanje datoteka 1

Koristi se da bi se izbegli problemi paralelne obrade baze


Funkcija za zakljuavanje je flock()
Funkcija vraa true ako se datoteka uspeno zakljua

Vrednosti parametara funkcije flock():

LOCK_SH - Zakljuano za itanje (vie korisnika deli datoteku)


LOCK_EX - Zakljuano za upis (vie korisnika ne moe da deli
datoteku)
LOCK_UN - Otkljuava zakljuanu datoteku
LOCK_NB - Spreava blokiranje prilikom zakljuavanja

flock() ne radi sa FAT i NFS mrenim sistemima

Zakljuavanje datoteka 2
$nasadatoteka = fopen ( $DOCUMENT_ROOT/../folder/spisak.txt, ab);
flock ( $nasadatoteka, LOCK_EX ); // zakljuaj datoteku radi upisivanja
fwrite ( $nasadatoteka, $text ) ;
flock ( $nasadatoteka, LOCK_UN ) ; // otkljuaj datoteku
fclose ( $nasadatoteka ) ;
$nasadatoteka = fopen ( $DOCUMENT_ROOT/../folder/spisak.txt, r);
flock ( $nasadatoteka, LOCK_SH ); // zakljuaj datoteku radi itanja
fwrite ( $nasadatoteka, $text ) ;
flock ( $nasadatoteka, LOCK_UN ) ; // otkljuaj datoteku
fclose ( $nasadatoteka ) ;

Nizovi

Niz je skalarna promenljiva memorijska lokacija


Vrednosti niza su elementi
Svaki element ima indeks, pomou koga mu se pristupa
Definisanje niza je pomou array
Array nije funkcija ve jezika konstrukcija
Nizu se pristupa preko promenljive koja na njega ukazuje
$promenljiva=array ( Pera, Mika, Laza);
Indeksi elemenata poinju od 0

itanje nekog od elemenata


$a=promenljiva[0] ($a=Pera)
$b=promenljiva[2] ($b=Laza)
Promena nekog od elemenata

promenljiva[0] = Zika ($a=promenljiva[0] ($a=Zika))

Pristup elementima niza

Za velike nizove, ili grupe nizova (multidimenzioni niz)


koriste se petlje za isitavanje sadraja niza
Najee je to for petlja ili njena modifikacija foreach
Primer for petlje za niz sa tri elementa
for ( $i=0; $i<3; $i++)
echo $promenljiva[$i];
Primer foreach petlje za niz sa tri elementa
foreach ( $promenljiva as $drugapromenljiva)
echo $drugapromenljiva. ;
Svaki element niza se smeta u
promenljivu $drugapromenljiva i
zatim tampa

Uitavanje niza iz datoteke

Kada se formira datoteka, podaci se automatski mogu


prebaciti u niz da bi se parcijalno mogli obraivati
Prebacivanje datoteke u niz je funkcijom file()
Funkcija file() celu datoteku uitava u jedan niz, a
svaki element tog niza je pojedinani red iz datoteke
Funkcija count() vraa ukupan broj elemenata u nizu
(broj redova u datoteci)
$promenljiva = file ( $DOCUMENT_ROOT/../folder/spisak.txt);
//datoteka je u nizu na koji ukazuje $promenljiva
$brojelemenata= count($promenljiva);
for ( $i=0; $i< $brojelemenata; $i++)
{echo $promenljiva[$i];}

Rad sa podacima

Vrednosti koje su u datoteci unete kao text, a odnose


se na brojne veliine, moraju se konvertovati (input
type=text)
Konverzija znakovne u brojnu promenljivu je
funkcijom intval()
Da bi se svaki od elemenata niza raslanio na delove,
koristi se funkcija explode()
Kako su u datoteci podaci bili razdvojeni tabulatorom,
format funkcije je
explode(\t , $promenljiva[$i]);

Nakon rastavljanja elementa niza na njegove delove,


treba formirati novi niz iji e elementi biti dobijeni
delovi

Izdvajanje delova unutar elementa


Poetni niz
[0]

[1]

[2]

3.\t. b.\t.c\t. d\t

Novi niz 1
[0]

[1]

[2]

[ 3]

[ 4]

[ 5]

...

$brojelemenata= count($promenljiva);
for ( $i=0; $i< $brojelemenata; $i++)
$novi = explode(\t , $promenljiva[$i]);
$novi[0]=intval ($novi[0]); // $novi[0]=3
$novi[1]
// $novi[1]=b

Ako je bilo
potrebe za
konverzijom

Slanje mail-a u PHP-u

U PHP-u se mail moe slati direktno bez


direktnog kontakta nekog od korisnikih
programa, ali se pri instalaciji mora definisati o
kom programu se radi
Funkcija za slanje mail-a je mail()
Kao argumenti funkcije obavezni su adresa,
subject, i poruka dok su ostali opcioni
Provera popunjenosti obaveznih polja moe se
izvriti funkcijom isset()
Argument funkcije je name polje, koje se
kontrolie, i ako je popunjeno vraa se true
if (isset($knjiga))
{echo Ovo polje je popunjeno;}

Kod za slanje mail-a


<?
$ime=$_POST['ime'];
$adresa=$_POST['adresa'];
$tekst=$_POST['tekst'];
$adresaprimaoca='info@milence.com';
$subject='Poruka sa sajta !';
$sadrzajmaila='Poiljalac: '.$ime. "\n".'E mail poiljalaca: '.$adresa.
"\n". "Komentar: \n".$tekst. "\n";
$dolaznisajt='From:milence.com';
mail($adresaprimaoca, $subject, $sadrzajmail, $dolaznisajt);
?>

Upload file - 1

HTML forma

<html>
<body>
Za binarne
<form action="upload_file.php" method="post"
fajlove: datoteke
enctype="multipart/form-data">
Filename:
<input type="file" name="file" id="file" />
Za fajlove
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>

Upload file 2 / upload_file.php


niz

PHP kod

<?php

$_FILES["file"]["name"] ime uploadovanog fajla


$_FILES["file"]["type"] - tip uploadovanog fajla
$_FILES["file"]["size"] veliina u bajtima
uploadovanog fajla
$_FILES["file"]["tmp_name"] - ime privremene
kopije na serveru
$_FILES["file"]["error"] greka nastala pri
uploadovanju fajla

if ($_FILES["file"]["error"] > 0)
{ echo "Error: " . $_FILES["file"]["error"] . "<br />"; }
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
?>

Restrikcije kod upload-a


Upload .gif ili .jpeg fajl veliina fajla do 20 kb
<?php
if (
( ($_FILES["file"]["type"] == "image/gif") ||
($_FILES["file"]["type"] == "image/jpeg") ||
($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
{
if ($_FILES["file"]["error"] > 0)
{ echo "Error: " . $_FILES["file"]["error"] . "<br />"; }
else {
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
}
else { echo "Invalid file"; }
?>

Dati kod kreira privremnu kopiju upload-ovanog fajla na serveru. Krajem


skripta ova kopija nestaje, pa se vri njeno kopiranje na drugu lokaciju.
<?php
if (($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] ==
"image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg") &&
($_FILES["file"]["size"] < 20000))
{
if ($_FILES["file"]["error"] > 0)
{ echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; }
else {
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
if (file_exists("upload/" . $_FILES["file"]["name"]))
{ echo $_FILES["file"]["name"] . " already exists. "; }
else {
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/"
.$_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}}}
else { echo "Invalid file"; }
?>

Toliko za sada

Visoka kola strukovnih studija za


informacione i komunikacione tehnologije
Beograd

Pristup MySQL bazi podataka


pomou PHP-a

Komunikacija sa bazom podataka

Upotreba baza je zbog lakeg, bezbednijeg, breg i


efikasnijeg snimanja i itanja podataka
Postupak komunikacije HTML stranice i baze
podataka preko PHP koda
HTML
Zahtev
Web browser

Web server
HTML
Odgovor

PHP
Zahtev
Web browser

PHP
Zahtev
Web server

HTML
Odgovor

HTML
Odgovor

Izvrno
okruenje
za PHP

Zahtev za
podacima
MySQL server
Rezultat
pretrage

Komunikacija sa
MySQL Bazom podataka

Postupak izrade
1.

2.

3.

Pie se HTML kod kojim se kreira izgled stranice


za komunikaciju
Odreenim tasterima se dodeljuju pozivanja
PHP koda
Pie se PHP kod kojim se pristupa, izvrava i
prikazuje eljena informacija ili operacija nad
bazom podataka

PHP kod

1.

2.
3.
4.
5.

6.
7.

Faze u PHP kodu su:


Preuzimanje podataka iz HTML formulara
*** Dodavanje simbola \ da bi se uklonili upravljaki znaci
Pristup serveru baze podataka i provera konekcije
Pristup bazi podataka i provera konekcije
Definisanje upita
Izvravanje upita i deljenje vrsta u nizove zbog prikaza
*** Uklanjanje simbola \
Prikaz podataka
Prekid veze sa bazom

1. Preuzimanje podataka iz
HTML formulara

Unoenje podataka u bazu

Postupak je vrlo slian definisanju upita, samo


to se umesto komande Select koristi Insert
Prvi korak je kreiranje HTML formulara

HTML kod

<html>
<head>
<title>Book-O-Rama Book Entry Results</title>
</head>
<body>
<h1>Book-O-Rama Book Entry Results</h1>
<?php
// create short variable names
$isbn=$_POST['isbn'];
$author=$_POST['author'];
$title=$_POST['title'];
$price=$_POST['price'];

insert_book.php a

if (!$isbn || !$author || !$title || !$price)


{
echo 'You have not entered all the required details.<br />'
.'Please go back and try again.';
exit;
}
?>
</body>
</html>

2. Pristup MySQL serveru


baze podataka

Konekcija sa serverom baze

Konekcija na MySQL server: mysql_connect().


Argumenti: ime raunara, ime korisnika i lozinka.
Vraa identifikator veze (pa se dodeljuje
promenljivoj).

Primer:
<? php
$konekcija= mysql_connect(localhost, pera, pera1);
?>

Pristup svim bazama na serveru

Pregled baza podataka (sinonim za show


databases): mysql_list_dbs().
Argument: identifikator veze.
Vraa pokaziva ($rezultat) na niz koji sadri
imena dostupnih baza podataka.

$rezultat= mysql_list_dbs($id_veze);

Provera konekcije u pristupu bazi

Funkcija die() ispisuje poruku (ili poziva neku


funkciju) nakon ega prestaje sa parsiranjem
skripta, i izlazi iz njega
Koristi se kao ekvivalent za exit

$URL = 'http://www.php.net/';
$fp = fopen ($URL, 'r') or die ("Could not connect to site <i>$URL</i>");

3. Pristup bazi podataka

Veza sa bazom podataka

Izbor baze podataka: mysql_select_db().


Argumenti: ime baze i identifikator veze. Vraa True
ako je uspeno obavljen izbor baze.
mysql_select_db(ime_baze, $id_veze);

Primer
$id_veze= mysql_connect(localhost, pera, pera1);
if(mysql_select_db(ime_baze, $id_veze))
echo Konektovani smo na localhost na ime_baze);
else die (Konekcija nije uspela)

Show tables

Pregled tabela u bazi podataka (sinonim za show


tables): mysql_list_tables().
Argumenti: ime baze i identifikator veze.
Vraa pokaziva ($rezultat) na niz koji sadri
imena dostupnih tabela u datoj bazi podataka.

Primer
$id_veze= mysql_connect(localhost, pera, pera1);
$rezultat= mysql_list_tables(ime_baze, $id_veze);

Rows

Odreivanje broja redova koje je vratio upit:


mysql_num_rows(). Argument: pokaziva na skup
rezultata.
$broj_redova= mysql_num_rows( $rezultat);

Odreivanje broja redova koje je promenila neka od


naredbi insert, update ili delete: mysql_affected_rows().
Argument: identifikator veze.
$broj_redova= mysql_affected_rows( $id_veze);

Za preuzimanje slogova koje je server vratio kao upit:


mysql_fetch_row(). Argument: pokaziva na skup rezultata
upita.
$redovi= mysql_fetch_row( $skup_rezultata);
Ponovnim pozivanjem funkcije, nakon itanja jednog, prelazi
se na drugi red. Na kraju se vraa False.

Primer veze sa serverom

4. Definisanje upita

Upiti

U PHP-u vai: Ako nema identifikatora uvek se


podrazumeva poslednja otvorena veza.

Funkcija koja realizuje upit: mysql_query().


Argument je string sa upitom i identifikator veze.
Ako se upit izvri vraa se skup rezultata ili False

Primer

$id_veze = mysql_connect();
$rezultat = mysql_query (SHOW DATABASES, $id_veze );

Definisanje upita

U komandi mysql_query upit se moe kucati


direktno (pod znacima navoda), ili se prethodno
definisati nekoj promenljivoj (kao string), pa se
ta promenljiva pozvati (to je bolja varijanta)
Greka kod izvravanja upita se takoe definie
pomou die()

Prihvatanje vraenih podataka

Nakon izvrenog upita, vraene podatke treba smestiti u


promenljivu.
Ova promenljiva ima sloenu strukturu jer su u njoj svi
vraeni zapisi sa svojim elementima, pa se prvo sa
mysql_fetch_row() ovo deli na pojedinane zapise, a tek
onda dobijenom nizu izdvaja konkretna informacija

Primer
$id_veze = mysql_connect();
$rezultat = mysql_query (SHOW DATABASES, $id_veze );
while ($query_podaci = mysql_fetch_row($rezultat ))
{
echo $query_podaci [0], <br>0; //prva kolona zapisa
}

Primer kreiranja tabele kroz upit

Uklanjanja nepoeljnih simbola

Primer: HTML kod

results.php

Primer: PHP kod - a


<html>
<head>
<title>Book-O-Rama Search Results</title>
</head>
<body>
<h1>Book-O-Rama Search Results</h1>
<?php
$searchtype=$_POST['searchtype'];
$searchterm=$_POST['searchterm'];

xxx
?>
</body>
</html>

Preuzimanje
podataka iz
padajueg menija i
tekstualnog polja

Dodatna obrada unetih podataka

Kod tekstualnih unosa treba pretpostaviti da


korisnik moe uneti i beline (space) na poetku ili
kraju rei
Odsecanje ovih delova se vri funkcijom trim()

$pera=trim($pera)
$mika=trim($pera)

$searchterm= trim($searchterm);

Dodatna obrada unetih podataka

Provera da li su uneti podaci koji se oekuju

if (!$searchtype || !$searchterm)
{
//echo 'You have not entered search details. Please go
back and try again.';
echo 'Niste uneli podatke za pretragu. Molimo Vas da se to
uinite i pokuate ponovo.';
exit;
}

Dodatna obrada unetih podataka


Kod unoenja podataka u bazu mora se voditi
rauna o posebnim znacima koji u pisanom
govornom jeziku imaju jedno, a u programskom
drugo znaenje
To su znaci koje baza tumai kao upravljake
znakove: ', \ ," i null
Ispred ovih znakova treba dodati \ da bi se oni
tumaili kao znakovni podaci
Tada:
' postaje \
" postaje \"
\ postaje \\
\\ postaje \\\\

addslashes() i magic_quotes_gpc()

PHP ima dve posebne funkcije da prethodno opisani


postupak automatizuje
Funkcija addslashes() ispred svih navodnika dodaje \
Funkcija stripslashes() uklanja dodate \
Kod starijih verzija PHP-a, potrebno je ukljuiti
konfiguracijsku direktivu magic_quotes_gpc da bi se
ovaj postupak automatski odvijao
Skreenica gpc dolazi od GET, POST i COOKIE, to
znai da se podaci iz tih izvora automatski
konvertuju u oblik sa \
Da li je na konkretnom raunaru ova funkcija
ukljuena moe se proveriti sa magic_quotes_gpc()
koja vraa true ako jeste.

addslashes() i magic_quotes_gpc()

Ako se ove funkcije koriste, ne treba zaboraviti


da se kod vraanja podataka iz baze ka korisniku,
uvedeni znak \ ukloni sa stripslashes() da ga
korisnik ne bi video
Ispitivanje da li je aktivirana ova fukcija, i
dodavanje kose crte \ moe se uraditi sa
U istim promenljivim
su sada smeteni
obraeni podaci

if ( !get_magic_quotes_gpc() )
{
$searchtype = addslashes($searchtype);
$searchterm = addslashes($searchterm);
}

<html>
<head><title>Book-O-Rama Search Results</title></head>
<body>
<h1>Book-O-Rama Search Results</h1>
<?php
$searchtype=$_POST['searchtype'];
$searchterm=$_POST['searchterm'];
$searchterm= trim($searchterm);

Primer: PHP kod - b

if (!$searchtype || !$searchterm)
{
echo 'You have not entered search details. Please go back and try again.';
exit;
}
if (!get_magic_quotes_gpc())
{
$searchtype = addslashes($searchtype);
$searchterm = addslashes($searchterm);
}
?>
</body></html>

6. Prikaz podataka

Prikaz u formi ureenog teksta

Prikaz u formi tabele

7. Raskid veze sa bazom

Raskid veze

Raskid veze sa MySQL serverom: mysql_close().


Argument: identifikator veze.
Vraa True ako je uspeno zatvorena veza.

Primer

$id_veze= mysql_connect(localhost, pera, pera1);


mysql_close($id_veze);

Primer

Primer

Kreiranje guest book-a


Cilj:
Prikazati listu korisnika koji su ulogovani
Dozvoliti korisnicima da unesu svoje ime i
komentar
Podatke smestiti u bazu, i prikazati ih

Visoka kola strukovnih studija za


informacione i komunikacione tehnologije
Beograd

WEB PROGRAMIRANJE
PHP
Primeri

Primeri rada sa MySQL-om u Xampp-u

Napraviti bazu "proba_baza" i tabelu


"proba_tabela" u PHPMyAdmin-u

Popuna tabela

Dodati:
2 Mika Mikic, Telekomunikacije
3 Ana Anic Medicinska informatika
4 Laza Lazic PBT

Konana tabela

Veza sa serverom baze podataka


Kod stranice baza.php
a)
<?
$connect = mysql_connect("localhost", "root", "") or die ("Veza sa
serverom nije uspostavljena.");
?>
b)
<?
$connect = mysql_connect("localhostx", "root", "") or die ("Veza sa
serverom nije uspostavljena.");
?>

Veza sa serverom baze podataka


Kod stranice baza.php
a)
<?
$connect = mysql_connect("localhost", "root", "");
if ($connect)
{
echo ("Veza sa serverom je uspesno uspostavljena.");
}
else
{
echo ("Veza sa serverom nije uspostavljena.");
}
?>

Dozvole

GRANT ALL ON proba_baza.* TO pera


IDENTIFIED BY 'peric' WITH GRANT OPTION;
$connect = mysql_connect("localhost", "pera",
"peric") or die ("Greska u konekciji !");

$create = mysql_query("CREATE DATABASE IF


NOT EXISTS moviesite") or die(mysql_error());

Veza sa bazom podataka


Kod stranice baza.php
a)
<?
$connect = mysql_connect("localhost", "root", "")or die ("Veza sa
serverom nije uspostavljena.");
@mysql_select_db("proba_baza") or die( "Baza nije dostupna!");
?>
b)
<?
$connect = mysql_connect("localhost", "root", "")or die ("Veza sa
serverom nije uspostavljena.");
@mysql_select_db("proba_bazax") or die( "Baza nije dostupna!");
?>

Definisanje tabele i upita


//Definisanje tabele kojoj se pristupa

$tabela="proba_tabela";

//Definisanje upita

$query = "SELECT * FROM $tabela " ;

//Izvrsavanje upita i dodela rezultata upita promenljivoj rezultat

$rezultat = mysql_query($query) or die(mysql_error());

Obrada rezultata upita


$tabela="proba_tabela";
$query = "SELECT * FROM $tabela " ;
$rezultat = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($rezultat)){
echo $row [0] ;
echo $row [1] ;
echo $row [2] ;
echo $row [3] ;
echo ("<br>") ;
.....

Prikaz podataka iz baze


<?
$connect = mysql_connect("localhost", "root", "") or die ("Veza sa
serverom nije uspostavljena.");
@mysql_select_db("proba_baza") or die( "Baza nije dostupna!");
$tabela="proba_tabela";
$query = "SELECT * FROM $tabela " ;
$rezultat = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($rezultat)){
echo $row [0] ;
echo $row [1] ;
echo $row [2] ;
echo $row [3] ;
echo ("<br>") ;
}
?>

Struktuiran prikaz kroz tabelu


echo "<table border='1' width='550' cellspacing='5' cellpadding='1'>";
echo "<tr><td>Redni broj</td><td>Ime</td><td>Prezime</td>
<td>Smer</td></tr>";
while($row = mysql_fetch_array($rezultat)){
echo "</td><td>";
echo $row[0];
echo "</td><td>";
echo $row[1];
echo "</td><td>";
echo $row[3];
echo "</td><td>";
echo $row[4];
echo "</td></tr>";
++$i;
}
echo "</table >";

Kompletan kod

<?
$connect = mysql_connect("localhost", "root", "") or die ("Veza sa serverom nije
uspostavljena.");
@mysql_select_db("proba_baza") or die( "Baza nije dostupna!");
$tabela="proba_tabela";
$query = "SELECT * FROM $tabela " ;
$rezultat = mysql_query($query) or die(mysql_error());
echo "<table border='1' width='550' cellspacing='5' cellpadding='1'>";
echo "<tr><td>Redni broj</td><td>Ime</td><td>Prezime</td><td>Smer</td></tr>";
while($row = mysql_fetch_array($rezultat)){
echo "</td><td>";
echo $row[0];
echo "</td><td>";
echo $row[1];
echo "</td><td>";
echo $row[3];
echo "</td><td>";
echo $row[4];
echo "</td></tr>";
++$i;
}
echo "</table >";
?>

Unos podataka u bazu


$insert = "INSERT INTO proba_tabela (id_tabela_proba, ime, prezime, smer)
VALUES (5, 'Jovica', 'Maric', 'Mrezne tehnologije'), (6, 'Ivana', 'Ilic',
'Elektronsko poslovanje')" ;
mysql_query($insert) or die(mysql_error());

<?
$connect = mysql_connect("localhost", "root", "") or die ("Veza sa serverom nije uspostavljena.");
@mysql_select_db("proba_baza") or die( "Baza nije dostupna!");
$insert = "INSERT INTO proba_tabela (id_tabela_proba, ime, prezime, smer) VALUES (5, 'Jovica',
'Maric', 'Mrezne tehnologije'), (6, 'Ivana', 'Ilic', 'Elektronsko poslovanje')" ;
mysql_query($insert) or die(mysql_error());
$tabela="proba_tabela";
$query = "SELECT * FROM $tabela " ;
$rezultat = mysql_query($query) or die(mysql_error());
echo "<table border='1' width='550' cellspacing='5' cellpadding='1'>";
echo "<tr><td>Redni broj</td><td>Ime</td><td>Prezime</td><td>Smer</td></tr>";
while($row = mysql_fetch_array($rezultat)){
echo "</td><td>";
echo $row[0];
echo "</td><td>";
echo $row[1];
echo "</td><td>";
echo $row[3];
echo "</td><td>";
echo $row[4];
echo "</td></tr>";
++$i;
}
echo "</table >";
?>

Upit

.....
@mysql_select_db("proba_baza") or die( "Baza nije dostupna!");
$insert = "INSERT INTO proba_tabela (id_tabela_proba, ime, prezime, smer)
" . "VALUES (7, 'Radoje', 'Rakic', 'Telekomunikacije')" ;
mysql_query($insert) or die(mysql_error());
$tabela="proba_tabela";
$query = "SELECT ime, prezime FROM $tabela WHERE
smer='Telekomunikacije' ORDER BY ime";
$rezultat = mysql_query($query) or die(mysql_error());
echo "<table border='1' width='550' cellspacing='5' cellpadding='1'>";
.........

Kreiranje tabele u PHP-u


$druga_tabela = "CREATE TABLE proba_tabela_2
(
id_proba_tabela_2 int(11) NOT NULL auto_increment,
ime varchar(25) NOT NULL,
prezime varchar(25) NOT NULL,
godina_studija int(11) NOT NULL default 1,
PRIMARY KEY (id_proba_tabela_2 ),
) ";
mysql_query($ druga_tabela ) or die (mysql_error());

Rad sa formularom

Potrebno je napraviti formular


Eventualno proveriti sadrzaj JavaScript-om ili
traziti potvrdu
Preneti sve promenljive u PHP stranicu
Definisati globalne promenljive kao i podatke o
bazi
U zavisnosti od akcije pozvati odgovarajuce
funkcije za realizaciju
Prikazati podatke i/ili ih upisati u bazu

Brisanje podataka
function izbrisi_podatak($podatak)
{
$host="localhost";
$user="root";
$password="";
$baza="baza_studenti_8";
$tabela="tabela_podaci";
mysql_connect($host , $user, $password) or die ("Veza sa
serverom nije uspostavljena.");
@mysql_select_db($baza) or die( "Baza nije dostupna!");
$query = "DELETE FROM $tabela WHERE id_tabela_podaci='$podatak' ";
mysql_query($query);
}

Izmena podataka
function izmeni_podatak_f ($redni_broj, $novo_ime, $novo_prezime,
$novi_smer, $nova_godina)
{
$host="localhost";
$user="root";
$password="";
$baza="baza_studenti_8";
$tabela="tabela_podaci";
mysql_connect($host , $user, $password) or die ("Veza sa serverom
nije uspostavljena.");
@mysql_select_db($baza) or die( "Baza nije dostupna!");
$update = "UPDATE $tabela SET ime='$novo_ime',
prezime='$novo_prezime', smer='$novi_smer', godina=
'$nova_godina' WHERE id_tabela_podaci=$redni_broj";
$results = mysql_query($update) or die(mysql_error());
}

Visoka kola strukovnih studija za


informacione i komunikacione tehnologije
Beograd

WEB PROGRAMIRANJE
PHP
Primeri

You might also like