Docsity
Docsity

Pripremite ispite
Pripremite ispite

Studirajte zahvaljujući brojnim resursima koji su dostupni na Docsity-u


Nabavite poene za preuzimanje
Nabavite poene za preuzimanje

Zaradite bodove pomažući drugim studentima ili ih kupite uz Premium plan


Školska orijentacija
Školska orijentacija


Zadaci-Vezbe-Web programiranje-Informatika (9), Vežbe od Web programiranje

web programiranje, informatika, vezbe iz web programiranja, zadaci sa vezbi, zadaci, zadaci iz web programiranja,Nizovi u jeziku PHP, Nizovi sa numeričkim indeksiranjem, Veza sa bazom podataka, Pristup MySQL bazi na lokalnom serveru, Rad sa sesijama i cookies, Funkcije, Sintaksa Regularnih Izraza

Tipologija: Vežbe

2012/2013

Učitan datuma 08.07.2013.

dcplover
dcplover 🇸🇷

4.5

(164)

799 dokumenti

1 / 6

Toggle sidebar

Ova stranica nije vidljiva u pregledu

Ne propustite važne delove!

bg1
Materijal za vežbe iz Web programiranja, IMI PMF Kragujevac
Funkcije i OOP u PHP5 1/6
Web programiranje
Vežbe 9 - Rad sa bazom podataka SQLite
Od verzije 5.0, PHP ne podržava MySQL bazu odmah po instalaciji podrazumevanog paketa,
već je potrebno da korisnik (ili administrator) napravi izbor da li će koristiti klasičan ext/mysql ili
ext/mysqli modul (ili oba), što neiskusnim korisnicima ponekad može biti dodatni balast.
Nasuprot tome, od verzije PHP 5.0, u jezgro PHP-a dodat je modul za podršku SQLite bazi
podataka koji funkcioniše na doslovno svakoj PHP instalaciji. SQLite je, za razliku od MySQL-a,
baza podataka bazirana na fajlovima, a ne na klijent-server paradigmi. Namenjena je jednostavnijiim
zadacima i manjem obimu baze, ali poseduje skoro sve klasične SQL komande i pored toga “teži”
manje od 500KB. SQLite je projekat otvorenog koda i dosta se koristi i u raznim muzičkim plejerima,
mobilnim telefonima... Baza u SQLite može imati veličinu do čak 2TB i u nekim situacijama je čak
brža od MySQL-a.
Kreiranje baze i tabele u bazi
Evo jednostavnog načina da se kreira baza u fajlu i tabela u toj bazi:
C:\SQLite>sqlite3 preduzece.db
SQLite version 2.18.17
sqlite> create table radnik(
...> sradnik integer primary key,
...> ime varchar(255),
...> adresa varchar(255),
...> plata float
);
sqlite> insert into radnik(ime,adresa,plata) values('Arnold Svarceneger', 'JNA 433',
3567.78);
sqlite> insert into radnik(ime,adresa,plata) values('Kimi Raikonen', 'Djure Jaksica 89',
2564.11);
sqlite> insert into radnik(ime,adresa,plata) values('Muhamed Ali', 'Sumarice 11',
1564.22);
sqlite> select * from radnik;
1|Arnold Svarceneger |JNA 433 |3567.78
2|Kimi Raikonen |Djure Jaksica 89 |2564.11
3|Muhamed Ali |Sumarice 11 |1564.22
Primećuje se da kolone koje su označene kao INTEGER PRIMARY KEY, SQLite tretira i kao
AUTO_INCREMENT, tj. ukoliko nisu navedeni, ključevi se automatski dodeljuju. Iz PHP-a postoje
čak 3 načina da se pristupi SQLite bazi, i to:
interfejsom proceduralnog tipa
interfejsom objektnog tipa
pomoću PDO drajvera
http://www.sqlite.org/different.html
http://www.chipkin.com/articles/sqlite-vs-mysql-short-summary
pf3
pf4
pf5

Delimični pregled teksta

Preuzmite Zadaci-Vezbe-Web programiranje-Informatika (9) i više Vežbe u PDF od Web programiranje samo na Docsity!

Web programiranje

Vežbe 9 - Rad sa bazom podataka SQLite

Od verzije 5.0, PHP ne podržava MySQL bazu odmah po instalaciji podrazumevanog paketa,

već je potrebno da korisnik (ili administrator) napravi izbor da li će koristiti klasičan ext/mysql ili

ext/mysqli modul (ili oba), što neiskusnim korisnicima ponekad može biti dodatni balast.

Nasuprot tome, od verzije PHP 5.0, u jezgro PHP-a dodat je modul za podršku SQLite bazi

podataka koji funkcioniše na doslovno svakoj PHP instalaciji. SQLite je, za razliku od MySQL -a,

baza podataka bazirana na fajlovima, a ne na klijent-server paradigmi. Namenjena je jednostavnijiim

zadacima i manjem obimu baze, ali poseduje skoro sve klasične SQL komande i pored toga “teži”

manje od 500KB. SQLite je projekat otvorenog koda i dosta se koristi i u raznim muzičkim plejerima,

mobilnim telefonima... Baza u SQLite može imati veličinu do čak 2TB i u nekim situacijama je čak

brža od MySQL-a.

Kreiranje baze i tabele u bazi

Evo jednostavnog načina da se kreira baza u fajlu i tabela u toj bazi:

C:\SQLite> sqlite3 preduzece.db SQLite version 2.18. sqlite> create table radnik( ...> sradnik integer primary key, ...> ime varchar(255), ...> adresa varchar(255), ...> plata float );

sqlite> insert into radnik(ime,adresa,plata) values('Arnold Svarceneger', 'JNA 433', 3567.78); sqlite> insert into radnik(ime,adresa,plata) values('Kimi Raikonen', 'Djure Jaksica 89', 2564.11); sqlite> insert into radnik(ime,adresa,plata) values('Muhamed Ali', 'Sumarice 11', 1564.22);

sqlite> select * from radnik;

1|Arnold Svarceneger |JNA 433 |3567. 2|Kimi Raikonen |Djure Jaksica 89 |2564. 3|Muhamed Ali |Sumarice 11 |1564.

Primećuje se da kolone koje su označene kao INTEGER PRIMARY KEY, SQLite tretira i kao

AUTO_INCREMENT, tj. ukoliko nisu navedeni, ključevi se automatski dodeljuju. Iz PHP-a postoje

čak 3 načina da se pristupi SQLite bazi, i to:

 interfejsom proceduralnog tipa

 interfejsom objektnog tipa

 pomoću PDO drajvera

http://www.sqlite.org/different.html

http://www.chipkin.com/articles/sqlite-vs-mysql-short-summary

PDO pristup SQLite bazi

I ovde PDO pokazuje sve svoje prednosti. Pored višeg nivoa apstrakcije i mogućnosti da se isti

kod koristi na različitim bazama podataka, PDO dodaje i mogućnost korišćenja SQLite verzije 3 , što

kao mogućnost ne postoji ukoliko se koristi klasičan SQLite interfejs. PHP zajednica definitivno ide

ka tome da se ubuduće skoro sav posao pristupa bazama podataka, osim nekih specifičnih slučajeva,

odvija preko PDO interfejsa.

PDO citanje iz SQLite tabele radnik

Radnici

query() vraca PDOStatement objekat $pdo_izraz = $dbh->query($sql); // Svi podaci se vracaju u obliku niza asocijativnih nizova $niz = $pdo_izraz->fetchALL(PDO::FETCH_ASSOC);

// Iterisanje po vracenim rezultatima echo ""; echo "ImeAdresaPlata"; foreach($niz as $radnik) { echo "".$radnik['ime'].""; echo "".$radnik['adresa'].""; echo "".$radnik['plata'].""; } echo "";

} catch(PDOException $e) { echo "GRESKA: "; echo $e->getMessage(); }

// Zatvaranje konekcije vrsi se jednostavnim dodeljivanjem null $dbh = null; ?>

Knjiga_db.php

dbh = new PDO($konekcioni_string, self::korisnik, self::sifra); } catch(PDOException $e) { echo "GRESKA: "; echo $e->getMessage(); } }

// Zadatak destruktora je zatvaranje konekcije prema bazi function __destruct() { $this->dbh = null; }

/**

  • Vraca niz asocijativnih nizova svih podataka o knjigama
  • @return array */ public function sve_knjige() { try { $sql = "SELECT id, naslov, autor, godina,cena FROM knjiga";

$pdo_izraz = $this->dbh->query($sql); $niz = $pdo_izraz->fetchALL(PDO::FETCH_ASSOC);

return $niz; } catch(PDOException $e) { echo "GRESKA: "; echo $e->getMessage(); } }

  • Vraca asoc. niz podataka o knjizi ciji se ID salje kao argument
  • @param int $id
  • @return asoc. array */ public function podaci_o_knjizi($id) { try { $sql = "SELECT id, naslov, autor, godina, cena FROM knjiga WHERE id=$id"; $pdo_izraz = $this->dbh->query($sql); $obj = $pdo_izraz->fetch(PDO::FETCH_ASSOC); return $obj; } catch(PDOException $e) { echo "GRESKA: "; echo $e->getMessage(); } }

/**

  • Izvrsava transakciju prenosa iznosa $iznos sa knjige $id1 na knjigu $id
  • @param int $id
  • @param int $id
  • @param float $iznos / public function izvrsi_transakciju($id1, $id2, $iznos) { try { / Pocni transakciju, ovim se iskljucuje autocommit / $this->dbh->beginTransaction(); / Izmeni podatke u bazi / $sth = $this->dbh->exec("UPDATE knjiga SET cena=cena-$iznos WHERE id=$id1"); $sth = $this->dbh->exec("UPDATE knjiga SET cena=cena+$iznos WHERE id=$id2"); $this->dbh->commit(); / Konekcija se vraca u autocommit mod */ } catch(PDOException $e) { echo "GRESKA: "; echo $e->getMessage(); } }

} // Kraj klase Knjiga_db

?>