11
SOFTVERSKO INŽENJERSTVO 2 SK 2020/21 PREDMETNI NASTAVNIK: Doc. Dr Ljubica Kazi Datum: 11.12.2020. TEMA 16 - TEMA OSNOVE PHP PROGRAMIRANJA DOPUNA U ODNOSU NA ODRZANI CAS 1. DEFINICIJA PHP PHP je progamski jezik kreiran od strane Rasmus Lerdorf i nazvan je Personal Home Page ” tools. Sintaksa PHP je slična sintaksi C jezika. U primeni je na više od 20 miliona domena (www.php.net/usage.php ). PHP se procesira na veb serverima od strane PHP interpretera. 2. ALATI ZA RAD Da bismo omogućili izvršavanje programskog koda PHP, potrebno je instalirati web serverski softver Apache. Najčešće se ovaj softver distribuira u okviru paketa zajedno sa DBMS jezgrom MySQL. Neki od takvih paketa alata su: XAMPP [1] WAMP [2] Aplikaciju čine fajlovi sa ekstenzijom PHP. Sami fajlovi su u suštini tekstualne datoteke . PHP kod se može pisati u tekst editorima, ali je preglednije koristiti specijalizovane editore ili razvojna okruženja: Notepad ++ Visual studio code i drugi. 3. RAD SA ALATOM XAMPP I PODEŠAVANJA Kada se pokrene XAMPP control panel, startuju se servisi za Apache i MySQL. Za oba servisa se mogu podesiti portovi na tasteru CONFIG u odgovarajućem redu i gornjem tasteru config. Apache u fajlu httpd.conf, PODEŠAVANJE PORTOVA: 80, 88, 96 MySQL u fajlu my.ini, PODEŠAVANJE PORTOVA: 3306, 3307, 3308, 3309 Aplikacija se postavlja u folder: c:/xampp/htdocs, gde se kreira podfolder sa aplikacijom.

SOFTVERSKO INŽENJERSTVO 2

  • Upload
    others

  • View
    31

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SOFTVERSKO INŽENJERSTVO 2

SOFTVERSKO INŽENJERSTVO 2

SK 2020/21 PREDMETNI NASTAVNIK: Doc. Dr Ljubica Kazi

Datum: 11.12.2020.

TEMA 16 - TEMA OSNOVE PHP PROGRAMIRANJA DOPUNA U ODNOSU NA ODRZANI CAS

1. DEFINICIJA PHP

PHP je progamski jezik kreiran od strane Rasmus Lerdorf i nazvan je “Personal Home Page” tools. Sintaksa PHP

je slična sintaksi C jezika. U primeni je na više od 20 miliona domena (www.php.net/usage.php). PHP se procesira na veb serverima od strane PHP interpretera.

2. ALATI ZA RAD

Da bismo omogućili izvršavanje programskog koda PHP, potrebno je instalirati web serverski softver

Apache. Najčešće se ovaj softver distribuira u okviru paketa zajedno sa DBMS jezgrom MySQL. Neki od

takvih paketa alata su: XAMPP [1]

WAMP [2]

Aplikaciju čine fajlovi sa ekstenzijom PHP. Sami fajlovi su u suštini tekstualne datoteke. PHP kod se može pisati u tekst editorima, ali je preglednije koristiti specijalizovane editore ili razvojna okruženja:

Notepad ++ Visual studio code i drugi.

3. RAD SA ALATOM XAMPP I PODEŠAVANJA

Kada se pokrene XAMPP control panel, startuju se servisi za Apache i MySQL. Za oba servisa se mogu podesiti portovi na tasteru CONFIG u odgovarajućem redu i gornjem tasteru config.

Apache – u fajlu httpd.conf, PODEŠAVANJE PORTOVA: 80, 88, 96 MySQL – u fajlu my.ini, PODEŠAVANJE PORTOVA: 3306, 3307, 3308, 3309

Aplikacija se postavlja u folder: c:/xampp/htdocs, gde se kreira podfolder sa aplikacijom.

Page 2: SOFTVERSKO INŽENJERSTVO 2

Startovanje aplikacije, u zavisnosti od porta i naziva foldera: http://localhost:88/biblioteka/

STRUKTURA WEB APLIKACIJE

SA DINAMIČKOM INTEGRACIJOM IZ DELOVA

Ukoliko se koristi pristup da se web aplikacija dinamički integriše prilikom izvršavanja iz delova, onda

bismo imali sledeću strukturu:

BANER

TRAKA SA STATUSOM I LINKOVIMA ZA PRIJAVU I ODJAVU

MENI

GLAVNI DEO APLIKACIJE

FUTER

PRIMER:

KLJUČNI DELOVI PROGRAMSKOG KODA

Početna stranica Početna stranica koja se učitava u php aplikaciji se zove index.php.

Pozicioniranje php koda i odnos prema html

Page 3: SOFTVERSKO INŽENJERSTVO 2

Php kod se može pozicionirati: u okviru html koda kao osnove, kada imamo grafički prikaz

čist php kod, bez html delova.

Ključni elementi sintakse kojima se odreĎuje Php kod - postavlja se u okviru: <?php

?>

Kada se kombinuje sa html kodom, moguće je php deo umetnuti na početku pre html dela, unutar html dela u okviru head ili body odeljka. Kada se postavi na početku iznad html dela, prvi se izvršava.

Ključne karakteristike sintakse PHP jezika

Case sensitive

PHP kod je CASE sensitive. To znači da se mora voditi računa o velikim i malim slovima. MySQL kao DBMS po defaultu nije CASE sensitive, ali se može podesiti da jeste. To znači da se u

SQL upitima kojima se obraćamo MySQL bazi podataka iz PHP koda ipak treba obratiti pažnja na

velika i mala slova u nazivima tabela, polja i sl. Najbolje je ustanoviti konvenciju koje je potrebno da se pridržavamo i u SQL skriptu i kasnije u kodu SQL upita. Npr. ako ima više reči, najbolje je

koristiti PascalCasing ili odvajanje reči crticom: Naziv_Sa_Više_Reči. Korišćenje apostrofa

Koriste se 3 vrste apostrofa: jednostruki (vrednosni) „ … „ – za obeležavanje stringa koji se koristi unutar naredbi, kao podstring

unutar SQL upit stringa za konstante koje se pridružuju poljima i sl. dvostruki (vrednosni) “ … “– za obeležavanje stringa koji se koristi unutar naredbi, kao podstring

unutar SQL upit stringa za konstante koje se pridružuju poljima i sl.

kosi (strukturni) `… `- u okviru SQL upita, za obeležavanje naziva baze podataka, naziva tabela, naziva polja u tabelama baze podataka.

Integracija delova aplikacije

Za potrebe run-time učitavanja i integracije delova u okviru celine koriste se naredbe: include – za manje značajne delove koda, bez kojih bi eventualno moglo da se nastavi izvršavanje.

Taj deo koji se dodaje ukoliko ima neki problem (ne postoji ili ima gresku) se preskace i nastavlja

se izvrsavanje preostalog koda. PRIMER: include „NazivPodfoldera/NazivFajla.php‟

<?php include 'delovi/zaglavljeindex.php';?> require – za značajnije delove koda, bez kojih ne može da se izvršava ostatak programskog koda.

Taj deo koji se dodaje ukoliko ima neki problem (ne postoji ili ima gresku) prekida izvrsavanje preostalog koda.

PRIMER: require „NazivPodfoldera/NazivFajla.php‟ require 'delovi/klase/Konekcija.php';

Rad sa promenljivama Promenljive u php se obeležavaju dolarskim znakom $.

Promenljive nije potrebno deklarisati za odreĎeni tip podatka. Dodela vrednosti se realizuje simbolom =

Treba razlikovati proveru, tj. uporeĎivanje vrednosti unutar uslova sa dva znaka jednakosti ==. PRIMER:

$noviKorisnik =”Vrednost”;

Postoji mogućnost type castinga, odnosno transformacija i preciziranja tipa podatka.

$VrednostString =(string) $VrednostInteger;

Rad sa stringovima String vrednosti mogu se spajati sa ostalim tekstom na 2 načina:

korišćenjem simbola tačke PRIMER: $ImePrezime=$Ime.” “.$Prezime;

Page 4: SOFTVERSKO INŽENJERSTVO 2

umetanje unutar drugog stringa

PRIMER: $ImePrezime=”Marko Markovic”; echo “Dobrodosli, $ImePrezime”;

Rad sa kodnim rasporedima

Da bi se specijalni simboli slova latinice ili ćirilice mogli koristiti potrebno je izvršiti prilagoĎavanja: na nivou baze podataka

PRIMER: Kreiranje baze podataka:

CREATE DATABASE `TURISTICKAAGENCIJA` CHARACTER SET utf8 COLLATE utf8_general_ci;

Postavljanje upita – pre izvršavanja SQL upita pokreće se ova naredba: mysql_query('SET NAMES "utf8"',$ konekcijaMYSQL);

na nivou programskog koda html <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="sr-RS" xml:lang="sr-RS">

<meta charset="UTF-8"> na nivou podešavanja kodnog rasporeda dodeljenog prilikom snimanja samog fajla php

Primer: Potrebno je podesiti kodni raspored snimanja samog php fajla - u okviru Notepad ++ u ranijim verzijama je u okviru Encoding postojala opcija Encode in UTF-8 without BOM; u novijim

verzijama ta opcija ne postoji, već se samo postavlja UTF-8. BOM predstavlja nevidljivi bajt na

početku fajla PHP koji sprečava prikaz specijalnih slova latinice i ćirilice.

Prikaz sadržaja na ekran Koriste se sledeće funkcije:

print ”...” ili print ()– prikazuje vrednost stringa na ekran i vraća vrednost uspeha (1), pa se može koristiti u izrazima. Može uzeti samo jedan parametar.

echo ”...” ili echo () – prikazuje vrednost stringa na ekran i ne vraća vrednost pozivom (tip je void).Može uzeti više parametara. Brži je od print.

die() ili exit() – isto je – prikazuje vrednost stringa poruke na ekran i istovremeno izvršava izlaz iz tog dela programa sa statusom da je došlo do greške. Ne vraća vrednost.

Specifično podešavanje mora se realizovati kada echo sadrži html. S obzirom da echo uzima string u okviru ”...”, a sam html u podešavanju atributa elemenata takoĎe koristi ”...”, da se ne bi tumačilo da je

string prekinut prvom pojavom unutrašenjeg navodnika iz html-a, potrebno je: prvi način: postaviti kosu crtu ispred svakog internog navodnika ovako: \"

PRIMER: echo "<font face=\"Trebuchet MS\" color:#3F4534 size=\"2px\">$DATUMVESTI</font><br/>";

drugi način: koristiti jednostruke vrednosne apostrofe da se oiviči podešavanje atributa u html PRIMER: echo "<font face=‟Trebuchet MS‟ color:#3F4534 size=‟2px ‟>$DATUMVESTI</font><br/>";

Navigacija

Učitavanje stranica u web aplikaciji može biti:

interakcijom sa korisnikom – html elementi: o hyperlink

PRIMER: <a href="index.php" ><font face="Trebuchet MS" color="black" size="2px">&nbsp;&nbsp;Prikaz vesti</font></a>

o form action – sa navoĎenjem stranice koja se učitava nakon izbora dugmeta: PRIMER: <form ACTION="prijavaprovera.php" METHOD="POST">

- bez stranice koja se učitava, što uzrokuje da se učitava ponovo ista stranica: PRIMER: <form ACTION=" " METHOD="POST">

Page 5: SOFTVERSKO INŽENJERSTVO 2

Kada se ponovo učitava ista stranica, potrebno je proveriti da li je u pitanju prvo

učitavanje, ili učitavanje nakon korisnikovog pokretanja form action izborom nekog dugmeta.

Primer: provera i izvršavanje koda za specifičnu situaciju ponovnog učitavanja iste stranice; ovaj deo koda se izvršava samo ako je pritisnut taster koji se zove submit. Može

biti više raznih dugmadi i više blokova kodova za odgovarajuće dugme. Ovaj kod se stavlja na početku iste stranice u php bloku, iznad html dela.

if(isset($_POST['submit'])) {KOD KOJI SE IZVRŠAVA KADA SE FORMA PONOVO UČITA, KAO REAKCIJA NA DUGME

}

automatskim redirektovanjem, tj. učitavanjem druge stranice – php naredba: PRIMER:

if ($status=='admin'){ header ('Location:Welcome.php'); } else {

header ('Location:prijava.php'); }

Razmena podataka izmeĎu stranica Razmena podataka izmeĎu stranica se može realizovati:

sesija – postavljanjem podataka u promenljive koje pripadaju sesiji, na raspolaganju su svim stranicama iste aplikacije, dok je sesija otvorena.

redirektovanjem putem URL(get) - prosleĎuje se vrednost promenljive u okviru URL na drugu stranicu. Tretira se kao get metoda i tako se očitava na drugoj stranici. PRIMER: header ('Location:PrikazPodataka.php?filter=4');

get metoda – vrednosti iz elemenata forme se prosleĎuju promenljivima i vrednostima koje se vide

u URL PRIMER: form ACTION="PrikazPodataka.php" METHOD="GET"

Očitavanje vrednosti u okviru druge stranice: $PreuzetaVrednost=$_GET['NazivGrafičkeKontroleForme'];

POST metoda – prosleĎivanje podataka tako da nisu vidljivi na drugi stranicu. PRIMER: form ACTION="PrikazPodataka.php" METHOD="POST" Očitavanje u okviru druge stranice:

$PreuzetaVrednost=$_POST['NazivGrafičkeKontroleForme'];

Rad sa sesijama

Omogućavanje da se radi sa naredbama koje se tiču sesije

session_start();

Otvaranje sesije – prilikom prve dodele vrednosti u neku promenljivu $_SESSION["korisnik"] = $noviKorisnik;

Čitanje podataka iz sesije $korisnik=$_SESSION["korisnik"];

Poništavanje svih promenljivih u sesiji

session_unset();

Uništavanje sesije session_destroy();

Elementi HTML forme i veza ka PHP – kreiranje i očitavanje vrednosti

Kod elemenata HTML formi izuzetno je bitan atribut name, jer se koristi za očitavanje vrednosti.

datum: <input name="datum" type="date" required />

broj:

<input name="cenazadan" type="number" size="80" required maxlength="5" VALUE="" />

Page 6: SOFTVERSKO INŽENJERSTVO 2

tekst:

<input name="nazivmesta" type="text" size="80" required maxlength="250" VALUE="" TABINDEX=7/>

veći tekst u više redova: <textarea name="opissmestaja" rows="8" cols="60" required />unesite...</textarea>

combo sa fiksnim vrednostima:

<select name="kategorijasmestaja" required TABINDEX=9> <option value="izaberite">izaberite...</option>

<option value="hotel">hotel</option>

<option value="privatan smestaj">privatan smestaj</option> <option value="hostel">hostel</option>

</select>

file uplad kontrola: <input type="file" name="file"><br><br>

check box:

<font face="Trebuchet MS" color="darkblue" size="2px"><input type="checkbox" name="karTV"

value="TV">TV</font></br>

combo sa dinamičkim vrednostima: <select name="NazivDrzave" required TABINDEX=9>

<option value="izaberite">izaberite...</option> <?php

if ($num_rowsdrzave>0) {

for ($rowdrzava = 0; $rowdrzava < $num_rowsdrzave; $rowdrzava++)

{ $NAZIVDRZAVE=mysql_result($resultdrzave,$rowdrzava,"NAZIV");

echo "<option value=\"$NAZIVDRZAVE\">$NAZIVDRZAVE</option>"; } //for

?> </select>

Upload fajlova

$name = $_FILES["file"]["name"];

//$size = $_FILES['file']['size'] //$type = $_FILES['file']['type']

$tmp_name = $_FILES['file']['tmp_name'];

$error = $_FILES['file']['error'];

if (isset ($name)) {

if (!empty($name))

{ $location = 'images/';

if (move_uploaded_file($tmp_name, $location.$name)) {

//echo 'Uploaded'; }

} else

{

//echo 'please choose a file'; }

}

Čitanje vrednosti nakon submit dogaĎaja forme (npr ako je metod POST ili GET): $Datum=$_POST['Datum'];

Page 7: SOFTVERSKO INŽENJERSTVO 2

Ili $Datum=$_GET['Datum'];

Rad sa XML

XML fajl: <?xml version="1.0" encoding="utf-8"?>

<konekcija> <host>localhost:3309</host>

<korisnik>root</korisnik>

<sifra></sifra> <nazivbaze>turistickaagencija</nazivbaze>

</konekcija>

php kod za čitanje iz XML fajla $xml=simplexml_load_file("parametrikonekcije.xml") or die("Error: Cannot create object");

$host=$xml->host; $korisnik=$xml->korisnik;

$sifra=$xml->sifra;

$this->nazivbaze=$xml->nazivbaze;

Rad sa bazom podataka

Kreiranje MySQL baze podataka sql skriptom

CREATE DATABASE `Baza_dokumenti` CHARACTER SET utf8 COLLATE utf8_general_ci;

create table `Baza_dokumenti `.`DOKUMENT`

(

IDDOKUMENTA int NOT NULL AUTO_INCREMENT PRIMARY KEY,

NAZIVDOKUMENTA varchar(300) not null,

ORGJEDINICA int not null,

DATUMOBJAVE date,

DATUMUSVOJEN date,

OPISDOKUMENTA text,

IDTIPA` int not NULL

);

create table `dokument`.`TIPDOKUMENTA`

(

IDTIPDOKUMENTA int NOT NULL AUTO_INCREMENT PRIMARY KEY,

NAZIVTIPA varchar(60) not null

);

ALTER table `dokument`.`DOKUMENT` add constraint FK_TIPDOKUMENTA foreign key (IDTIPA) references

`dokument`.`TIPDOKUMENTA` (IDTIPDOKUMENTA) on delete restrict on update cascade;

Verzije php naredbi za rad sa mysql bazom podataka starija verzija – naredbe tipa mysql

novija verzija – naredbe tipa mysqli

Starija verzija mysql

// ostvarivanje konekcije ka DBMS MySQL

$konekcijaMYSQL = mysql_connect($host, $korisnik, $sifra);

Page 8: SOFTVERSKO INŽENJERSTVO 2

// ostvarivanje konekcije ka bazi podataka

$konekcijaDB = mysql_select_db($this->nazivbaze, $this->konekcijaMYSQL);

// zatvaranje konekcije ka DBMS mysql_close($konekcijaMYSQL;

// sql upit tipa select

$SQL = "SELECT * FROM `".$azapodataka."`.`KORISNIK` WHERE KORISNICKOIME='".$korisnickoime."' AND SIFRA='".$sifra."'";

// izvršavanje sql upita tipa select i punjenje memorijske kolekcije zapisa $result = mysql_query($SQL);

// odreĎivanje broja zapisa u memorijskoj kolekciji

$num_rows = mysql_num_rows($result);

// for ciklus for ($row = 0; $row < $num_rows; $row++)

// izdvajanje polja iz jednog reda zapisa iz memorijske kolekcije MESEC=mysql_result($result,$row,"MESEC");

// aktivan sql upit

$SQL = "INSERT INTO `".$bazapodataka."`.`KORISNIK` (IME, PREZIME, KORISNICKOIME, SIFRA, EMAIL, URLSlike, statusucesca, DatumRodjenja) VALUES ('$Ime', '$Prezime', '$KorisnickoIme', '$Sifra',

'$Email', '', '$Status', '$DatumRodjenja')";

// izvršavanje aktivnog upita, gde vraćena vrednost može biti 1 ili 0 i govori o uspehu realizacije upita

$retval = mysql_query( $SQL, $konekcijaMYSQL);

Novija verzija mysqli

// uspostavljanje konekcije sa DBMS i bazom podataka

$konekcijaDB = mysqli_connect($host,$korisnik,$sifra,$nazivbaze); // izvršavanje aktivnog upita $SQL = "INSERT INTO `".$this->bazapodataka."`.`DOKUMENT` (NAZIVFAJLA, NAZIVDOKUMENTA, ORGJEDINICA,

DATUMOBJAVE, DATUMUSVOJEN, OPISDOKUMENTA, IDTIPA, KORISNIK) VALUES ('$NazivFajla','$NazivDokumenta',

$OrgJedinica, $DatumO, $DatumU, '$OpisDokumenta', $IDTIPA, $KORISNIK)";

$retval = mysqli_query($konekcijaDB, $SQL);

// izvršavanje upita tipa select

$SQL = "SELECT * FROM `".$azapodataka."`.`KORISNIK` WHERE KORISNICKOIME='".$korisnickoime."' AND SIFRA='".$sifra."'";

$result = mysqli_query($konekcijaDB, $SQL);

// while ciklus

while ($row = $result->fetch_assoc()){

// izdvajanje vrednosti

$ID= $row['IDDOKUMENTA'];

Rad sa transakcijama

// otvaranje transakcije

mysql_query("SET AUTOCOMMIT=0"); mysql_query("START TRANSACTION");

Page 9: SOFTVERSKO INŽENJERSTVO 2

// izvršavanje više aktivnih upita $SQL = "INSERT INTO ...";

$retval = mysql_query( $SQL, $konekcijaMYSQL);

$SQL = "UPDATE ..."; $retval = mysql_query( $SQL, $konekcijaMYSQL);

// završavanje transakcije

mysql_error();

if (empty($greska)) {

mysql_query("COMMIT"); echo "Snimljeno!";

} else

{ mysql_query("ROLLBACK");

echo "NIJE Snimljeno! Greska:".$greska;

}

Rad sa klasama

Strukturu klase čine atributi i metode. Modifikatori pristupa koji se najčešće koriste su private i public.

Za korišćenje atributa i metoda unutar klase obavezno je pisanje $this-> Pozivanje metoda i atributa izvan klase podrazumeva instanciranje, a zatim korišćenje $objekat->atribut

ili $objekat->metoda.

Primer klase:

<?php class ZemljaDB{

// atributi

private $Konekcija; private $bazapodataka;

public $kolekcijazemlje; public $brojzapisazemlje;

// metode

// ------- konstruktor

public function __construct($NovaKonekcija, $NovaBaza){ // podrazumevamo da je otvorena konekcija, u okviru klase Konekcija

$this->Konekcija = $NovaKonekcija;

$this->bazapodataka = $NovaBaza; }

public function UcitajSveZemlje(){

$SQLdrzave = "select * from `".$this->bazapodataka."`.`ZEMLJA` ORDER BY NAZIV ASC"; $this->kolekcijazemlje = mysql_query($SQLdrzave);

$this->brojzapisazemlje = mysql_num_rows($this->kolekcijazemlje); }

public function SnimiNovuZemlju($Oznaka, $Naziv, $BrojMesta) { $SQL = "INSERT INTO `".$this->bazapodataka."`.`ZEMLJA` (OZNAKA, NAZIV, BROJMESTA) VALUES

('$Oznaka', '$Naziv', $BrojMesta)"; $retval = mysql_query( $SQL, $this->Konekcija->konekcijaMYSQL);

}

Page 10: SOFTVERSKO INŽENJERSTVO 2

public function DajVrednostPolja ($nazivpolja, $rednibrojzapisa) {

$Vrednost=mysql_result($this->kolekcijazemlje,$rednibrojzapisa,$nazivpolja); return $Vrednost;

}

public function ObrisiZemlju($Oznaka) { $SQL = "DELETE FROM `".$this->bazapodataka."`.`ZEMLJA` WHERE OZNAKA='".$Oznaka."'";

$retval = mysql_query( $SQL, $this->Konekcija->konekcijaMYSQL ); $greska= mysql_error();

return $retval; }

public function UcitajZemlju($Oznaka) { //

$SQL = "select * from `".$this->bazapodataka."`.`ZEMLJA` WHERE OZNAKA='".$Oznaka."'"; $this->kolekcijazemlje = mysql_query($SQL);

$this->brojzapisazemlje = mysql_num_rows($this->kolekcijazemlje);

} // kraj procedure

public function IzmeniZemlju($StaraOznaka, $Oznaka, $Naziv, $BrojMesta) {

$SQL = "UPDATE `".$this->bazapodataka."`.`ZEMLJA` SET OZNAKA='".$Oznaka."', NAZIV='".$Naziv."',

BROJMESTA=".$BrojMesta." WHERE OZNAKA='".$StaraOznaka."'"; //echo $SQL;

$retval = mysql_query( $SQL, $this->Konekcija->konekcijaMYSQL );

$greska= mysql_error();

return $retval; }

public function ProveriJedinstvenostOznake($NovaOznaka){

$SQL = "select * from `".$this->bazapodataka."`.`ZEMLJA` WHERE OZNAKA='".$NovaOznaka."'"; $result = mysql_query($SQL);

$num_rows = mysql_num_rows($result);

$postoji=false; if ($num_rows>0) {

$postoji=true; }

return $postoji; }

} // zavrsetak klase

?>

Korišćenje klase

require 'delovi/klase/ZemljaDB.php'; $novaZemljaDB = new ZemljaDB($novaKonekcija, $bazapodataka);

$postoji = $novaZemljaDB->ProveriJedinstvenostOznake($Oznaka); if (!$postoji)

{

$novaZemljaDB->SnimiNovuZemlju($Oznaka, $Naziv, $BrojMesta); }

Prijava-odjava korisnika

Početna stranica sadrži u okviru trake ispod banera hiper link ka stranici za prijavu korisnika.

Page 11: SOFTVERSKO INŽENJERSTVO 2

U okviru stranice za prijavu, nakon unosa korisničkog imena i šifre, na tasteru prijava pokreće se

kod kojim se proverava u bazi podataka da li postoji taj korisnik. Ukoliko postoji korisnik, otvara se sesija i postavljaju vrednosti podataka korisnika u promenljive

sesije. Nakon toga se automatski redirektuje učitavanje nove stranice koja u traci ispod banera ima

hiperlink za odjavu korisnika. Korišćenjem hiperlinka za odjavu, automatski se prikazuje početna stranica index.php.

Kada se ponovo učita index.php izvršava se kod za poništavanje sesije i to je konačno deo koda kojim se suštinski odjavljuje korisnik.

LITERATURA [3] Janet Valade: PHP & MySQL, www.it-ebooks.info

[1] xamp - https://www.apachefriends.org/index.html [2] wamp - http://www.wampserver.com/en/

TEST PITANJA 1. Objasniti karakteristike fajlova PHP aplikacije.

2. Objaniti konfigurisanje XAMPP.

3. Objasniti pozicioniranje php koda u odnosu na html. 4. Objasniti ključne elemente sintakse kojima se odreĎuje php kod.

5. Ključne karakteristike sintakse PHP jezika. 6. Razlika strukturnih i vrednosnih apostrofa.

7. Način integracije delova aplikacije. 8. Razlika include i require.

9. Rad sa promenljivama u PHP. 10. Kako se spajaju strigovi?

11. Rad sa kodnim rasporedima, UTF 8 – nivoi podešavanja.

12. Naredbe za prikaz sadržaja na ekran. 13. Specifičnosti sintakse prilikom prikaza html sadržaja unutar echo naredbe.

14. Objasniti navigaciju. 15. Načini učitavanja drugih stranica.

16. Objasniti ponovno ucitavanje stranice kada je form action prazan i kako realizujemo proveru. 17. Nacini razmene podataka izmedju stranica.

18. Rad sa sesijom. 19. Koja je php naredba za čitanje podataka poslatih putem forme?

20. Realizacija COMBO boxa sa html uz dinamicko ucitavanje i prikaz sadrzaja.

21. Realizacija upload fajlova. 22. Naredbe za konektovanje na DBMS i bazu podataka u mysql i mysqli.

23. Naredbe za izvršavanje upita tipa select u u mysql i mysqli. 24. Rad sa transakcijama u PHP.

25. Rad sa klasama u PHP. 26. Login / Log off – objasniti realizaciju.