Višestruka selekcija stavki combo-box-a
Omogucite korisnicima vaših web aplikacija mogucnost simultanog izbora više opcija uz pomoc specijalnog combo-box-a
Da korisnicima vaših Web aplikacija omogucili da simultani izbor više opcija koje nudi jedan HTML combo-box, <select> tag mora da bude odreden i sa mutiple parametrom. Pored ovog, bitan je i parametar size kojim odredujemo broj vidljivih opcija unutar jednog combo-box-a. U HTML specifikaciji 3.2 ovaj parametar funkcioniše samo ukoliko je odreden i parametar multiple.
U novijim specifikacijam (HTML 4.0) možete upisati size u pojedinacni combo-box da bi videli više od jedne opcije, u isto vreme.
Kada imamo combo-box sa mogucnošcu višestruke selekcije, svaki CGI zahtev (zahtev od strane klijenta) ce sadržati par parametara u obliku:
naziv=vrednost,
i to za svaku izabranu stavku combo-box-a, gde naziv - predstavlja naziv parametra odreden unutar taga <select>, a vrednost1, vrednost2... - predstavljaju vrednosti parametara <option> taga koji su izabrani od strane korisnika.
PHP combo-box
PHP automatski konvertuje jedan ovakav CGI zahtev u niz varijabli, sa izabranim vrednostima. Da bi iskoristi poslate vrednosti potrebno je samo da odredite naziv parametra select taga, isti kao i naziv niza:
naziv="stavke[]"
Ovim cete pomoci PHP-u da kreira niz $stavke iz jednog CGI zahteva:
stavke[]=vred1?stavke[]=vred2...
koji ce biti popunjen izabranim vrednostima iz combo-box-a
HTML kod sa combo-box-om koji podržava višestruku selekciju mora da bude nešto slicno ovom:
<select name='meni[]' multiple>
<option value='1'>Jabuke</option>
<option value='2'>Banane</option>
</select>
Sada možete da napišete PHP skript kojeg ce pokrenuti submit kôd, a koji ce "rukovati" sa nizom izabranih vrednosti (meni[]).
PHP primer
Ovo i PHP primera koji ce izabrane stavke combo-box-a odštampati na ekranu:
<%
$i=0;
while($i<count($meni)){
print $meni;
print ", ";
$i=$i+1;
}
%>
Oblast delovanja varijabliSledi vrlo važna prica koja se tice varijabli, a to je oblast delovanja varijabli i njihov "vek trajanja"
Do sada smo naucili kako se varijable definišu i upoznali smo se sa vrstama varijabli. Sledi vrlo važna prica koja se tice varijabli, a to je oblast delovanja varijabli i njihov "vek trajanja". Oblast delovanja varijable predstavlja deo programskog koda unutar koga data varijabla egzistira. Vecina PHP varijabli ima lokalni karakter, što znaci da je data varijabla "vidljiva" samo unutar jedne procedure (ili funkcije), a nije "vidljive" za druge procedure u PHP skriptu.
U sledecem PHP primeru videcemo dve oblasti delovanja varijabli:
<?php
$a = 1; /* globalna oblast delovanja */
Function Stampaj () {
echo $a; /* referenca ka varijabli lokalnog tipa*/
}
Stampaj ();
?>
Prethodni skript nece prouzrokovati nikakv izlaz (znaci, nece biti štampana jedinica) jer naredba "echo" referencira lokalnu varijablu "$a", a lokalnoj "verziji" ove varijabli nije dodeljena nikakva vrednost. Zbog ovoga, kada želimo da unutar funkcije upotrebljavamo globalne varijable moramo ih tako i definisati (globalne unutar funkcije):
<?php
$a = 1;
$b = 2;
Function Sabiranje () {
global $a, $b;
$b = $a + $b;
}
Sabiranje ();
echo $b;
?>
Rezultat gornjeg skripta bice "3". Deklarisanjem varijabli "$a" i "$b" kao globalne unutar funkcije, mi smo izvršili referenciranje na promenljive koje se nalaze van funkcije. Pri tome, nema nikakvih ogranicenja u broju globalnih varijabli kojima cete manipulisati unutar jedne funkcije. U slucaju da u gornjem primeru, u funkciji "Sabiranje()", niste definisali varijable kao globalne - rezultat bi bio "2".
Prethodni primer možemo napisati i na drugi nacin.
<?php
$a = 1;
$b = 2;
Function Sabiranje () {
$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}
Sabiranje ();
echo $b;
?>
Ovde se pristup spoljnim varijablama vrši preko ugradenog PHP definisanog niza "$GLOBALS". Niz $GLOBALS je asocijativni niz naziva globalnih varijabli, gde indekse predstavljaju nazivi varijabli, te se preko njih dolazi do vrednosti samih globalnih varijabli.
Još jedna bitna mogucnost kakda govorimo o oblasti delovanja varijabli, je i mogucnost njihovog definisanja kao statickih varijabli ("Static"). Staticke varijable egzistiraju samo u loklanoj funkciji, s tim što ne gube svoju vrednost kada programom napustimo datu funkciju. Pogledajte sledeci primer:
<?php
Function Brojac () {
$a = 0;
echo $a;
$a++;
}
Brojac () ;
echo '
' ;
Brojac () ;
?>
Ova funkcija je uglavnom beskorisna pošto svaki put kada se pozove (u našem slucaju dva puta), vrednost varijable "$a" postavlja na nulu i štampa nulu. Instrukcijom "$a++" vršimo povecanje vrednosti varijable za jedan, ali to ovde nema nikakfu funkciju, zbog toga što nakon ove instrukcije funkcija završava, a pri njenom ponovnom pozivu vrednost se vraca na nulu. Da bi funkcija "Brojac()" stvarno bila korisna, varijablu "$a" moramo definisati kao staticku:
<?php
Function Brojac () {
static $a = 0;
echo $a;
$a++;
}
Brojac () ;
echo '
' ;
Brojac () ;
?>
Sada ce nakon svakog poziva funkcije, vrednost varijable "$a" uvecati za jedan (kao na slici). Ovakvim definisanjem vrednost lokalne varijable cuvamo u memoriji i nakon završetka date funkcije.
Kreiranje PHP brojacaIako vecina provajdera kao i nezavisnih servisa nudi besplatno registrovanje posetilaca nije na odmet da i sami, radi vece pouzdanosti, kreirate sopstvene brojace
Logika same metode za kreiranje brojaca je vrlo jednostavna. U suštini, radi se o tome da svaki put kada neko poseti vaš sajt i zatraži neki fajl, funkcija ce otvoriti predefinisani *.txt fajl i dodace novi podatak na kraj fajla. Na ovaj nacin dobijamo jednostavni brojac poseta. Sve što treba da uradite je da pozovete predefinisani fajl sa stranice koju pratite funkcijom require, sledecim kodom:
<?php
require("brojac.php");
?>
Nakon ovoga, kreiracemo fajl brojac.txt. U dva posebna fajla cuvacemo sve hit-ove i sve site refere-re, da bi saznali odakle dolaze posetioci na datu stranicu.
Kreiranje koda
Za pocetak kreiracemo brojac.php, koji ce otvarati prethodna dva fajla i smestiti u njih sve potrebne informacije. Kôd za dodavanje-brojanje hit-ova mogao bi da izgleda ovako:
<?php
$ref = $HTTP_REFERER;
$datum = date("d/m @ g:i A", time());
$fajl = "brojac.txt";
$fd = fopen ($fajl, "r+");
$sadrzaj = fread ($fd, filesize ($fajl));
$novi = $sadrzaj+1;
fclose($fd);
$fd = fopen ($fajl, "w");
fwrite($fd,$novi);
fclose ($fd);
Kôd za pracenje refere-ra mogao bi da izgleda ovako:
$reffajl = "ref.txt";
$fd = fopen ($reffajl, "a");
fwrite($fd, "Referer: ".$ref." - Datum: ".$date." - Broj hit-a: ".$novi."\r\n");
fclose($fd);
?>
Kada isprobate kod u nekoliko puta ucitate u browser, stranicu koja sadrži prvi deo koda (require("brojac.php")), fajl ref.txt ce izgledati kao na slici (radi se o lokalnom serveru).
Instalacija PHP komponentiŠta vam je sve potrebno da bi na svom kompjuteru, "u lokalu", radili sa PHP-om. I naravno gde pronaci potrebne komponente. Kako izvršiti instaliranje jednog od mnogobrojnih PHP paketa
Zbog svih onih koji tek pocinju da ulaze u svet PHP-a, objasnicemo postupak instalacije PHP razvojnog okruženja, odnosno svih potrebnih elemenata za razvoj PHP skriptova u svima nama poznatom Windows-u. Pošto se PHP izvršava na serveru, razvoj bi trebao da se odigrava na vašem licnom racunaru koji je povezan stalnom vezom sa host provajderom. Na njemu bi pisali HTML-PHP programski kod i to odmah testirali na serveru. Ali pošto taj "luksuz" vecina ne može da priušti, rešenje se nalazi u instalaciji sopstvenog lokalnog Web servera sa podrškom za PHP. Ovo ce vam pružiti veliku udobnost u radu, a kada završite neki projekat lako ga je prebaciti na server vašeg host provajdera.
Pošto vecina Host provajdera radi na platformi Linux/Apache/PHP/MySQL, i vi bi trebali da na svom racunaru instalirate ovu opciju radi potpune kompatibilnosti (a ovo je malo komplikovanije rešenje). Ali, ne mora sve da bude tako, sve ovo može da se odradi i na vecinskoj Windows platformi. Rešenje se nalazi u instalaciji besplatnih gotovih paketa (namenjenih Windows-ima) koji sadrže sve potrebne elemente. Preporucujemo vam jedan paket, koji u sebi sadži sve potrebno:
* Apache web server, verzije 1.3.14
* PHP 4.0.2
* Perl 5
* MySQL 3.23
Paket je proizvod firme "NuSphere" koja je vlasništvo velike softverske kuce Progress Software, a instalacioni paket možete skinuti sa adrese:
www.nusphere.comPaket je velicine oko 23 Mb (zapakovan), a pored gore navedenih komponenti u paketu cete naci i dosta literature u elektronskom obliku. Kada skinete instalacioni paket i raspakujete ga, bice dovoljno da startujete instalaciju preko fajla setup.exe. Po startovanju, otvorice vam se prozor browser-a u kome treba samo da kliknete dugme Install i krenuce instalacija koja ce potrajati nekoliko minuta (prozor je kao na gornjoj slici). I to bi bilo sve, sada ste spremni za svoje prve korake u PHP-u.
Zašto koristiti MySQL kao SUBP?MySQL predstavlja relacioni sistem za upravljanje bazama podataka koji omogucava da organizujete podatke na najbolji moguci nacin
U jednom od prethodnih PHP priloga mogli ste videti najjednostavniji nacin za povezivanje PHP stranica i baza podataka. U datom slucaju spojili smo se na MySQL server baza podataka, a mogli smo na bilo koji sistem za upravljanje podacima. Ali, zašto smo izabrali baš MySQL i zašto se ovaj sistem i koristi u najvecem broju slucajeva?
MySQL predstavlja relacioni sistem za upravljanje bazama podataka (RSUBP) koji omogucava da cuvate podatke, da im pristupate i da ih organizujete na najbolji moguci nacin (ovo zadire u široku temu zvanu Organizacija podataka). Pri tome, ovaj RSUBP može da služi u organizaciji podataka i to od nivoa obicne liste podataka, pa sve do velike kolekcije tabela sa milionskim brojem slogova. Inace, relacione baze podataka su vrlo mocna alatka koja obezbeduje da crpite informacije iz višestrukih izvora i pri tome vršite njihovu komparaciju, kombinovanje i sumiranje radi dobijanja prave informacije u bilo koje doba. Na primer, možete dobiti jednostavnu listu klijenata, ili iskombinovati klijente sa njihovim narudžbinama i pozicijama koje su narucili. Baze podataka obezbeduju potrebnu strukturu i organizaciju koja je potrebna radi operacija za efikasan pristup podacima, cak i kada ovo podrazumeva veliku kolicinu informacija i veliki broj tabela (entiteta).
Ipak, šta je to što MySQL cini tako posebnim:
* MySQL je Open Source RSUBP. Dostupan je na Internetu i pri tome je besplatan. Ovo je veliki kontrast drugim komercijalnim sistemima za baze podataka (kao što su Oracle, MS SQL, Informix i sl.), kreiranih od strane velikih kompanija, koji su pri tome veoma skupi. Medutim, za one koji žele da naruce MySQL sistem na CD-u, i pri tome prime odgovarajucu štampanu dokumentaciju, veliki broj firmi obezbeduje ovu opciju za malu sumu (stotinak dolara). Pored toga, neke od ovih firmi nude i tehnicku podršku i trening kurseve.
* Brzina. Svaki od sistema za baze podataka ima oblasti u kojima se posebno istice. Za MySQL, jedna od ovih oblasti je brzina - široko je priznato da su odgovori ovog sistema brži nego kod drugih sistema. Upravo zbog brzine, MySQL je sistem izbora za Internet aplikacije, gde se zbog velikog saobracaja zahteva velika brzina.
* SQL-orijentacija. MySQL podržava standardni Structured Query Language (SQL), najkorišceniji jezik za definisanje i ekstrakciju podataka.
* Lakoca upotrebe. Distribucija MySQL je relativno mali paket, koji ne zahteva stotine i stotine megabajta kao drugi SUBP. Razvojna filozofija ovog sistema fokusirana je na široku i laku upotrebljivost, gde se u paket ubacuju samo neophodne funkcije. Ovo MySQL cini lakim za razumevanje, lakim za instaliranje, podešavanje i administraciju.
* Portabilnost. MySQL može da se pokrene na brojnim paltformama, a najvažnije su UNIX, Linux i Windows.
* Rapidni razvoj. Savremeni dodaci za MySQL ukljucuju podršku za transakcije, replikaciju, tekstualno pretraživanje i RAID fajl-sisteme. Pored toga, može se ukljuciti i podrška za zakljucavanje na nivou sloga.
* Interoperabilnost. MySQL može da se koristi u kombinaciji sa velikim brojem drugog softvera, koji je takode besplatan. Ove alatke vam omogucavaju da na lak nacin iskoristite sve mogucnosti MySQL-a.
* Programibilnost. Ukoliko postojeci softver ne odgovara vašim potrebama, možete kreirati sopstveni. Dostupni su interfejsi za veliki broj programskih jezika, kao što su: C, C++, Perl, PHP, Python, Java, Ruby, itd.