Molim vas da se prijavite ili se registrujete.
Prijavite se korisničkim imenom, lozinkom i dužinom sesije

VLADIX SAT forum

29.03.2024. 06:37:24
Vijesti: Sve što Vam treba, tu smo mi !

Autor Tema: PHP tutorijal  (Pročitano 16211 puta)

0 članova i 1 gost pregledaju ovu temu.

Van mreže VLADIX

  • www.vladix.net
  • Administrator
  • Super clan
  • *
  • Poruke: 1607
  • Like: +96/-4
  • Pol: Muškarac
    • VLADIX.NET

PHP tutorijal
« poslato: 20.09.2008. 13:31:22 »
osnove PHP jezika
Definisanje konstanti
PHP u sebi, kao i svi drugi jezici, nosi nekoliko predefinisanih konstanti, a naravno obezbeduje i mehanizam za definisanje novih konstanti tokom run-time-a

K ao što znate, iz drugih programskih jezika, konstante predstavljaju identifikatore dodeljenih vrednosti koji se ne menjaju tokom izvršavanja programa. I sam naziv konstanti je logican, jer "promenljive" (varijable) programer može menjati, dok se vrednost konstanti ne može menjati. PHP u sebi nosi nekoliko predefinisanih konstanti, a naravno obezbeduje i mehanizam za definisanje novih konstanti tokom run-time-a. Inace vrlo su slicne varijablama, s tim što se za razliku od njih definišu uz pomoc funkcije "define()" i kasnije im ne može biti dodeljena druga vrednost.

U sledecim redovima predstavicemo vam neke od predefinisanih konstanti, koje možete koristiti u svakom trenutku:

    * PHP_VERSION - konstanta koja sadrži vrednost verzije PHP parsera koja se koristi.
    * PHP_OS - konstanta koja sadrži string - naziv operativnog sistema na kome se radi PHP parser. Na primer: Linux
    * TRUE - vrednost true - 1.
    * FALSE - vredniost false - 0.

Da bi isprobali ove konstante, kreiracemo mali PHP skript koji ce "odštampati" vrednost ovih konstanti:

<?php
echo PHP_VERSION;
echo TRUE;
echo PHP_OS;
?>

Rezultat ce zavisiti od vaše konfiguracije.

Kao što smo rekli, pored predefinisanih možemo definisati i naše korisnicke konstante. Za definisanje konstanti se koristi ugradena funkcija "define()", cije je sintaksa sledeca:

int define (naziv_konstante, dodeljena_vrednost [, int mala_slova])

Ovom sintaksom definišemo konstante, koje su vrlo slicne varijablama, osim u sledecem:

    * Ispred identifikatora konstanti ne ide znak "$".
    * Konstantama možete pristupiti sa bilo kog mesta u skriptu, bez obira na oblast prostiranja.
    * Kada se jednom definišu, ne mogu biti redefinisane ili nedefinisane.

Argumenti "naziv_konstante" i "dodeljena_vrednost" predstavljaju, sam naziv konstante i njenu vrednost, a argument "mala_slova" odreduje osetljivost na upotrebu malih-velikih slova. Po default-u konstanta je osetljiva na upotrebu malih-velikih slova (nije isto "KONSTANTA" i "Konstanta"), a ako argumentu dodelite vrednost "1" - onda nece biti. Za primer definisacemo dve konstante i izvršiti ispis njihovih vrednosti:

<?php
define ("RECENICA", "Recenica koja ce se ispisati.");
echo RECENICA;
?>

Skript ce rezultovati ispisom vrednost dodeljenu konstanti "RECENICA".



prilagodavanje velicine slika uz pomoc PHP-a
Laka izmena velicine slike
Po potrebi uz pomoc PHP-a možemo online promeniti velicinu slika i na taj nacin smanjiti potrebne rasurse za web sajt

R ecimo da imate (vi ili neko drugi) web sajt cija je svrha prodaja robe široke potrošnje. Svakako da bi ste tada morali da formirate online katalog proizvoda, a isti taj katalog bi bio upotpunjen ukoliko bi svakom artiklu pridružili sliku samog proizvoda. Shodno prethodnom, kada korisnik/posetilac lista katalog, uz svaki artikal trebalo bi mu ponuditi mali slicicu (thumbnail) koja bi mu bolje ukazivala o cemu se radi, sa mogucnošcu uvecanja iste slike.

Problem nastaje kada imate veliki katalog, od recimo 5.000 artikala. To znaci da morate imati 5.000 slika u originalnoj velicini i još 5.000 istih takvih ali umenjenih (tzv. thumnail-ova). Ova solucija ne samo da je donekle komplikovanija , vec bi zahtevala i angažovanje mnogo vecih resursa, a samim tim i vece troškove (hostinga).

Rešenje je u korišcenju samo 5000 slika u originalnoj velicini koje bi samo za potrebe listanja kataloga (thumbnails) smanjili na odgovarajucu velicinu. Recimo da su nam sve slike u katalogu velicine 500 x 300 piksela, za potrebe funkcije listanja kataloga iste te slike smanjicemo na 50 x 30 piksela.

<?php
function promena_velicine($sirina, $visina, $target) {

//uzima se širina i visina slike, pa se za utvrdivanje procenta uzima veca vrednost

if ($sirina > $visina) {
$percentage = ($target / $sirina);
} else {
$percentage = ($target / $visina);
}

//utvrduje se nova vrednost množenjem sa procentom, i zatim se zaokružuje

$sirina = round($sirina * $percentage);
$visina = round($visina * $percentage);

//u HTML-u, unutar image taga, ispisujemo novi umanjeni format slike

return "width=\"$sirina\" height=\"$visina\"";

}
?>

Naravno, ovu funkciju možemo iskoristiti i ukoliko imamo bazu slika razlicitih velicina, pošto koristimo procentualno umanjenje, s tim što ce nam tada i thumbnail-ovi biti razlicite umanjene velicine. Sve što je potrebno je da ugradenom funkcijom getimagesize() ocitamo dimenzije slike:

$slika = getimagesize("slike/artikal001.jpg");

Ovim smo dobili promenljivu $slika, koja je u stvari niz tacnih informacija o odredenoj slici koju želimo da prikažemo. Indeks 0 (nula) - ($slika[0]) predstavlja širinu slike, a iza indeksa 1 ($slika[1]) stoji visina slike. Na kraju cela funkcija za promenu velicine izgledala bi ovako:

<?php

//preuzivanje velicine slike i "punjenje" niza
$slika = getimagesize("slike/artikal001.jpg");

?>

<!- standardni html image tag -->

<img src="slike/artikal001.jpg" <?php promena_velicine($slika[0],
$slika[1], 100); ?> >

Parametar 100 odreduje maksimalnu mogucu velicinu visine ili širine slike koja se umanjuje.

Van mreže VLADIX

  • www.vladix.net
  • Administrator
  • Super clan
  • *
  • Poruke: 1607
  • Like: +96/-4
  • Pol: Muškarac
    • VLADIX.NET

Odg: PHP tutorijal
« Odgovor #1 poslato: 20.09.2008. 13:31:29 »
Rad sa bazama podataka
Unos podataka u MySQL bazu
U ovom prilogu predstavljamo vam kako iskoristiti baze podataka, ali ovaj put za upis postojece tabele i cuvanje podataka bitnih za web aplikacije

N akon upoznavanja sa nacinima pristupa bazama podataka koje se nalaze na MySQL serveru, i išcitavanja i prikazivanja tih podataka u browser-u, predstavicemo vam kako iskoristiti iste baze podataka, ali ovaj put za upis postojece tabele.

Za potrebe primera, pretpostavicemo da imamo bazu podataka "mojaBaza" i tabelu "Proizvod" u njoj, sa poljima [id], [naziv], [tip] i [kolicina].

Za pocetak, da bi uopšte nešto upisali u bazu podataka mora prethodno te podatke preuzeti od korisnika i zatim ih proslediti odgovarajucoj PHP skripti. Zato je potrebno da prvo kreiramo HTML formular koji ce služiti za unos traženih podataka. Formular može da izgleda npr. ovako:

<HTML>
<HEAD>
<TITLE> Formular unosa u magacin</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<center>
<FORM METHOD=POST ACTION="dodaj.php">
<input type="hidden" name="id" value="NULL">
<TABLE border="0" cellpadding="0" cellspacing="0">
<TR height="20">
<TD colspan="3">Unos u magacin</TD>
</TR>

<TR>
<TD>Naziv proizvoda</td>
<TD> <input name="naziv" type="text"> </TD>
</TR>

<TR>
<TD >Tip proizvoda</td>
<td> <input name="tip" type="text" > </TD>
</TR>

<TR >
<TD >Kolicina</td>
<td> <INPUT NAME="kolicina" TYPE="text"> </TD>
</TR>

<tr>
<td><center>
<input name="submit" type="submit" value="Unesi">
</td>
</tr>
</TABLE>
</FORM></BODY></HTML>

Kao što možete videti na slici, imamo tri ulazna INPUT polja koja služe za unos jednog novog sloga u tabelu [Proizvod]. Pritiskom na dugme [Unesi], metodom POST podaci se šalju skripti "dodaj.php" na obradu. Stranica "dodaj.php" ce imati sledeci kod:

<?
$DBhost = "naziv_servera";
$DBuser = "kor_ime";
$DBpass = "lozinka";
$DBName = "mojaBaza";
$table = "Proizvodi";

$connection = mysql_connect ("naziv_servera", "kor_ime", "lozinka")
or die("Povezivanje nije moguce.");

$sqlquery = "INSERT INTO $table
VALUES('$id', '$tip', '$naziv','$kolicina')";

$results = mysql_query($sqlquery);

mysql_close();

print " <HTML> <TITLE> Unos u bazu podataka </TITLE> <BODYBGCOLOR=\"#FFFFFF\"> <center>
<table border=\"0\"width=\"500\"><tr><td>";

print "<p> <center>Upravo ste u bazu uneli sledece podatke <p>

    ";
    print " Naziv proizvoda: $naziv
    <p>Tip proizvoda: $tip
    <p>Kolicina: $kolicina

</td></tr>
</table>
</center></BODY></HTML>";
?>

Na pocetki koda inicijalizujemo varijable koje se koriste u skripti, a zatim se konecionom varijablom $connection spajamo na bazu i odgovarajucu tabelu. Jednostavno, umesto ovih gore navedenih (naziv_servera, kor_ime, lozinka...), unesite sostvene vrednosti varijabli. Zatim dolazi ona ljucna linija PHP koda, a to je SQL naredba kojom u tabelu [Proizvodi] unosimo novi slog sa vrednostima prenetim iz formulara.

Prvo kreiramo sam SQL upit koji smeštamo u $sqlquery varijablu i zatim tu varijablu prosledujemo ugradenoj funkciji mysql_query. Zapazite još i polje [id], odnosno varijablu. Ovo polje u tabeli je AUTO_INCREMENT polje, tako da tu ne moramo imati nikakav ulaz, tj. za njega se brine sam MySQL sistem (uvecava vrednost u svakom novom slogu za korak 1). I to je to, ostaje na vama da isprobate ovaj primera, i da ga kasnije primenite u sopstvene aplikacije.

Van mreže VLADIX

  • www.vladix.net
  • Administrator
  • Super clan
  • *
  • Poruke: 1607
  • Like: +96/-4
  • Pol: Muškarac
    • VLADIX.NET

Odg: PHP tutorijal
« Odgovor #2 poslato: 20.09.2008. 13:32:00 »
lokalizacija u PHP-u (I deo)
Prilagodavanje aplikacija individualnim potrebama korisnika
U ovom clanku cemo Vam predstaviti rješenja za programiranje "više-jezicnih" stranica na veoma jednostavan nacin


K ao što smo spomenuli, PHP ima ugradenu podršku za lokaliranje odredenih opcija. Glavna komanda za prilagodavanje lokalizacije je set_locale():

<?php
setlocale (LC ALL, 'nl NL');
?>

 

Ovim ste rekli PHP-u da koristi holandska (odnosno nizozemska) imena gdje god ima priliku. Ta podrška zavisi od sistema i podrške sistema za druge jezike. Druge korisne komande za lokalizaciju su strftime(), localeconv() i strcoll() [1].

Napomena:
Tekst je objavljen u najnovijem broju racunarskog casopisa ASDFdeveloper.com koji je namenjen programerima i projektantima.

 

 

Medutim, u slucaju da želite da koristite neke opcije ili jednostavno neki jezik za koji u PHP-u nema podrške, morate sami napraviti alternativno rješenje. Na to se odnosi drugi dio ovog clanka.

Lokalizacija teksta
Posjetioci ASDFdeveloper.com stranice dolaze najvecim dijelom iz balkanskih država, i to uglavnom Bosne i Hercegovine, Hrvatske, Srbije i Crne Gore. Za razliku od ostalih država, u Hrvatskoj se imena mjeseci zovu drugacije (Januar = Sijecanj, Febraur = Veljaca ...)- Ako sa hrvatskom IP adresom otvorite ASDFdeveloper.com stranica, mjeseci ce biti prikazani na hrvatskom jeziku. To je jedan mali primjer korištenja lokalizacije.
Ako na drugu stranu morate da izvršite lokalizaciju dosta razlicitih stvari, onda se morate poslužiti drugim rješenjima. Zamislite da imate stranicu koja nudi razne informacije na engleskom i našem jeziku i posjetioci mogu odabrati izmedu ova dva jezika. To znaci da morate sve informacije imati na raspolaganju na dva razlicita jezika.
Prije nego što su dinamicke stranice našle svoje stalno mjesto na Internetu, vvebmasteri i dizajneri (i naravno programeri) imali su samo mogucnost da sve HTML stranice kreiraju više puta na više razlicitih jezika. To je znacilo puno više razlicitih file-ova i puno više posla. Ako koristite PHP, to uopšte nije problem.
Ako na svojoj stranici imate formular za registraciju ,kao npr. na :
http://www.asdfdeveloper.com/?action=reqistracija

na kojoj imate nekoliko razlicitih polja koje posjetioci moraju ispuniti, samim tim imate i neko-liko razlicitih rijeci koje morate prevesti na tri razlicita jezika:
- Ime i prezime (First name and surname, Vorname und Nachname)
- Korisnicko ime (Username, Benutzername)
- Korisnicka sifra (Passvvord, Passvvort)
- Pomoc (Help, Hilfe)
Kao što vidite ovdje imamo 4 razlicita stringa na tri razlicita jezika. Najlakše je ako ih snimite u jedan multidimenzionalni array:

<?php
$reg form = array
(
"nas"=>
(
"ime i prezime"=> "Ime i prezime",
"korisnicko ime"=> "Korisnicko ime",
"korisnicka sifra"=> "Korisnicka sifra"
"pomoc"=> "Pomoc"
),
"en" =>
(
"ime i prezime"=> "First name and surneme"
"korisnicko ime"=> "Username",
"korisnicka sifra'=> "Password",
"pomoc"=> "Help"
),
"de" =>
(
"ime i prezime"=> "Vorname und Nachname",
"korisnicko ime"=> "Benutzername",
"korisnicka sifra'=> "Passwort",
"pomoc"=> "Hilfe"
)
);
?>

Kao što vidite kreirali smo jedan multidimenzionalni array reg_form (skracenica za registracijaska forma) sa 3 podarraya za svaki jezik. "en" oznacava engleski, a "de" njemacki jezik (Deutsch).

Posjetiocu morate naravno uvijek ponuditi mogucnost da izabere drugi jezik, i da svaku stranicu može prikazati na drugom jeziku pomocu jednog klika. Ako na Vašoj stranici nema registracije korisnika, onda možete podatke snimiti u cookie odnosno session (vidi ASDF.developer, brojeve 6-9). Kada posjetioc izabere odedeni jezik, informacija se snima u cookie i onda je raspoloživa uvijek na svakoj podstranici.

U cookie snimate string "nas" ili "en" ili "de", zavisno od toga, šta je posjetioc izabrao, i cookie-ju možete dati ime "jezik". U Vašem programu bi to ovako izgledalo:

<?php
// informacija o izabranom jeziku je
// snimljena u $ COOKIE['jezik']
// i zbog kraceg pisanja snimamo vrijednost
// cookie-ja u varijablu $lang
$lang = $ COOKIE['jezik'];
// prikazujemo ime i prezime
echo $reg form[$lang]["ime i prezime"];
// prikazuje korisnicko ime
echo $reg form[$lang]["korisnicko ime"];
// prikazuje pomoc
echo $reg form[$lang]["pomoc"];
// itd. za druga polja i vrijednosti
?>

Ako je korisnik odabrao engleski jezik, onda ce vrijednost "en" biti upisana u cookie. Pošto se podarray-i u našem $reg_form arrayu zovu isto tako, onda je dovoljno da vrijednost direktno iz cookie-ja ubacite u varijablu kao u gornjem primjeru.

Naravno poželjno je ako bi provjerili da li vrijednosti iz cookie-ja postoji u array-u, i ako ne postoji da odaberete neku standardnu vrijednost, kao npr. "nas". To možete uraditi na sljedeci nacin:

<?php
if
    (in array($ COOKIE [ ' jezik' ] , $reg form))
   {
          $lang = $ COOKIE [ ' jezik' ] ;
else
{
          $lang = ' nas ' ;
}
?>

Tako izbjegavamo mogucnost da posjetioc rucno upiše vrijednost u cookie i pozove nešto neželjno.

U sljedecem dijelu cemo govoriti o malo naprednijim nacinima korištenja lokalizacije. Ali zapamtite da skoro sve funkcioniše na nacin slican ovom primjeru, ali da se koriste druge finese koje Vam mogu biti veoma korisne na stranici

Van mreže VLADIX

  • www.vladix.net
  • Administrator
  • Super clan
  • *
  • Poruke: 1607
  • Like: +96/-4
  • Pol: Muškarac
    • VLADIX.NET

Odg: PHP tutorijal
« Odgovor #3 poslato: 20.09.2008. 13:32:31 »
Manipulacija slika
Editovanje i prikazivanje slika pomocu PHP-a

PHP se sastoji od nekoliko desetina ekstenzija, medju kojima se nalazi i GD, graficka biblioteka, koja je zaduzena za kreiranje izmedju ostalog JPEG i PNG (izgovara se ping) slika, koje u svijetu webdizajna i webprogramiranja veliku ulogu igraju. Nazalost, GD ne podrzava vise GIF format, koji za kompresovanje koristi LZW algoritam, a na koji firma Unisys ima patent. Ako ipak zelite da GD podrzava GIF format, preko vecine search masina mozete naci starije verzije GD-a, u kojima je ta podrska bila ukljucena. PNG (Portable Network Graphics) format polako dostize GIF, ali iako vecina browsera podrzava PNG, ova trka ce potrajati jos dugo.

PHP raspolaze sa veoma dosta komandi (preko 50) koje odlicno rade sa GD ekstenzijom (ili bibliotekom). Mogucnosti su teoretski neogranicene, iako se naravno mora napomenuti da GD nije Adobe Photoshop ili Corel Draw. GD je kao i vecina drugih ekstenzija automatski ukljucena u sve novije verzije PHP-a, i jedino je morate aktivirati. Vise informacija o ekstenzijama mozete naci ovdje.

Ja sam sebi kao zadatak postavio, da napisem PHP kôd koji ce automatski ispuniti jednu kartu za voz (koja je malo umanjena u odnosu na prave karte, i naravno sa malo pojednostavljenim podacima). Na pocetku imamo kartu kao sto je vidite ovdje:

Kao sto vidite na karti, osim nekoliko informativnih podataka, nalaze se tri polja, koja mi moramo ispuniti: Name (ime), Country (Drzava) i Passport (broj pasosa). To znaci da moramo imati tri varijable koje preko odgovarajuceg formulara moramo poslati na ka funkciji koja ce ispisati podatke na kartu, tako da je osoba moze istampati. Nas formular, koji necemo ovdje praviti, mora imati minimum tri polja za nase tri varijable, i submit dugme, koje ce nakon klika na njega, pozvati skriptu u kojoj se nalazi funkcija koja ce upisati ova tri podatka na nasu kartu.

Za pocetak moramo definisati, u kojem formatu ce nasa slika biti. Ja sam izabrao JPG format. Takodje je vazno da znamo koje dimenzije ima nasa karta odnosno slika, a to je u nasem slucaju: 482x170 (duzina x visina) piksela. Slika se zove gd_karta_prazna.jpg. To mozete vidjeti takodje ako pogledate source kôd ove stranice.

Nakon sto smo definisali tri vazna podatka:

    * format: jpg
    * dimenzije: 482x170 px
    * ime: gd_karta_prazna.jpg

Vrijeme je da pocnemo sa prakticnim radom. Nasa slika gd_karta_prazna.jpg nece u stvarnosti biti modifikovana, nego cemo mi ustvari kreirati jednu temporarnu kopiju ovog file-a, na nju cemo upisati nas tekst, prikazati je u browseru i obrisati.

Nas kôd na pocetku izgleda ovako:

<?php
$slika_karte = "/usr/local/www/site8/www/gd_karta_prazna.jpg";
$name = "Mirza Muharemagic";
$country = "Bosnia and Hercegovina";
$passport = "BH4764390";
?>

Kao sto vidite tu su nase tri varijable koje treba da upisemo na sliku, i link do slike, odnosno karte. Pripazite da upisete pravi i ako je moguce apsolutni link do slike.

Kao sto malo prije rekosmo, moramo napraviti kopiju nase karte. To radimo s jednom prakticnom komandom imagecreatefromjpeg(). Ova komanda kreira od jedne postojece slike jednu novu sliku, odnosno kopiju. Primjenu komande mozete vidjeti ispod, pri cemu cemo novokreiranu sliku ucitati u varijablu $karta:

<?php
$slika_karte = "/usr/local/www/site8/www/gd_karta_prazna.jpg";
$karta = imagecreatefromjpeg($slika_karte);
?>

Sada vec mozemo upisati nas tekst na sliku. Kasnije cemo opisati par sitnica, odnosno primjeniti par dodatnih komandi kojima cemo popraviti izgled naseg teksta i slike. Za upisivanje teksta na sliku se koristi komanda imagestring(). Pomocu nje definisemo koju vrstu slova cemo koristiti, na kojem mjestu na slici treba da upisemo tekst, i koje boje je nas tekst. Ja sam u ovom primjeru ispod vec izracunao mjesto na kojem treba da bude upisan nas tekst. Vi to mozete uraditi pomocu bilo kojeg grafickog programa ili jednostavnim isprobavanjem komande imagestring():

<?php
## ovdje definisemo nase varijable
$slika_karte = "/usr/local/www/site8/www/gd_karta_prazna.jpg";
$name = "Mirza Muharemagic";
$country = "Bosnia and Hercegovina";
$passport = "BH4764390";

## kreiramo kopiju slike i ucitavamo je u varijablu $karta
$karta = imagecreatefromjpeg($slika_karte);

## upisujemo varijable na sliku
imagestring($karta,2,61,77,$name,0);
imagestring($karta,2,75,96,$country,0);
imagestring($karta,2,80,115,$passport,0);
?>

Nakon upisivanja teksta nam je ostalo samo jos da posaljemo sliku ka browseru, i onda je obrisemo. To radimo sa dvije komande: imagejpeg() i imagedestroy(). Imagejpeg() salje sliku browseru, a imagedestroy() je onda brise, i nas mali program izgleda u puno obliku ovako:

<?php
## ovdje definisemo nase varijable
$slika_karte = "/usr/local/www/site8/www/gd_karta_prazna.jpg";
$name = "Mirza Muharemagic";
$country = "Bosnia and Hercegovina";
$passport = "BH4764390";

## kreiramo kopiju slike i ucitavamo je u varijablu $karta
$karta = imagecreatefromjpeg($slika_karte);

## upisujemo varijable na sliku
imagestring($karta,2,61,77,$name,0);
imagestring($karta,2,75,96,$country,0);
imagestring($karta,2,80,115,$passport,0);

## saljemo sliku browseru i brisemo je odmah nakon toga
imagejpeg($karta);
imagedestroy($karta);
?>

Ako sada ubacite ovaj kôd u jedan prazan php file, i pozovete ga u browseru, vidjecete ovakvu sliku:

Zar ne izgleda dobro?! :). Jedna ideja: ovako mozete kreirati karte za kino, ugovore, flyere i sl. sa licnim podacima osoba.

Vi mozete nakon ovog kôda pisati bilo koju komandu koja prikazuje nesto u browseru, sve ce biti ignorisano, jer je ovo sada jedan .jpg file. Znaci sve dalje Vase echo, print i sl. komande nece funkcionisati. To znaci, da ce se na ovoj stranici otvoriti samo ova slika bez ikakvog teksta, pozadine i sl. To mozete veoma lako rijesiti tako sto cete napraviti jos jedan file, u kojem ce se nalaziti sve sto Vi zelite, a onda na mjestu gdje treba da se pojavi Vasa slika, ili kao u nasem slucaju karta za voz upisite link do naseg file. To funkcionise na sledeci nacin.

Napravite Vas file, npr. karta.php koji izgleda ovako:

<?php
$name = "Mirza Muharemagic";
$country = "Bosnia and Hercegovina";
$passport = "BH4764390";
?>

<html>
<head>
<title>Karta</title>
</head>
<body bgcolor="#FFFFFF">
<center>
<h1>Vasa Karta</h1>


<img src="print_kartu.php?name=<?php echo $name."&amp;country=".$country."&amp;passport=".$passport; ?>" alt="Vasa karta">
</center>
</body>
</html>

<?php
## kraj naseg file-a
?>

A ovako izgleda nas file print_kartu.php, koji pozivamo pomocu <img src ... i koji ce nam prikazati sliku:

<?php
$slika_karte = "/usr/local/www/site8/www/gd_karta_prazna.jpg";

$karta = imagecreatefromjpeg($slika_karte);
imagestring($karta,2,61,
imagestring($karta,2,75,96,$country,0);
imagestring($karta,2,80,115,$passport,0);
imagejpeg($kart
imagedestroy($karta);
?>

Sada je ostalo da poboljsamo nekoliko stvari, iako nasa karta sada stvarno pristojno izgleda. Na listi ispod mozete naci nekoliko trikova i ideja, kako da poboljsate izgled Vase karte:

    * pomocu komande imagecolorallocate() mozete definisati boju slova npr.:
      <?php
      $narandzasta = imagecolorallocate($pic, 220, 210,60);
      imagestring($karta,2,80,115,$passport,$narandzasta
      ?>
    * velicinu slike mozete pomocu komandi imagesx() (duzina) i imagesy() (visina, sirina) i getimagesize()
    * imagestringup() pise tekst vertikalno

Van mreže VLADIX

  • www.vladix.net
  • Administrator
  • Super clan
  • *
  • Poruke: 1607
  • Like: +96/-4
  • Pol: Muškarac
    • VLADIX.NET

Odg: PHP tutorijal
« Odgovor #4 poslato: 20.09.2008. 13:32:43 »
Kontrolna struktura "switch"
Instrukciju "Switch" cemo upotrebiti u situacijama kada imamo kaskadnu serijeu "If" naredbi

Instrukcija "switch" je slicna seriji "IF" naredbi koje se nalaze u istom izrazu. U mnogo situacija, trebacete da npr. uporedujete istu varijablu (ili ceo izraz) sa više razlicitih vrednosti, i pri tome da u zavisnosti od jednakosti ove dve vrednosti izvršite odredeni (razlicit) programski kod. Ova naredba je ekvivalentna naredbi "Select ... Case", Visual Basic-a. U naredna dva primera videcete dva nacina za rešavanje istog problema, prvi nacin koristi seriju "If" instrukcija, a drugi nacin naredbu "Switch":

<?php
if ($a == 0) {
    print "a je jednako 0";
}
if ($a == 1) {
    print "a je jednako 1";
}
if ($a == 2) {
    print "a je jednako 2";
}

switch ($a) {
    case 0:
        print "a je jednako 0";
        break;
    case 1:
        print "a je jednako 1";
        break;
    case 2:
        print "a je jednako 2";
        break;
}
?>

Jako je bitno da razumete nacin na koji se ova naredba izvršava, jer cete inace naciniti greške. Naredba "switch" se izvršava liniju po liniju (zapravo, naredbu po naredbu). U prvom trenutku ne izvršava se nijedna naredba. Tek kada PHP parser utvrdi koja PHP vrednost u CASE izrazu odgovara vrednosti SWITCH izraza, tada pocinje da se izvršava programski kod. PHP izvršava instrukcije do kraja "switch" bloka, ili do "brake" naredbe. Pazite, ukoliko ne napišete naredbu "Brake" na kraju svakog "Case" bloka, PHP ce nastavljati da izvršava sve naredne "Case" blokove. Pogledajte sledeci primer:

<?php
switch ($a) {
    case 0:
    case 1:
    case 2:
        print "a je manje od 3, ali nije negativno";
        break;
    case 3:
        print "a je 3";
}
?>

Ukoliko je varijabla $a jednaka nuli (0), PHP ce izvršiti sve naredbe za ispis (print)! Ako je vrednost varijable jedan (1), PHP ce izvršiti obe, donje naredbe za ispis. Tek ako je vrednost varijable dva (2), imacemo "ocekivano" ponašanje ove strukture i ispisace se samo "a je manje od 3, ali nije negativno", jer iza ove naredbe sledi naredba prekida - "brake". Ovo znaci da obavezno morate koristiti naredbu prekida.

Kod naredbe "switch" uslov se proverava samo jedanput, a rezultat se uporeduje sa svakom "Case" instancom. Naredba "switch" je bolje rešenje od višestrukih "If ... else if" naredbi, jer se brže izvršava (zato što se uslov višestruko proverava). Specijalan slucaj Case izraza predstavlja "podrazumevana" Case naredba, ciji se programski kod izvršava ukoliko nije zadovoljena nijedna prethodna Case instanca. Evo i primera:

<?php
switch ($a) {
    case 0:
        print "a je 0";
        break;
    case 1:
        print "a je 1";
        break;
    case 2:
        print "a je 2";
        break;
    default:
        print "a nije ni 0, ni 1, ni 2";
}
?>


Validacija e-mail adresa i verifikacija domena
Pre nego što prihvatite neku e-mail adresu i prosledite je nekoj web aplikaciji ili bazi podataka, bilo bi dobro da proverite da li je uneta adresa uopšte smislena

Predstavljamo vam laku, brzu i nadasve efikasnu funkciju za validaciju (proveru) e-mail adresa koje se inace prihvataju sa raznih formulara. Preporucljivo je da, ako je moguce, izvršite validaciju svih polja formulara, jer ce te na taj nacin smanjiti zagušenje na serveru i ubrzati komunikaciju sa korisnicima.

Evo i kako bi mogla da izgleda osnovna funkcija koja ce proveriti validnost e-mail adrese, odnosno da li je sintaksno pravilno uneta:

<?
function provera_emaila($adresa) {
$uslov1 = (ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.
'@'.
'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.
'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$',
$adresa));
$uslov2 = (preg_match('/.+\.\w\w+$/',$adresa));
return ($uslov1 && $uslov2);
}
?>

Kao što možete videti, prvo korišcenjem sistemske funkcije ereg() proveravamo da li specijalni karakteri nalaze unutar unete string-varijable. Ova funkcija vraca True ili False u zavisnosti rezultata pretrage. Nakon toga proveravamo ispravnost unetog domena e-mail adrese, na taj nacin što se proverava sadržavanje najmanje 1 tacke "." unutar naziva domena. Upotrebljene sistemske funkcije su sastavni deo PHP 3 i 4. Takode, važno je napomenuti da unutar naziva domena može biti i više tacaka, npr. 'ftn.ns.ac.yu', [to proveravamo drugom funkcijom preg_match().

I na kraju, ukoliko su zadovoljena oba uslova ($r1 && $r2), funkcija provera_emaila vraca istinosnu vrednost - True, i e-mail adresa može dalje da se procesira.


Upload fajlova
Starije verzije PHP-a nemaju funkcije koje direktno rukuju upload-om fajlova, ali je uz pomoc drugih ugradenih funkcija, ipak moguca ova operacija

U novijim verzijama PHP-a (poceviši od verzije4) postoje nacini i funkcije za upravljanjem upload-om fajlova, korišcenjem specijalnog ugradenog (sistemskog) niza $HTTP_POST_FILES, ali u ovom tekstu cemo se pozabaviti kako to isto uraditi u starijim verzijama PHP-a.

Pretpostavimo da smo za upload fajlova pripremili HTML formular slican ovome:

<form method="post" enctype="multipart/form-data" action="script.php">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000">
<input type="file" name="userfile">
<input type="submit">
</form>

Skriveno polje MAX_FILE_SIZE (obavezno se ubacuje pre taga <input type=file>) se koristi za odredivanje maksimalne velicine fajla koji se uload-uje. Odredivanje ovog parametra, browser nece odaslati fajl serveru ukoliko je velicina veca nego što je odredena ovim parametrom. Kada je forma odaslata PHP kreira i popunjava specijalne varijable koje su u vezi sa transfer podacima. Nema potrebe za rucnim parsiranjem jednog takvog HTTP zahteva, PHP ce sveo svemu pobrinuti, te ce obezbediti upload varijable. Zapazite da se nazivi varijabli sastoje od dela, prvi deo je isti kao naziv ulaznog polja sa HTML formulara

PHP varijable

Pretposatvimo da imamo kôd slican ovome:

<input type="file" name="userfile">

, u vašem PHP skriptu ce automatski biti kreirane sledece varijable:

    * $userfile - ovo je naziv privremenog fajla na serveru (kreira se nakon upload-a). Ovu varijablu možete koristiti za kopiranje fajla na bilo koju drugu loakciju.
    * $userfile_name - naziv fajla koju je korisnik locirao na klijentskoj mašini i odredio za upload.
    * $userfile_size - velicina upload-ovanog fajla u bajtovima.
    * $userfile_type - MIME tip upload-ovanog fajla. Na primer: "image/gif".

Takode, tu je i ugradena funkcija koja proverava varijablu privremenog naziva fajla. Funkcija is_uploaded_file($userfile), vraca True ukoliko $userfile sadrži naziv privremeno upload-ovanog fajla, a u suprotnom False.

Sintaksa funkcije koja služi za prebacivanje privremenog fajla, na serverskoj mašini (naravno, u skladu sa pripadajucim dozvolama) je sledeca:

move_uploaded_file($userfile, "/lokacija/fajl.nesto")

Na kraju, evo i PHP kôda koji cemo upotrebiti za smeštanje upload-ovanog fajla na odredenu lokaciju:

<?
if (is_uploaded_file($userfile)) {
move_uploaded_file($userfile, "/lokacija/fajl.new");
}
?>
Isto možemo da odradimo i sa funkcijom Open:

<?
if (is_uploaded_file($userfile)) {
copy($userfile, "/place/file.new");
}
?>

Van mreže VLADIX

  • www.vladix.net
  • Administrator
  • Super clan
  • *
  • Poruke: 1607
  • Like: +96/-4
  • Pol: Muškarac
    • VLADIX.NET

Odg: PHP tutorijal
« Odgovor #5 poslato: 20.09.2008. 13:35:25 »
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 varijabli
Sledi 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 brojaca
Iako 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.com

Paket 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.




Van mreže VLADIX

  • www.vladix.net
  • Administrator
  • Super clan
  • *
  • Poruke: 1607
  • Like: +96/-4
  • Pol: Muškarac
    • VLADIX.NET

Odg: PHP tutorijal
« Odgovor #6 poslato: 20.09.2008. 13:36:17 »
Konekcija na MySQL bazu podataka
(III deo)
Nakon više uvodnih clanaka o PHP-u i upoznavanja sa sintaksom PHP-a, pozabavicemo se - spajanjem sa bazom podataka koja se nalazi na MySQL serveru


Nakon postavljenog i upucenog upita serveru uz pomoc funkcije mysql_query, bice potrebno da rezultat sadržan u varijabli $sql_result formatiramo, tako da ga podelimo na odvojene redove, u cemu ce nam pomoci funkcija mysql_fetch_array:

while ($row = mysql_fetch_array($sql_result)) {
//prog. kod
}

Kao što vidite, uz pomoc while petlje kreiracemo niz koji smo nazvali $row, i to za svaki slog u rezultujucem skupu slogova. Da bismo dobili pojedinacne elemente sloga, odnosno polja (Naziv, Tip, Kolicina), kreiracemo potrebne varijable:

$naziv_proiz = $row["Naziv"];
$tip_proiz = $row["Tip"];
$kolicina = $row["Kolicina"];

Pošto je osnovna svrha bilo kog upita prikaz i nekakva analiza podataka, smesticemo dobijene podatke u HTML tabelu, tj. prikazacemo rezultat u takvom obliku da može da ga išcita bilo koji web browser. Da biste ovo odradili, sledeci HTML kôd smestite ispred while petlje, kako biste "otvorili" tabelu i kreirali naslovni red tabele:

echo "<TABLE BORDER=1>";
echo "<TR>
<TH>Naziv proizvoda</TH>
<TH>Tip</TH>
<TH>Kolicina</TH>
</TR>
";

Nakon definisanja varijabli unutar while petlje, "odštampacemo" ih u tabeli:

echo "<TR>
<TD>$naziv_proiz</TD>
<TD>$tip_proiz</TD>
<TD>$kolicina</TD>
</TR>
";

Prema tome, konacna while petlja izgledace ovako:

while ($row = mysql_fetch_array($sql_result)) {
$naziv_proiz = $row["Naziv"];
$tip_proiz = $row["Tip"];
$kolicina = $row["Kolicina"];
echo "<TR>
<TD>$naziv_proiz</TD>
<TD>$tip_proiz</TD>
<TD>$kolicina</TD>
</TR>
";
}

Nakon završetka petlje, sledi i zatvaranje taga tabele:

echo "</TABLE>";

I konacno, na kraju je potrebno da oslobodimo sve resurse zauzete izvršavanjem upita, i zatvorimo konekciju ka bazi podataka. Ako ovo ne uradimo, možemo izazvati neželjeno "curenje" memorije ili slicne resurs-probleme.

mysql_free_result($sql_result);
mysql_close($connection);

?>


Konekcija na MySQL bazu podataka
(II deo)
Nakon više uvodnih clanaka o PHP-u i upoznavanja sa sintaksom PHP-a, pozabavicemo se - spajanjem sa bazom podataka koja se nalazi na MySQL serveru


Nakon upoznavanja sa osnovnim funkcijama za spajanje sa bazom i kreiranja baze i tabele kao pripreme za naš primer, krecemo i sa samim PHP kodiranjem. Pre nego što pocnete, potrebno je da znate naziv servera na kome se nalazi baza podataka (ukoliko radite u lokalu, naziv ce biti "local"), validno korisnicko ime i lozinka za taj server. Zatim, startujemo sa PHP kôdom, kreiranjem konekcione varijable:

<php>
$connection = mysql_connect
("naziv_servera","kor_ime","lozinka")
or die("Povezivanje nije moguce.");

Funkcija die() koristi se za prekidanje skripta i "štampanje" poruke o grešci ukoliko prethodna funkcija "propadne" (u ovom slucaju, ako konekcija nije uspostavljena).

Kada uspostavite vezu, tj. konekciju, sledeci korak predstavlja izbor baze podataka i kreiranje SQL instrukcije (upita). Pretpostavimo da tabela "Proizvodi" vec postoji u MySQL bazi podataka koja se npr. zove "mojaBaza". Potrebno je da eksplicitno izaberete bazu podataka na serveru na koju cete se spojiti:

$db = mysql_select_db("mojaBaza", $connection)
or die("Baza nije dostupna.");

U ovoj tacki smo "naredili" PHP parseru da se spoji na server i selektuje bazu podataka. Ako je sve u redu do ove tacke, možete odaslati SQL upit i nadati se da ce vam se vratiti nekakav rezultat, tj. rezultujuci set slogova. Kreiracemo upit koji se zasniva na tabeli "Proizvodi" (definisana u prethodnom prilogu), a koji treba da vrati polja sa nazivima proizvoda, njihovim tipom i kolicinom proizvoda, s tim da se podaci poredaju po najvecim kolicinama. Kreiracemo varijablu koja ce sadržati ovu našu SQL instrukciju:

$sql = "SELECT Naziv, Tip, Kolicina
FROM Proizvodi
ORDER BY Kolicina DESC";

Potom cemo kreirati varijablu koja ce prihvatiti rezultate prethodnog upita, a koji ce se dobiti uz pomoc mysql_query funkcije. Funkcija mysql_query poseduje dva argumenta; konekciju i SQL varijablu, koje smo prethodno kreirali:

$sql_result = mysql_query($sql,$connection)
or die("Upit nije izvrsen");

Ovim bi trebalo da uspostavimo konekciju, selektujemo tabelu, postavimo upit i smestimo rezultate u varijablu. U sledecem prilogu cemo videti kako rezultate upita prikazati korisnicima.
   
Konekcija na MySQL bazu podataka
(I deo)
Nakon više uvodnih clanaka o PHP-u i upoznavanja sa sintaksom PHP-a, pozabavicemo se - spajanjem sa bazom podataka koja se nalazi na MySQL serveru


Nakon više uvodnih clanaka o PHP-u i upoznavanja sa sintaksom i nekim od osnovnih funkcija PHP-a, stigli smo i do možda i najkorisnijeg segmenta upotrebe, a to je spajanje sa bazom podataka koja se nalazi na MySQL serveru. Spajanje sa bazama podataka predstavlja i osnovu za izgradnju kompleksnih mrežnih aplikacija. Inace, uz pomoc PHP-a možete se spojiti sa bilo kojim sistemom za upravljanje bazama podataka (DBMS), a medu PHP programerima su svakako MySQL baze podataka najomiljeniji tip. Na vaš buduci izbor baza podataka sigurno ce uticati i vaš web provajder, tj. tip baza podataka koje on podržava (tj. instaliran server baza podataka).

Kada je rec o upotrebi MySQL baza podataka, postoji veci broj dobro dokumentovanih PHP funkcija koje ce vam pomoci u uspostavljanju veze sa podacima. Medutim, trebace vam samo nekoliko ovih funkcija u cilju postizanja jednostavne konekcije i selekcije nekih podataka:

    * mysql_connect - funkcija kojom ostvarujemo vezu sa MySQL serverom; zahteva naziv hosta, korisnicko ime i lozinku.
    * mysql_select_db - funkcija za izbor baze podataka od mnogobrojnih koje se nalaze na MySQL serveru.
    * mysql_query - funkcija za postavljanje SQL instrukcija.
    * mysql_fetch_array - funkcija za smeštanje rezultata SQL upita u niz.
    * mysql_free_result - funkcija za oslobadanje resursa zauzetih trenutnom konekcijom.
    * mysql_close - funkcija za prekid veze ka bazi podataka.

Ovo su osnovne funkcije koje vam trebaju za rad sa bazama podataka, a detalje o ostalim funkcijama možete naci u odgovarajucem prirucniku koji se nalazi na adresi www.php.net/manual/.
U našem primeru, pretpostavicemo da ste instalirali MySQL server, da ste kreirali bazu podataka i da za datu bazu posedujete korisnicko ime (username) i lozinku (password). U toj bazi kreirajte tabelu "Proizvodi", koja ce imati polja: "Naziv", "Tip" i "Kolicina". Samu tabelu popunite sa podacima kao što su ovi dati na slici.

Van mreže VLADIX

  • www.vladix.net
  • Administrator
  • Super clan
  • *
  • Poruke: 1607
  • Like: +96/-4
  • Pol: Muškarac
    • VLADIX.NET

Odg: PHP tutorijal
« Odgovor #7 poslato: 20.09.2008. 13:36:49 »
Argumenti funkcija
Funkcijama se putem argumenata prosleduju brojne važne informacije, i to kao varijable ili kao konstante tj. default vrednosti
piše: Goran Anicic

U prethodnom PHP prilogu definisali smo šta su to funkcije i kako se koriste, i šta su argumenti jedne funkcije. Inace, razne informacije se funkciji mogu proslediti preko liste argumenata, koja predstavlja zarezom razdvojenu listu varijabli, i/ili konstanti. Podrazumeva se da PHP omogucava prosledivanje argumenata funkciji u vidu vrednosti; argumenti se mogu još proslediti kao reference (varijable), i kao "podrazumevane vrednosti". Takode, omogucena je i upotreba listi argumenata varijabilne dužine, ali samo u veziji PHP-a 4. Kod verzije 3 PHP-a, listu argumenata možemo simulirati u vidu niza koji se prosleduje funkciji.
Na primer:
<?phps
function preuzimanje_niza($input) {
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
?>

Uglavnom se funkcijama prosleduju konkretne vrednosti, pa tako kada promenimo vrednost argumenta unutar funkcije, nece se promeniti i njegova vrednost van funkcije. Ukoliko želite da se vrednosti prosledenih argumenata mogu menjati unutar funkcije, prosledite te iste argumente u vidu referenci. A ako želite se argumenti uvek prosleduju kao reference - moracete da ispred naziva argumenta dodate znak ampersand (&). Evo i primera prosledivanja argumenta u vidu reference:

<?php
function dodaj_tekst(&$string) {
$string .= 'i dodatni deo stringa.';
}
$str = 'Ovo je string, ' ;
dodaj_tekst($str);
echo $str;
?>

Rezultat ovog malog skripta ce biti ispis - "Ovo je string, i dodatni deo stringa.". Slicno prethodnoj metodi, varijablu kao referencu možete proslediti i kada to niste u prvi mah definisali, tada cete u samom pozivu funkcije dodati znak ampersand (&):

<?php
function bilo_sta ($rec) {
$rec .= ' a ovo je dodatni deo.';
}
$str = 'Ovo je string, ';
bilo_sta ($str);
echo $str;
// izlaz ce biti 'Ovo je string, '
bilo_sta (&$str);
echo $str;
// izlaz 'Ovo jestring, a ovo je dodatni deo.'
?>

Slicno prethodnom definisanju argumenata je i definisanje "podrazumevanih argumenata" (kao kod jezika C++):

<?php
function kuvanje_kafe ($type = "Grand") {
return "Najbolja je kafa $type.\n";
}

echo kuvanje_kafe ();
echo kuvanje_kafe ("DonCaffe");
?>

Izlaz ovog malog skrtipta ce biti:

Najbolja je kafa Grand.
Najbolja je kafa Doncaffe.

Kao što vidite, ako funkciji ne prosledimo nikakvu vrednost argumenta, koristice se podrazumevana vrednost (Doncaffe).








"For" petlja
Klasicna programerska For...Next petlja, ali ovoga puta u PHP okruženju


Za razliku od "jednostavne" sintakse "While" petlje, "For" petlja ima najsloženiju sintaksu u PHP-u (vrlo slicnu C-u). Struktura i sintaksa je ove petlje je sledeca:

for (izraz1; izraz2; izraz3)
naredba

Prvi izraz (izraz1) se proverava (izvršava) samo jednom (bezuslovno), i to na pocetku petlje. Na pocetku svake iteracije proverava se drugi izraz (izraz2). Ukoliko je istinosna vrednost ovog izraza TRUE, petlja se nastavlja i izvršava se ugneždena instrukcija(e). Ukoliko je vrednost izraza FALSE, prekinuce se izvršavanje petlje. Takode, na kraju svake iteracije petlje proverava se (izvršava se) treci izraz (izraz3).
Svaki od nabrojanih izraza može biti "prazan", tj. ne mora sadržati nikakav izraz. Ako je na primer, drugi izraz "prazan" petlja ce se ponavljati nedefinisan broj puta. Možda vam ova mogucnost na prvi pogled nema smisla, ali sve do momenta kada ovu mogucnost budete upotrebili sa uslovnom instrukcijom "break". Razmotrite sledeci primer:

<?php
/* 1. primer */
for ($a = 1; $a <= 10; $a++) {
print $a;
}
/* 2. primer */
for ($b = 1;;$b++) {
if ($b > 10) {
break;
}
print $b;
}
/* 3. primer */
$c = 1;
for (;;) {
if ($c > 10) {
break;
}
print $c;
$c++;
}
/* 4. primer */
for ($d = 1; $d <= 10; print $d, $d++) ;
?>

Od ova cetiri primera, prvi je svakako najjasniji. U drugom primeru je prikazan "prazan" drugi izraz, pa imamo nedefinisan broj iteracija petlje. Ali, tu smo upotrebili "If" grananje i instrukciju "break", kojom izlazimo iz petlje (petlja se prekida) kada vrednost varijable "$b" bude 11 (nakon toga vršimo štampanje vrednosti varijable). Treci primer je specifican jer su sva tri izraza "prazna" (nedefinisana). Tako da ce se data petlja izvršavati u zavisnosti od prirode ugneždenih naredbi. PHP naravno, obezbeduje i alternativno definisanje "For" petlje (sa dvotackom):

for (izraz1; izraz2; izraz3):
...naredba; ...;
endfor;

   
"While" petlja
Klasicna programerska While petlja, ali ovoga puta u PHP okruženju


Nakon "If" strukture prelazimo na obradu najjednostavnijeg tipa petlji u PHP-u, a to je "While" petlja. Struktura i sintaksa u PHP-u je vrlo slicna sintaksi ove petlje u programskom jeziku C:

while (izraz)
naredbe

Semantika same petlje je vrlo jednostavna, ona "kaže" PHP-u da ponavlja izvršavanje ugradenih naredbi, sve dok je ispunjen uslov, tj. dok je vrednost "izraza" TRUE. Vrednost izraza se proverava samo na svakom pocetku ponavljanja petlje, tako da ako se ova vrednost promeni tokom izvršavanja ugneždenih instrukcija, izvršenje se nece prekinuti do kraja date iteracije. U slucaju da je vrednost "izraz"-a FALSE, nece se izvršiti ugneždene naredbe, a izvršenje programa ce se prebaciti na sledecu instrukciju koja dolazi nakon petlje.
Kao i kod "IF" grananja, i ovde možete grupisati više instrukcija unutar jedne "While" petlje, i to uz pomoc viticastih zagrada, ili uz korišcenje alternativne sintakse:

while (izraz) :
...naredbe...
endwhile;

U sledecim redovima možete videti dve "While" petlje, napisane na dva nacina, koje "štampaju" cifre od 1 do 10:

<?php
/* 1. primer */

$a= 1;
while ($a <= 10) {
print $a++;
}

/* 2. primer */

$a = 1;
while ($i <= 10):
print $a;
$a++;
endwhile;

?>

Kao što vidite, ovde smo upotrebili inkrementalni operator (++) koji uvecava vrednost varijable "$a", i to nakon njenog štampanja.
Slicna prethodnoj "While" petlji je "Do...While" petlja, a razlika je samo u poziciji proveravanja "izraz"-a. Kod ove petlje provera istinosne vrednosti izraza se vrši na kraju petlje svake iteracije. Glavna razlika je u tome što ce se kod ove druge petlje (do...while) prva iteracija svakako izvršiti, za razliku od "While" gde se možda nece izvršiti ni jedna iteracija (u slucaju da je vrednost izraza FALSE).

<?php
$a = 0;
do {
print $a;
} while ($a>0);
?>

Prethodna petlja ce se izvršiti tacno jedanput, jer se nakon prve iteracije proverava izraz ($a>0), koji ce imati vrednost FALSE. Zbog ove vrednosti izraza petlja ce prekinuti dalje izvršavanje.

Van mreže VLADIX

  • www.vladix.net
  • Administrator
  • Super clan
  • *
  • Poruke: 1607
  • Like: +96/-4
  • Pol: Muškarac
    • VLADIX.NET

Odg: PHP tutorijal
« Odgovor #8 poslato: 20.09.2008. 13:37:45 »
osnove PHP jezika
Bakini web kolacici
Cookies - "Poslastice" koje na korisnickim mašinama cuvaju veoma vredne informacije o njihovim "gazdama"


Kako im odoleti? Bakini web kolacici, tj. poznati cookie-ji predstavljaju odlicnu i efikasnu alatku za beleženje i cuvanje podataka o posetiocima vaših sajtova, i to na njihovim cvrstim diskovima. Cookie-ji mogu vrlo uspešno da cuvaju vredne informacije potrebne vašim web aplikacijama, prvenstveno radi identifikacije (i pracenja) posetioca tokom povratnih poseta sajtu.

Pri tome, vrlo lako ih je kreirati i postaviti, a još lakše "išcitati", jer se radi o obicnim plain tekstualnim fajlovima. A evo i nekih preporuka kojih bi se trebalo pridržavati prilikom "eksploatacije" kolacica:

    * Programski kôd koji kreira kolacice, iz razloga efikasnosti, trebao bi biti pozicioniran na pocetku web stranice pre bilo kog drugog kôda.
    * Cookie fajlove potrebno je smestiti u root direktorijum sajta kako bi ga mogli koristiti sa bilo koje pozicije vašeg web sajta.

Sledi programski kôd kojim kreiramo varijablu cookie:

<?
setcookie ("cookie", "personalmag kolacic");
//kreiranje varijable $cookie sa vrednošcu "personalmag kolacic"
?>

Kreiranjem i postavljanjem ovog kôda, kada posetioc ponovo dode na tekucu stranicu ili bilo koju drugu PHP stranicu u tekucem folderu (ili bilo kom podfolderu), postavljeni kolacic bice dostupan za "konzumiranje". Ukoliko bi sada komandom ECHO ispisali vrednost varijable - $_COOKIE["cookie"], dobili bi nazad "personalmag kolacic".

Nadalje, ukoliko želite da postavite expire vremenski rok kolacica, dodacete samo još jedno polje sa kolicinom vremena (u sekundama) koja treba da protekne do "isteka važnosti":

<?
setcookie ("cookie", "personalmag kolacic", time()+3600);
//isti kod kao prethodni, s tim da ce kolacic ovaj "trajati"3600 sekundi (1 cas) u odnosu na trenutno vreme
?>

Broj kolacic-varijabli nije ogranicen, tako da uvek možete postaviti više od jendog kolacica:

<?
setcookie ("cookie1", "personalmag kolacic 1 ");
setcookie ("cookie2", "personalmag kolacic 2 ");
setcookie ("cookie3", "personalmag kolacic 3 ");

//kolacice možete iscitati sa:

echo $_COOKIE["cookie1"];
echo $_COOKIE["cookie2"];
echo $_COOKIE["cookie3"];

// a ako želite da prikažete sadržaj svih varijabli
//upotrebite onda sledecu instrukciju:

print_r($_COOKIE);
?>

I konacno, kolacice je moguce i izbrisati, ukoliko vam više nisu potrebni, upotrebom gorenavedene instrukcije setcookie, samo što ovaj put varijabli necemo dodeliti nikakvu vrednost. Postavicemo još jednu setcookie funkciju samo sa nazivom varijable:

<?
setcookie ("cookie");
//brisanje "kolacica"
?>

Ovo je sva osnova koja je potrebna za korišcenje kolacica na vašim web sajtovima. Na vama je kako cete daljeiskoristiti ovu mogucnost.

   
"While" petlja
Klasicna programerska While petlja, ali ovoga puta u PHP okruženju


Nakon "If" strukture prelazimo na obradu najjednostavnijeg tipa petlji u PHP-u, a to je "While" petlja. Struktura i sintaksa u PHP-u je vrlo slicna sintaksi ove petlje u programskom jeziku C:

while (izraz)
naredbe

Semantika same petlje je vrlo jednostavna, ona "kaže" PHP-u da ponavlja izvršavanje ugradenih naredbi, sve dok je ispunjen uslov, tj. dok je vrednost "izraza" TRUE. Vrednost izraza se proverava samo na svakom pocetku ponavljanja petlje, tako da ako se ova vrednost promeni tokom izvršavanja ugneždenih instrukcija, izvršenje se nece prekinuti do kraja date iteracije. U slucaju da je vrednost "izraz"-a FALSE, nece se izvršiti ugneždene naredbe, a izvršenje programa ce se prebaciti na sledecu instrukciju koja dolazi nakon petlje.
Kao i kod "IF" grananja, i ovde možete grupisati više instrukcija unutar jedne "While" petlje, i to uz pomoc viticastih zagrada, ili uz korišcenje alternativne sintakse:

while (izraz) :
...naredbe...
endwhile;

U sledecim redovima možete videti dve "While" petlje, napisane na dva nacina, koje "štampaju" cifre od 1 do 10:

<?php
/* 1. primer */

$a= 1;
while ($a <= 10) {
print $a++;
}

/* 2. primer */

$a = 1;
while ($i <= 10):
print $a;
$a++;
endwhile;

?>

Kao što vidite, ovde smo upotrebili inkrementalni operator (++) koji uvecava vrednost varijable "$a", i to nakon njenog štampanja.
Slicna prethodnoj "While" petlji je "Do...While" petlja, a razlika je samo u poziciji proveravanja "izraz"-a. Kod ove petlje provera istinosne vrednosti izraza se vrši na kraju petlje svake iteracije. Glavna razlika je u tome što ce se kod ove druge petlje (do...while) prva iteracija svakako izvršiti, za razliku od "While" gde se možda nece izvršiti ni jedna iteracija (u slucaju da je vrednost izraza FALSE).

<?php
$a = 0;
do {
print $a;
} while ($a>0);
?>

Prethodna petlja ce se izvršiti tacno jedanput, jer se nakon prve iteracije proverava izraz ($a>0), koji ce imati vrednost FALSE. Zbog ove vrednosti izraza petlja ce prekinuti dalje izvršavanje.


   
Slanje teksta u browser

Pogledajte kako se obican tekst i HTML tagovi prosleduju browseru uz pomoc PHP-a. Opisanim metodama uglavnom se vrši i "opisivanje" HTML stranica

akon prvog skripta ("Hello World!"), precicemo na objašnjavanje najjednostavnijih funkcija, to su one koje služe za "slanje" obicnog teksta u HTML (odnosno browser korisnika). Za "slanje" teksta PHP obezbeduje tri vrste funkcija, a mi smo u prošlom prilogu iskoristili funkciju "echo". Za primer ubacite sledeci kod u neki ".php" fajl, i pošaljite ga serveru (localhost\fajl.php):



<html>
<body>
<?php
print "Ovo je print funkcija.";
print "<p>";
echo "Ovo je echo funkcija.", " ",
"P.S. Ovde mozete dodati i drugi string", " ",
"ako stringove razdvojite zarezom.";
print "<p>";
printf ("Ovo je printf funkcija.");
print "<p>";
printf ("Funkcija printf se najcesce
koristi za formatiranje brojki.");
print "<p>";s
printf ("Ne zaboravite zagradu sa
funkcijom printf.");
?>
</html>
</body>

Rezultat koji ce server vratiti ce biti:

Ovo je print funkcija.

Ovo je echo funkcija. P.S. Ovde mozete dodati i drugi string ako stringove razdvojite zarezom.

Ovo je printf funkcija.

Funkcija printf se najcesce koristi za formatiranje brojki.

Ne zaboravite zagradu sa funkcijom printf.

Kao što vidite upotrebili smo sve tri funkcije:

    * print - najjednostavnija funkcija za slanje teksta u prozor browser-a. Funkcija može da se navodi i bez, i sa zagradama.
    * echo - funkcija slicna prethodnoj, samo što ovde možete da kombinujete više stringova, koje obavezno odvajamo zarezima. Sa ovom funkcijom se ne koriste zagrade.
    * printf - funkcija koja najcešce služi za formatiranje brojki kao intedžera, decimala itd. Ova funkcija obavezno zahteva upotrebu zagrada.

Nakon ove price probajte da što više eksperimentišete sa ovim funkcijama, pošto su one jako bitne za PHP/HTML kombinovanje. U sledecem prilogu cemo se baviti varijablama, vrstama varijabli i nacinom njihovog definisanja.



Prihvat varijabli iz formulara
Kako prihvatiti rezultate anketa, glasanja i drugih formulara u PHP varijable?


Cesto cete na stranicama automatizovanih PHP-om, imati formulare. Najcešce ce se raditi o anketama, formularima za komentare, glasanje i slicno. Na svu srecu, kada se jedan ovakav formular prosledi PHP skriptu, sve varijable definisane na formi bice automatski dostupne PHP skriptu. Ovo znaci da skript može da prihvati i varijable koje nisu definisane u samom PHP skriptu. Na primer, imamo jednostavan formular, koji se metodom "POST" šalje na obradu PHP skriptu pod nazivom "primer.php":
 

 <FORM ACTION="primer.php" METHOD="POST">
    IME: <INPUT TYPE="text" NAME="ime"><BR>
    <INPUT TYPE="submit" VALUE="Posalji">
 </FORM>

Kada ovaj formular popunite i kliknete na dugme "Posalji", metodom "POST" elementi formulara ce biti prosledeni PHP stranici "primer.php" na dalju obradu. Stranica "primer.php" ce automatski primiti sadržaj iz prosledenog polja "ime" u varijablu "$ime". Evo kako bi mogao da izgleda skript "primer.php":
 

 <?php
 echo "Vase ime je:<BR>";
 echo $ime;
 ?>

Znaci, kada popunimo polje "IME" na stranici sa formularom, i kliknemo na dugme za slanje, sadržaj ovog polja ce primiti varijabla "$ime" u PHP skriptu na stranici "primer.php", te ce se uz pomoc instrukcije "echo" prikazati vrednost date varijable.

PHP skriptovi takode mogu i da prihvataju spoljne nizove varijabli iz formulara. Na primer, možete imati grupu povezanih varijabli na formularu u niz, ili možete iskoristiti ovu mogucnost za prihvat vrednosti iz višestrukog SELECT OPTION objekta:
 

<FORM ACTION="niz.php" METHOD="post">
    Ime: <INPUT TYPE="text" NAME="osoba[ime]"><BR>
    Email: <INPUT TYPE="text" NAME="osoba[email]"><BR>
    Boja kose: <BR>
    <SELECT MULTIPLE NAME="kosa[]">
        <OPTION VALUE="crna">Crna
        <OPTION VALUE="smedja">Smedja
        <OPTION VALUE="plava">Plava
        </SELECT>
    <INPUT TYPE="submit" VALUE="Posalji">
</FORM>

U slucaju da je ukljucena PHP mogucnost "track_vars", bilo pri samoj konfiguraciji ili pomocu direktive: <?php_track_vars?>, sve varijable poslate POST i GET metodama bice clanovi i globalnih nizova $HTTP_POST_VARS i $HTTP_GET_VARS (u zavisnosti od upotrebljene metode).

Van mreže marko-93

  • Junior clan
  • *
  • Poruke: 29
  • Like: +1/-0
  • Pol: Muškarac

Odg: PHP tutorijal
« Odgovor #9 poslato: 07.11.2008. 18:35:25 »
sve je to super ali mošete li mi reći koji je program najbolji za početnika :'(
M@RKO

Van mreže VLADIX

  • www.vladix.net
  • Administrator
  • Super clan
  • *
  • Poruke: 1607
  • Like: +96/-4
  • Pol: Muškarac
    • VLADIX.NET

Odg: PHP tutorijal
« Odgovor #10 poslato: 07.11.2008. 18:53:59 »
notepad, neki napredniji notepad ili dreamweaver