Professional Documents
Culture Documents
Pva P3 2021
Pva P3 2021
PREDAVANJE 3:
✓ Uvod u PHP
✓ Promenljive, operatori, petlje
✓ Funkcije, opseg
✓ Nizovi
1
UVOD U PHP
2
PHP DATOTEKA
Programe pisane u programskom jeziku PHP nije potrebno prevoditi u
izvršni oblik već se oni izvode prilikom pokretanja u interpreteru.
PHP program se piše kao deo HTML stranice unutar HTML oznake
<?PHP Ovde se piše PHP kod ?>
Podrazumevana ekstenzija PHP datoteke je .php
Ako je na web serveru instaliran i ispravno podešen PHP interpreter, a
datoteka završava sa .php tada će se taj deo programa automatski
izvršiti.
PHP DATOTEKA
Primer programa pisanog u PHP-u za ispis teksta.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>PHP program</title>
</head>
<body>
<?php echo "Moj prvi PHP program"; ?>
</body>
</html>
REZULTAT POKRETANJA PHP DATOTEKE
PHP interpreter se uključuje ukoliko stranica ima ekstenziju .php i ukoliko u okviru
te stranice postoji PHP tag.
Rezultati izvršenja PHP koda su vraćeni u browser, a ne u sam kod.
OSNOVNE KARAKTERISTIKE
PHP kôd može da bude postavljen bilo <!DOCTYPE html>
gde u dokumentu. <?php $stranica = "Nova stranica";?>
<html lang="en">
PHP kôd staruje sa <?php a završava sa ?>
<head>
PHP kôd je niz naredbi. <meta charset="UTF-8">
<title><?php echo $stranica;?></title>
Svaka naredba se mora završiti oznakom </head>
tačka-zarez (;). <body>
<?php echo $stranica; ?>
Kada se izvrši PHP kôd tada se on u
</body>
prikazu zamenjuje svojim rezultatom. </html>
PHP kôd može biti napisan i na više mesta
na stranici.
OSNOVE PROGRAMSKOG JEZIKA PHP
7
UPOTREBA KOMENTARA
Postoje tri oznake komentara: //, #, /*..*/
Linijski komentari : // ili #
<?php
// Neki linijski komentar
$naziv = "Novi naziv"; // Linijski komentar – deklaracija varijable
<?php
/* Ovo je primer
komentara u nekoliko
redova */
$naziv = "Novi naziv"; /*On se može koristiti i u jednoj liniji */
?>
ISPISIVANJE PODATAKA
echo
<?php
nema povratnu vrednost,
echo "zdravo";
može da primi više parametara, echo "zdravo", "pozdrav";
brži echo ("zdravo");
print "zdravo";
print print ("zdravo");
vraća vrednost 1 koja može da se ?>
iskoristi u izrazima,
prima samo jedan argumenat,
sporiji
ISPISIVANJE PODATAKA
<?php
// Primer ispisivanja teksta upotrebom echo i print
echo "Primer sa echo <br>";
print "Primer sa print <br>";
// Primer ispisivanja brojeva
echo 5.23;
echo "<br>";
print 123.321;
echo "<br>";
// Primer ispisivanja vrednosti promenljivih
$text = "Moj novi tekst";
echo $text;
echo "<br>";
print $text;
echo "<br>";
// Ispis nekoliko odvojenih vrednosti
echo "zdravo", "pozdrav";
echo "<br>";
// Obe naredbe mogu koristiti i
zagrade čime izgledaju kao funkcije
echo ("Echo sa zagradama");
echo "<br>";
print ("Print sa zagradama");
?>
ISPISIVANJE PODATAKA
U programskom jeziku PHP postoje dva načina definisanja niza znakova koji će se
ispisati.
označavanje niza znakova pod oznakom navodnika " "
označavanje niza znakova pod oznakom apostrofa ' '
Ako podatak tipa string počinje dvostrukim znacima navoda, mora se završiti sa tim
znacima navoda
Uokviru dvostrukih znakova navoda možemo ubacivati promenljive, a u okviru
jednostrukih ne
ISPISIVANJE NIZOVA ZNAKOVA
Primer 1
<?php
$txt1="Predmet 'PVA' je super!!!!";
$txt2= 'Predmet "PVA" je super!!!!';
echo $txt1;//Izlaz je: Predmet 'PVA' je super!!!!
echo $txt2;//Izlaz je: Predmet "PVA" je super!!!!
?>
Primer 2
<?php
$txt1="Predmet 'PVA' je super!!!!";
$txt2= 'Predmet "PVA" je super!!!!’;
14
PROMENLJIVE
Sadrže karaktere i tekst u njima se nalazi između navodnika (jednostrukih ili dvostrukih)
Operator nadovezivanje (konkatenacije) je simbol tačka „.“
<?php
$txt1="Dobar dan!";
$txt2= "Divan dan danas.";
echo $txt1;//Izlaz je: Dobar dan
echo $txt2;//Izlaz je: Divan dan danas
echo $txt1." ".$txt2;//Izlaz je: Dobar dan! Divan dan danas.
?>
STRLEN()
strlen() vraća broj karaktera u stringu (dužinu stringa).
Ulazni parametar funkcije je string čiju dužinu tražimo.
Povratna vrednost je podatak tipa integer
<?php
$ime="Sinisa";
echo strlen($ime);//Izlaz je: 6
?>
<?php
$ime="Siniša";
echo strlen($ime);//Izlaz je: ?
?>
STRLEN()
strlen(„Siniša“) neće vratiti 6, nego 7.
Razlog za to je karakter „š“ koji je utf-8.
Ima dva načina za rešenje problema sa enkodingom:
mb_strlen() – multibyte strlen
utf8_decode()
<?php
echo mb_strlen(„Siniša");//Izlaz je: 6
echo strlen(utf8_decode(„Siniša"));//Izlaz je: 6
?>
STRPOS()
strpos() traži određeni karakter ili string unutar stringa.
Ima dva ulazna parametra.
Prvi parametar je string u kome tražimo, a drugi je string/karakter koji tražimo.
Ako je string nađen, povratna vrednost je pozicija nađenog stringa (pozicije počinju od 0)
Ako nije nađen string, funkcija vraća se boolean FALSE
<?php
echo strpos("Dobar dan", "dan");//Izlaz je: 6
?>
TRIM()
nl2br() prihvata znakovnu vrednost kao ulazni parametar i sve znake za prelazak u
novi red zamenjuje HTML oznakom( <br> ili </br>)
printf() prosleđuje formatiranu znakovnu vrednost browseru
sprintf() vraća formatiranu znakovnu vrednost
PRETVARANJE MALIH I VELIKIH SLOVA
$ime=„ Programiranje na Vebu“
26
PHP OPERATORI
$a = @(27/0)
Bez operatora @, izvršno okruženje bi generisalo upozorenje „deljenje nulom“
PRIMERI UPOTREBE OPERATORA
<?php
// Uvećavanje vrednosti varijable $rezultat za 1 <?php
$rezultat=5; // Primeri spajanja niza znakova
echo $rezultat; $tekst = "Novi program";
echo "<br>"; echo $tekst;
$rezultat=$rezultat + 1; echo "<br>";
echo $rezultat; $tekst = "Novi" . "program";
echo "<br>"; echo $tekst;
$rezultat+= 1; echo "<br>";
echo $rezultat; $tekst = "Treći";
echo "<br>"; $tekst .= "primer";
$rezultat++; echo $tekst;
echo $rezultat; echo "<br>";
echo "<br>"; $tekst = "Treći";
++$rezultat; $tekst = $tekst ." ". "primer";
echo $rezultat; echo $tekst;
echo "<br>"; ?>
?>
OSNOVNE NAREDBE PROGRAMSKOG JEZIKA PHP
37
USLOVNI ISKAZI - IF
Struktura
if(uslov){blok_naredbi}
Ako je uslov ispunjen izvršiće se blok_naredbi
<?php
$x=5;
if($x>3)
{
echo "Uslov je ispunjen";
}
?>
<?php
$i=1;
while($i<=5)
{
echo "Broj je " . $i . "<br>";
$i++;
}
?>
DO...WHILE PETLJA
Poznata i kao petlja sa izlazom na dnu
Nema svoj brojač prolazaka kroz petlju, mora se dodeliti programski i povećavati za
svaki prolazak
<?php
$i=1;
do
{
$i++;
echo "Broj je " . $i . "<br>";
}
while ($i<=5);
?>
FOR PETLJA
Petlja sa poznatim brojem prolazaka
Ima svoj brojač prolazaka kroz petlju
<?php
for ($i=1; $i<=5; $i++)
{
echo „Broj je " . $i . "<br>";
}
?>
FOREACH PETLJA
Petlja koja prolazi kroz sve elemente niza, najčešće se koristi za asocijativne nizove
gde ne možemo koristiti FOR petlju
<?php
$x=array("one", "two", "three");
foreach ($x as $value)
{
echo $value . "<br>";
}
?>
FUNKCIJE
47
KORISNIČKE FUNKCIJE
<?php
function dodatak($krajImena)
{
echo "Programiranje ".$krajImena;
}
dodatak("veb aplikacija");//Izlaz je: Programiranje veb aplikacija
dodatak("aplikacija baza podataka");//Izlaz je: Programiranje aplikacija baza podataka
?>
NEOBAVEZNI PARAMETRI
function test2()
{
$x="Zdravo";
echo "<p>Ime varijable x u funkciji test2 isto je kao i u funkciji test1,ali vrednost je:$x</p>";
}
test2();
?>
STATIČKI OPSEG
Definišu se pomoću naredbe static. <?php
function funkcija1()
Ako je potrebno poznavati vrednost {
promenljive i nakon što se funkcija ponovo static $x=5;
pozove potrebno je definisati statičku echo $x;
promenljivu. $x++;
}
Statičke promenljive definišu i izračunavaju funkcija1();//Izlaz je 5
svoju vrednost unutar samo jedne funkcije, ali funkcija1();//Izlaz je 6
funkcija1();//Izlaz je 7
prilikom svakog idućeg poziva funkcije sadrže ?>
vrednost iz prethodnog poziva te iste funkcije.
GLOBALNI OPSEG
Naredba global <?php
$x=5;//globalni opseg
Promenljiva definisana unutar glavnog $y=6;//globalni opseg
programa je globalna varijabla. function funkcija1()
{
Pristup globalnoj varijabli unutar funkcije global $x, $y;
$y=$x+$y;
samo ako se definiše u funkciji upotrebom }
naredbe global funkcija1();
echo $y;//Izlaz je 11
$GLOBALS ?>
$_SERVER
$_GET
$_POST
$_FILES
$_COOKIE
$_SESSION
GLOBALNI OPSEG
PHP takođe može da čuva globalne promenljive u nizu koji se zove $GLOBALS [indeks].
Indeks sadrži ime promenljive.
Ovaj niz je dostupan iz funkcija i može se direktno koristiti za ažuriranje globalnih varijabli.
<?php
$x = 5;
$y = 10;
function myTest() {
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}
myTest();
echo $y; // izlaz je 15
?>
PARAMETARSKI OPSEG
<?php
function funkcija1($x)
{
echo $x;
}
funkcija1(5);//Izlaz je 5
funkcija1(25);//Izlaz je 25
funkcija1(„Zdravo“);//Izlaz je Zdravo
?>
NIZOVI
60
NIZOVI
Asocijativni nizovi
Nizovi sa imenovanim ključevima kao indeksima
Višedimenzionalni nizovi
Nizovi sastavljeni od više nizova
INDEKSIRANI NIZOVI
Niz se incijalizuje - kreira pomoću naredbe array()
$lekovi=array(‘Andol’, ‘Brufen’, ‘VitaminC’);
Kopiranje jednog niza u drugi pomoću operatora =
Funkcija range() automatski pravi niz rastućih brojeva
$brojevi = range(1,10);
$neparni = range(1,10,2); //2 je korak za koji se povećava
$slova = range (‘a’, ’z’);
PRISTUPANJE SADRŽAJU NIZA
Sadržaju niza se pristupa pomoću imena promenljive i indeksa (ključa), koji se navodi
u uglastim zagradama
$x=$cars[0];
Sadržaj elementa niza menja se pomoću operatora =
$cars[0]=‘Ferari’;
Može se dodati i novi element
$cars[3]=‘Pežo’;
PRISTUPANJE SADRŽAJU NIZA
<?php
$gradovi=array("Beograd", "Niš", "Novi Sad");
$postBrojevi=array("11000", "18000", "21000");
echo $postBrojevi[0]. " ".$gradovi[0];
?>
<?php
$boja[0]="zelena";
$boja[3]="plava";
echo "$boja[0] $boja[3]<br>";
$boja[2]="crvena";
echo "$boja[0] $boja[2] $boja[3]";
?>
ISPISIVANJE STRUKTURE NIZA
var_dump() - za prikaz podataka koji imaju složenu strukturu (niz, objekat ....)
vraća tip, vrednost podataka i broj podataka koji su sačuvani
<?php
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
?>
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
echo $age['Peter'];//Izlaz je: 35
echo $age['Ben'];//Izlaz je: 37
echo $age['Joe'];//Izlaz je: 43
echo "Peter ima " . $age['Peter'] . " godina.";//Izlaz je: Peter ima 35 godina
?>
ASOCIJATIVNI NIZOVI
<?php
$podaci=array("Ime"=>"Ana","Prezime"=>"Petrović","Broj indeksa"=>"RT-1/19");
foreach($gradoviPbr as $key=>$value)
{
echo "Ključ=". $key. ", Vrednost je=". $value;
echo "<br>";
}
?>
OSNOVNE FUNKCIJE ZA RAD SA NIZOVIMA
73
PREBROJAVANJE ELEMENATA U NIZU
count($imeniza), sizeof($imeniza)
vraća ukupan broj elemenata niza
<?php
$students = array("Jack","Peter","Anne","David");
echo count($students);
?>
array_count_values($imeniza)
broji koliko jedinstvenih vrednosti ima u nizu
vraća asocijativni niz koji sadrži tabelu učestanosti
ključ je element niza, vrednost je broj ponavljanja
SORTIRANJE NIZA
<?php
$email=„laki.lakicevic@gs.viser.edu.rs";
$email_niz=explode("@", $email);
echo $email_niz[0];//Izlaz je: laki.lakicevic
echo $email_niz[1];//Izlaz je: gs.viser.edu.rs
?>
SPAJANJE ZNAKOVNIH VREDNOSTI U NIZ
implode(" ", $niz)
suprotno od funkcije explode()
spaja elemente niza u jedan niz znakova (string)
koristi definisani graničnik za odvajanje pojedinih elemenata.
<?php
$tekst_niz=array("Ja", "idem", "u", "skolu", "i", "dobar", "sam", "đak");
$tekst=implode(" ", $tekst_niz);
echo $tekst;//Izlaz je: Ja idem u skolu i dobar sam đak
?>
PRIMER – PRAVLJENJE TABELE
<?php
function napravi_tabelu($niz)
{
echo "<table border = 1>";
reset($niz);
$vrednost = current($niz);
while ($vrednost) {
echo "<tr><td>$vrednost</td></tr>\n";
$vrednost = next($niz);
}
echo '</table>';
}
$moj_niz = array('Prvo polje.','Drugo polje.','Trece polje.');
napravi_tabelu($moj_niz);
?>
ZADACI ZA RAZMIŠLJANJE
Da li ovo radi?
<body bgcolor="<?php echo '#993333'; ?>">