Primer izrade dinamičkog sajta U ovom odeljku opisademo postupak izrade jednostavnog dinamičkog sajta elektronske prodavnice. Struktura sajta Sajt se sastoji iz četiri celine. Prvi deo, početna strana, sadrži navigacioni meni i vesti koje se učitavaju iz baze. Drugi deo predstavlja katalog proizvoda koji su u ponudi i takođe se učitava iz baze. Tredi deo su stranice koje se odnose na opis poslovanja e-prodavnice i nisu od velikog značaja u ovom odeljku. Četvrti deo predstavlja deo za administraciju vesti, proizvoda i korisnika, koji je dostupan samo administratoru. Priprema Pre samog kreiranja sajta, potrebno je da se obezbedi odgovarajudi web server, kao i baza podataka. U našem primeru Podešavanje XAMPP Najjednostavniji način za podešavanje servera na vašem vlastitom računaru je da koristite XAMPP. Učitajte XAMPP instalaciju za vašu verziju Windowsa, sa adrese http://www.apachefriends.org/en/xampp.html. Nakon učitavanja XAMPP-a, pokrenite setup i sledite date instrukcije. Instalirajte Apache i MySQL servise kako je preporučeno: Nakon završene instalacije, uverite se da je instalacija uspešno završena tako što dete otidi na adresu http://localhost/. Ako je sve bilo uspešno, trebali bi da vidite sledede: Čestitamo, XAMPP je sada uspešno instaliran. Instalirali smo Apache web server i MySQL sistem za upravljanje bazama podataka. 1
Baza podataka Baza se sastoji od slededih tabela: Proizvod (IDproizvoda, Tip, Naziv, Opis, Cena, Slika) Vesti (IDvesti, Naslov, Datum, Telo, PrikazatiYN) Korisnik (IDkorisnika, Ime, Prezime, Adresa, Email, Username, Password, AccessLevel) Da biste kreirali MySQL bazu, u browseru idite na http://localhost/xampp/ U odeljku Create new database upišite eprodavnica i kliknite na dugme NAPRAVI. 2
Nakon toga treba dodati tri tabele u bazu. To se radi tako što se u odeljku Create new table on database eprodavnica unesu nazivi tabela i broj njihovih polja. Da biste ubacili vrednosti u odgovarajudu tabelu, kliknite na ikonicu Browse a zatim na Insert new row i unesite potrebne podatke. 3
Da ne biste svaki put prolazili kroz ovaj postupak, jednom kreiranu i popunjenu bazu možete da eksportujete tako što dete u gornjem meniju izabrati Export i podesiti odgovarajude opcije. Dobijate tekstualni fajl, koji kasnije, pri kreiranju nove baze, možete da importujete klikom na stavku SQL u gornjem meniju i izvršavanjem SQL upita. Definisanje sajta Nakon pripreme, prvi korak je definisanje sajta u Dreamweaveru, tj. kreiranje zajedničkog foldera za sve fajlove koji de se koristiti, biranje serverske tehnologije (u našem primeru to je PHP), definisanje servera za testiranje i udaljenog servera. 1. Iz menija Site izaberite opciju Manage Sites, pa opciju New i na kraju opciju Site. 2. Dodelite naziv svom sajtu. Kliknite next. 3. Izaberite da želite da koristite serversku tehnologiju, i to PHP MySQL. Kliknite next. 4. Izaberite prvu opciju Edit and test locally i izaberite folder, npr. C:\Program Files\EasyPHP1-8\www\EProdavnica\. Kliknite next. 5. Za URL testing servera unesite http://localhost/eprodavnica/. Kliknite next. 6. Izaberite da želite da koristite udaljeni server. Kliknite next. 7. Pošto demo sajt da testiramo na lokalnoj mašini, a kasnije da uploadujemo na Internet, izabrademo opciju Local/Network. Za lokaciju unesite istu kao u koraku 4. Kliknite next. 4
8. Izaberite da ne želite check in/out. Kliknite next, pa Done. 5
6
7
8
Povezivanje sa bazom Kada kreirate novi fajl index.php, otvorite pano Applications / Databases Kliknite na plus ( + ) pa na MySQL Connection, da biste kreirali konekciju ka bazi. Popunite sve potrebne podatke i kliknite na Select da biste odabrali bazu. Kliknite OK. 9
Nakon toga, u panou Databases možete da vidite tabele u bazi. Login forma Kada na index.php stavite sve potrebne elemente, tabele, menije i kada primenite svoj CSS stil, potrebno je da dodate formu koja de da sadrži dva Text Field-a za Username i Password, kao i jedno Submit dugme. Text Field-ovima dodelite nazive preko panoa Properties, da biste se kasnije lakše snalazili. Na panou Application / Server Behaviors kliknite na plus ( + ), zatim na User Authentication i na kraju na Log In User. 10
Popunite polja kako je prikazano na slededoj slici: Učitavanje teksta iz baze Ako želite da se na strani prikazuju vesti, ili bilo koji drugi elementi iz baze, potrebno je da prvo definišete Recordset. Na panou Server Behaviors kliknite na plus ( + ) pa na Recordset. Popunite polja 11
kako je to prikazano na slededoj slici: Sada pređite na pano Application / Bindings i videdete da se tu pojavio Recordset koji ste malopre definisali, sa svojim komponentama. Jednostavno prevucite mišem određene komponente u delije tabele koja de da prikazuje vesti. Da biste videli sve vesti iz baze, a ne samo prvu, potrebno je da izaberete red tabele u koji ste ubacili dinamičke elemente, i da na panou Server Behaviors kliknete na plus ( + ) pa na Repeat Region. Izaberite da se prikazuju svi rekordi iz baze: 12
Nakon toga, oblast na koju ste primenili ovaj Server Behavior (u našem slučaju red tabele) se ograničava i dobija mali tab na kome piše Repeat. Učitavanje slika iz baze Kada definišete Recordset (u ovom slučaju to je rs_proizvod jer demo u katalogu prikazati i slike proizvoda), postupak za ubacivanje dinamičkih slika je slededi. Na meniju Insert izaberite Image, i u sekciji Select file name from: izaberite Data sources, umesto File System koji je označen po defaultu. U Recordsetu izaberite Sliku i kliknite na OK. Posle ovih operacija, na poziciji u tabeli koju ste rezervisali za slike, trebalo bi da vidite oznaku za dinamičku sliku: Ograničavanje pristupa Ako želite da vaš katalog gledaju samo ulogovani korisnici, možete da iskoristite Server Behavior Restrict Access to Page. Popunite polja na slededi način: 13
Brojevi 0 i 1 koji su selektovani (plava boja) označavaju da strani mogu da pristupe korisnici koji imaju access level 0 i 1, a to su upravo vrednosti koje u bazi označavaju običnog korisnika (0) i administratora (1). Ostali, neulogovani posetioci de imati vrednost NULL tako da im nede biti omoguden pristup i bide redirektovani na stranu denied.php. Slično se radi i sa logovanjem administratora. Pravo pristupa strani ima samo korisnik sa vrednošdu access level-a 1, i on može da učita stranu administracija.php, dok se ostali korisnici redirektuju na stranu koja prikazuje grešku o neautorizovanom pristupu. Rad sa podacima u bazi (Insert, Update, Delete) Pre nego što počnete da radite sa ubacivanjem novih, izmenom ili brisanjem postojedih elemenata iz baze, morate da kreirate odgovarajudi Recordset, kako je to ranije opisano. Zatim treba da kreirate formu u koju dete da stavite sve potrebne komponente (Text Field, Checkbox, Dugme...). Poželjno je da tim komponentama preko panoa Properties dodelite nazive, kako biste se kasnije lakše snalazili. Nakon toga na panou Server Behaviors kliknite na plus ( + ) pa na Insert Record. 14
Popunite potrebne podatke kako je to prikazano na slededoj slici: Obratite pažnju na to da li ste izabrali odgovarajudu konekciju ka bazi i odgovarajudu tabelu iz baze. U našem slučaju radimo sa operacijama Insert, Update i Delete nad tabelom Vesti, tako da je ta tabela i izabrana. Posle toga, za svaki red u odeljku Columns, iz combobox-a Value treba da odaberete naziv odgovarajude komponente na formi, kako je prikazano na slededoj slici: 15
U ovom primeru, vrednost tb_vesti_ins2 je naziv Text Field-a u koji se unosi naslov vesti, i klikom na dugme Ubaci, upisana vrednost de se upisati u bazu, u tabelu Vesti, polje Naziv. Promena vrednosti u bazi je nešto komplikovanija. Ustvari, ono što dodatno treba da uradite jeste da kreirate dinamičke Text Field-ove. Pošto ste kreirali novu formu i na nju stavili sve potrebne komponente, sada označite Text Field, u koji de da se upisuju vrednosti iz baze, a koji želite da pretvorite u dinamički. U panou Properties, u delu Init val kliknite na ikonicu munje. Otvoride se prozor u kome dete da izaberete odgovarajudi element Recordset-a. Postupak ponovite za sve dinamičke komponente. 16
Sada na panou Server Behaviors kliknite plus ( + ) pa Update Record, i ponovite proceduru za ubacivanje novog rekorda u tabelu u bazi. Isti postupak primenjujete za izbacivanje rekorda iz baze, samo što umesto Update Record, na panou Server Behaviors izaberete Delete Record. Na kraju bi pano Server Behaviors trebalo da izgleda slično kao na ovoj slici: 17