Rad sa bazama podataka
Unos podataka u MySQL bazu

U ovom prilogu predstavljamo vam kako iskoristiti baze podataka, ali ovaj put za upis postojeće tabele i čuvanje podataka bitnih za web aplikacije

Nakon upoznavanja sa načinima pristupa bazama podataka koje se nalaze na MySQL serveru, i iščitavanja i prikazivanja tih podataka u browser-u, predstavićemo vam kako iskoristiti iste baze podataka, ali ovaj put za upis postojeće tabele.
 


PREGLED PO IZDANJIMA


Konekcija na MySQL bazu podataka (III deo)
Nakon više uvodnih članaka o PHP-u i upoznavanja sa sintaksom PHP-a, pozabavićemo se - spajanjem sa bazom podataka koja se nalazi na MySQL serveru


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


Konekcija na MySQL bazu podataka (I deo)
Nakon više uvodnih članaka o PHP-u i upoznavanja sa sintaksom PHP-a, pozabavićemo se - spajanjem sa bazom podataka koja se nalazi na MySQL serveru


Argumenti funkcija
Kako iskoristiti dvosmernost Internet komunikacija, i ostvariti interaktivnost između web servera i web browsera (posetilaca)


"For" petlja
Klasična programerska For...Next petlja, ali ovoga puta u PHP okruženju?

 


"While" petlja
Klasična programerska While petlja, ali ovoga puta u PHP okruženju?

 


Slanje teksta u browser
Pogledajte kako se običan tekst i HTML tagovi prosleđuju browseru uz pomoć PHP-a. Opisanim metodama uglavnom se vrši i "opisivanje" HTML stranica


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


Konekcija na MySQL bazu podataka
(III deo)


Nakon postavljenog i upućenog upita serveru uz pomoć funkcije mysql_query, biće potrebno da rezultat sadržan u varijabli $sql_result formatiramo, tako da ga podelimo na odvojene redove, u čemu će nam pomoći funkcija mysql_fetch_array:

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

Kao što vidite, uz pomoć while petlje kreiraćemo niz koji smo nazvali $row, i to za svaki slog u rezultujućem skupu slogova. Da bismo dobili pojedinačne elemente sloga, odnosno polja (Naziv, Tip, Kolicina), kreiraćemo 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, smestićemo dobijene podatke u HTML tabelu, tj. prikazaćemo rezultat u takvom obliku da može da ga iščita bilo koji web browser. Da biste ovo odradili, sledeći 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štampaćemo" ih u tabeli:

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

Prema tome, konačna while petlja izgledaće 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 konačno, 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 slične resurs-probleme.

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

vrh stranice


Konekcija na MySQL bazu podataka
(II deo)


Nakon upoznavanja sa osnovnim funkcijama za spajanje sa bazom i kreiranja baze i tabele kao pripreme za naš primer, krećemo i sa samim PHP kodiranjem. Pre nego što počnete, potrebno je da znate naziv servera na kome se nalazi baza podataka (ukoliko radite u lokalu, naziv će biti "local"), validno korisničko 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 slučaju, ako konekcija nije uspostavljena).

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

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

U ovoj tački smo "naredili" PHP parseru da se spoji na server i selektuje bazu podataka. Ako je sve u redu do ove tačke, možete odaslati SQL upit i nadati se da će vam se vratiti nekakav rezultat, tj. rezultujući set slogova. Kreiraćemo upit koji se zasniva na tabeli "Proizvodi" (definisana u prethodnom prilogu), a koji treba da vrati polja sa nazivima proizvoda, njihovim tipom i količinom proizvoda, s tim da se podaci poređaju po najvećim količinama. Kreiraćemo varijablu koja će sadržati ovu našu SQL instrukciju:

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

Potom ćemo kreirati varijablu koja će prihvatiti rezultate prethodnog upita, a koji će se dobiti uz pomoć 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 sledećem prilogu ćemo videti kako rezultate upita prikazati korisnicima.

vrh stranice


Konekcija na MySQL bazu podataka
(I deo)


Nakon više uvodnih članaka o PHP-u i upoznavanja sa sintaksom PHP-a, pozabavićemo se - spajanjem sa bazom podataka koja se nalazi na MySQL serveru.
Nakon više uvodnih članaka 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. Inače, uz pomoć PHP-a možete se spojiti sa bilo kojim sistemom za upravljanje bazama podataka (DBMS), a među PHP programerima su svakako MySQL baze podataka najomiljeniji tip. Na vaš budući izbor baza podataka sigurno će uticati i vaš web provajder, tj. tip baza podataka koje on podržava (tj. instaliran server baza podataka).

Kada je reč o upotrebi MySQL baza podataka, postoji veći broj dobro dokumentovanih PHP funkcija koje će vam pomoći u uspostavljanju veze sa podacima. Međutim, trebaće 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, korisničko 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 oslobađanje 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 naći u odgovarajućem priručniku koji se nalazi na adresi www.php.net/manual/.
U našem primeru, pretpostavićemo da ste instalirali MySQL server, da ste kreirali bazu podataka i da za datu bazu posedujete korisničko ime (username) i lozinku (password). U toj bazi kreirajte tabelu "Proizvodi", koja će imati polja: "Naziv", "Tip" i "Kolicina". Samu tabelu popunite sa podacima kao što su ovi dati na slici.

vrh stranice


Argumenti funkcija



Funkcijama se putem argumenata prosleđuju brojne važne informacije, i to kao varijable ili kao konstante tj. default vrednosti
U prethodnom PHP prilogu definisali smo šta su to funkcije i kako se koriste, i šta su argumenti jedne funkcije. Inače, razne informacije se funkciji mogu proslediti preko liste argumenata, koja predstavlja zarezom razdvojenu listu varijabli, i/ili konstanti. Podrazumeva se da PHP omogućava prosleđivanje argumenata funkciji u vidu vrednosti; argumenti se mogu još proslediti kao reference (varijable), i kao "podrazumevane vrednosti". Takođe, omogućena 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 prosleđuje funkciji.
Na primer:

<?phps
function preuzimanje_niza($input) {
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
?>

Uglavnom se funkcijama prosleđuju konkretne vrednosti, pa tako kada promenimo vrednost argumenta unutar funkcije, neće se promeniti i njegova vrednost van funkcije. Ukoliko želite da se vrednosti prosleđenih argumenata mogu menjati unutar funkcije, prosledite te iste argumente u vidu referenci. A ako želite se argumenti uvek prosleđuju kao reference - moraćete da ispred naziva argumenta dodate znak ampersand (&). Evo i primera prosleđivanja 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 će biti ispis - "Ovo je string, i dodatni deo stringa.". Slično prethodnoj metodi, varijablu kao referencu možete proslediti i kada to niste u prvi mah definisali, tada ćete 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.'
?>

Slično 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 će biti:

Najbolja je kafa Grand.
Najbolja je kafa Doncaffe.

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

vrh stranice


"For" petlja



Klasična 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 sličnu C-u). Struktura i sintaksa je ove petlje je sledeća:

for (izraz1; izraz2; izraz3)
naredba

Prvi izraz (izraz1) se proverava (izvršava) samo jednom (bezuslovno), i to na početku petlje. Na početku 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, prekinuće se izvršavanje petlje. Takođe, na kraju svake iteracije petlje proverava se (izvršava se) treći 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 će se ponavljati nedefinisan broj puta. Možda vam ova mogućnost na prvi pogled nema smisla, ali sve do momenta kada ovu mogućnost budete upotrebili sa uslovnom instrukcijom "break". Razmotrite sledeći 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 četiri 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). Treći primer je specifičan jer su sva tri izraza "prazna" (nedefinisana). Tako da će se data petlja izvršavati u zavisnosti od prirode ugneždenih naredbi. PHP naravno, obezbeđuje i alternativno definisanje "For" petlje (sa dvotačkom):

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

vrh stranice


"While" petlja



Klasična 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 slična 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 ugrađenih naredbi, sve dok je ispunjen uslov, tj. dok je vrednost "izraza" TRUE. Vrednost izraza se proverava samo na svakom početku ponavljanja petlje, tako da ako se ova vrednost promeni tokom izvršavanja ugneždenih instrukcija, izvršenje se neće prekinuti do kraja date iteracije. U slučaju da je vrednost "izraz"-a FALSE, neće se izvršiti ugneždene naredbe, a izvršenje programa će se prebaciti na sledeću 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 pomoć vitičastih zagrada, ili uz korišćenje alternativne sintakse:

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

U sledećim redovima možete videti dve "While" petlje, napisane na dva načina, 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 uvećava vrednost varijable "$a", i to nakon njenog štampanja.
Slična 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 će se kod ove druge petlje (do...while) prva iteracija svakako izvršiti, za razliku od "While" gde se možda neće izvršiti ni jedna iteracija (u slučaju da je vrednost izraza FALSE).

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

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

vrh stranice


Slanje teksta u browser



Pogledajte kako se običan tekst i HTML tagovi prosleđuju browseru uz pomoć PHP-a. Opisanim metodama uglavnom se vrši i "opisivanje" HTML stranica. Nakon prvog skripta ("Hello World!"), prećićemo na objašnjavanje najjednostavnijih funkcija, to su one koje služe za "slanje" običnog teksta u HTML (odnosno
browser korisnika). Za "slanje" teksta PHP obezbeđuje tri vrste funkcija, a mi smo u prošlom prilogu iskoristili funkciju "echo". Za primer ubacite sledeći 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 će server vratiti će 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 slična 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 najčešće služi za formatiranje brojki kao intedžera, decimala itd. Ova funkcija obavezno zahteva upotrebu zagrada.

Nakon ove priče probajte da što više eksperimentišete sa ovim funkcijama, pošto su one jako bitne za PHP/HTML kombinovanje. U sledećem prilogu ćemo se baviti varijablama, vrstama varijabli i načinom njihovog definisanja.

vrh stranice


Prihvat varijabli iz formulara


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

Često ćete na stranicama automatizovanih PHP-om, imati formulare. Najčešće će se raditi o anketama, formularima za komentare, glasanje i slično. Na svu sreću, kada se jedan ovakav formular prosledi PHP skriptu, sve varijable definisane na formi biće automatski dostupne PHP skriptu. Ovo znači 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 će biti prosleđeni PHP stranici "primer.php" na dalju obradu. Stranica "primer.php" će automatski primiti sadržaj iz prosleđenog polja "ime" u varijablu "$ime". Evo kako bi mogao da izgleda skript "primer.php":
 

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

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

PHP skriptovi takođe 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 mogućnost 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 slučaju da je uključena PHP mogućnost "track_vars", bilo pri samoj konfiguraciji ili pomoću direktive: <?php_track_vars?>, sve varijable poslate POST i GET metodama biće članovi i globalnih nizova $HTTP_POST_VARS i $HTTP_GET_VARS (u zavisnosti od upotrebljene metode).

vrh stranice

NASLOVNA      O NAMA      USLUGE      POTFOLIO      DOWNLOAD     KONTAKT                             

                                                        Copyright © 2004 SokobanjaCrackin'Group. All rights reserved.

naslovna strana o nama usluge portfolio - prikaz nasih radova download zone kontakt download portfolio kontakt webmaster