Documentos de Académico
Documentos de Profesional
Documentos de Cultura
RvinefaZe
WEB-daprogrameba
PHP
teqnikuri universiteti
1
saqarTvelos teqnikuri universiteti
g. RvinefaZe
WEB-daprogrameba
PHP
damtkicebulia stu-s
saredaqcio-sagamomcemlo
sabWos mier
Tbilisi
2009
2
uak 681.3.06
PHP4
Sesavali
arcTu didi xnis win Web-kvanZebidan momxmarebels adgilze
ZiriTadad statikuri HTML-failebi gadmoecemoda, romelTac igi
brouzeris meSveobiT mxolod kiTxulobda. dRes ki WEB-sivrceSi
umeteswilad dinamikuri WEB-furclebi anu DHTML-failebi
gadaigzavneba. maTi awyoba xdeba WEB-kvanZebis serverze
ganTavsebuli WEB-programebis gaSvebiT, rasac momxmarebeli
axorcielebs sakuTari kompiuteridan sistemasTan dialogSi.
internetSi programebis SeqmnisaTvis dRes yvelaze
popularuli WEB-daprogramebis ena gaxlavT PHP4. igi
gansakuTrebiT aadvilebs serverebze ganlagebul monacemTa
bazebTan urTierTobas.
dasawyisSi PHP (personal home page) Seiqmna, rogorc makrosebis
krebuli, martivi saxis piradi WEB-furclebis formirebisTvis.
Semdeg ki igi iqca srulfasovan daprogramebis enad, romelzec
dawerili konstruqciebi Caidgmeba serverze moTavsebul HTML-
teqstebSi. WEB-furclis gamoZaxebisas PHP-is preprocesoris mier
adgilze xdeba am konstruqciebis (programuli fragmentebis)
damuSaveba da HTML-is arsebul fragmentebs Soris Caemateba
Sesabamisi informacia, magaliTad, bazidan amoRebuli monacemebi,
serverze konstruirebuli grafikuli gamosaxulebebi da sxv.
PHP-is versia - PHP4(5) - misaerTebeli modulis saxiT
kompilirdeba dReisaTvis yvelaze popularul WEB-server-programa
Apache-sTvis. serverze PHP-programebi umeteswilad urTierToben
MySQL monacemTa bazasTan (romelic ufasod vrceldeba). ase rom,
Apache, MySQL da PHP triadas dRevandel dRes konkurenti ar hyavs.
Tumca, cxadia, PHP-s muSaoba SeuZlia sxva WEB-garemoSi da sxva
bazebTanac.
saerTod, PHP-programebs interpretatori amuSavebs, magram
SesaZlebelia maTi kompilirebac (Tumca es SesaZlebloba mxolod
komerciuli damatebis saxiT arsebobs), rac kidev ufro amaRlebs
sistemis mwarmoeblurobas.
CGI-sTan SedarebiT PHP-s is mniSvnelovani upiratesoba
gaaCnia, rom misi interpretatori funqcionirebs serverTan mWidro
integraciis pirobebSi _ saWiro ar gaxlavT TiToeuli programis
Sesrulebisas sistemis xelaxla gaSveba, rac mniSvnelovnad
amaRlebs muSaobis siswrafes.
PHP-s rigi sxva Rirsebebic gaaCnia:
• produqtis Riaoba;
• programebis daweris gaadvileba HTML-teqstisa da TviT
programuli nawilis gancalkevebis gamo;
• programebis erTi operaciuli sistemidan sxvaSi gadatanis
simartive;
• programebis Sesrulebis sakmarisi siswrafe.
4
P H P – is dayeneba
PHP-s ufasod CamovtvirTavT http://www.php.net kvanZidan.
http://www.php.net/manual/ misamarTze SesaZlebelia produqtis
Sesaxeb uaxlesi, amomwuravi informaciis miReba.
SeviswavloT, rogor xdeba PHP-is dayeneba Apache Web-
serverTan samuSaod, kompiuteris marTvisas Linux operaciuli
sistemis mier. (saerTod, SesaZlebelia Apache-sTan ukve mierTebuli
PHP-is variantis moZiebac, magram roca am process TviTon
vaxorcielebT, arCevani ufro farTo xdeba _ am SemTxvevaSi
parametrebs Cven vaniWebT mniSvnelobebs).
sistemaSi PHP-is dayenebis ufleba mxolod administrators
(supermomxmarebels) aqvs. PHP-is, rogorc Apache-sTvis modulis,
kompilireba ori gziT SeiZleba ganxorcieldes:
• pirveli gulisxmobs Apache-is xelaxla kompilacias masTan
PHP-is statikurad mierTebiT (linkirebiT);
• meore gza iTvaliswinebs mxolod PHP-is kompilacias,
oRond manamde unda ganxorcieldes Apache-is kompilacia
DSO reJimSi (Dynamic Shared Object - saerTo sargeblobis
dinamiuri obieqts aRniSnavs). swored, am reJimiT
visargeblebT PHP-is kompilirebisas. es gza PHP-is
dayenebis ufro martivi xerxia da Cvenc mas ganvixilavT.
imis Sesamowmeblad, uzrunvelyofs Tu ara Apache aRniSnul
reJimSi modulebis mierTebas, saWiroa Sesrulebaze gavuSvaT httpd
faili -1 almiT:
/www/bin/httpd -1
gamodis modulebis sia. Tu masSi figurirebs mod_so.c,
davaskvniT, rom DSO reJimSi muSaoba SesaZlebelia (winaaRmdeg
SemTxvevaSi mogviwevs Apache-is xelaxla kompilireba).
PHP4-is CamotvirTvis Sedegad gankargulebaSi gveZleva gzip
utilitiT SekumSuli Php-4.0.4pll.tar.gz distributiuli faili.
misi gaSla Semdegi brZanebiT xdeba:
tar -xvzf php-4.0.4pll.tar.gz
gadavdivarT PHP-distributivis katalogSi:
cd../php-4.0
Sesrulebaze vuSvebT aRniSnul katalogSi arsebul configure
programas parametrebisaTvis yvelaze ufro miRebuli
mniSvnelobebis miniWebiT:
./configure --enable-track-vars \
--with-gd \
--with-mysql \
--with-apxs=/www/bin/apxs
bolo mniSvneloba im katalogze miuTiTebs, romelSic Apache
Web-serveria dayenebuli, mysql bazisTvis ki igulisxmeba, rom igi
dumiliT gaTvaliswinebul katalogSia dayenebuli. Mmagram Tuki es
5
ase ar gaxlavT, saWiroa am gansxvavebuli katalogis Sesaxeb
informaciis gaTvaliswinebac:
--with-mysql=/path/to/dir
configure programis Sesrulebis Semdeg vuSvebT make utilitas.
kompiuterze dayenebuli unda iyos C enis kompilatori.
listingi 1
<html>
<head>
<title>gaumarjos PHP-isa da HTML-is Zmur kavSirs! </title>
</head>
</body>
<?php
print “win, programirebaSi axali mwvervalebis dasapyrobad!”;
?>
</body>
</html>
PHP-is interpretatori am furcelze mxolod PHP-blokebiT
“interesdeba”. maTi erToblioba ki qmnis erTian PHP-programas.
Sinaarsobrivad es imas niSnavs, rom pirvel blokSi gamocxadebuli
cvladebis, funqciebis Tu klasebis gamoyeneba momdevno blokebSic
SeiZleba.
programebSi xSirad gamoiyeneba komentarebi:
// es komentaria.
# Tqven warmoidgineT, esec komentaria.
/* es ki
ramdenime striqonze
7
gawelili komentaria.
*/
komentarebSi Cawerili informacia interpretatoris mier
ignorirdeba.
cvladebi
PHP-Si cvladis saxeli $ simboloTi iwyeba! Mmomdevno
poziciebze ki SeiZleba gamoviyenoT laTinuri simboloebi, cifrebi
da xazgasmis niSani. sxva simboloebis, maT Soris xarvezis
(carieli aris) gamoyeneba ar daiSveba. moviyvanoT cvladebis
sworad dasaxelebis magaliTebi:
$a
$ a_b_c
$ b555
cvladebs eniWebaT mniSvnelobebi. MmniSvnelobebi da
Sesabamisad cvladebic sxvadasxva tipis SeiZleba iyos. KkerZod,
cvladebSi dasaSvebia SevinaxoT: ricxvebi, simboloTa striqonebi,
obieqtebi, masivebi, logikuri mniSvnelobebi...
rogorc wesi, cvladis Seqmna da misTvis mniSvnelobis miniWeba
erTsa da imave instruqciaSi xdeba, magaliTad:
$num1 = 8;
$name = “gia”;
instruqciebSi mniSvnelobaminiWebuli cvladis gamoyeneba,
faqtobrivad, am mniSvnelobis gamoyenebaa. MmagaliTad, gamosaxuleba
print $num1;
ekranze gamoiyvans imave informacias (8), rasac - gamosaxuleba
print 8;
dinamikuri cvladebi
PHP4(5)-Si siaxlea - cvladis saxeli SeiZleba davimaxsovroT,
rogorc sxva cvladis mniSvneloba! kerZod, gamosaxuleba
$user=”bob”;
SeiZleba Secvlil iqnes Semdegi ori gamosaxulebiT:
$holder=”user”;
$$holder=”bob”;
instruqcia print $$holder; ekranze gamoiyvans bob mniSvnelobas.
gansxvavebul Sedegs mogvcems instruqcia
print “$$ holder”;
am SemTxvevaSi interpretators ekranze gamohyavs brWyalebSi
moqceuli cvladis mniSvneloba anu mocemul SemTxvevaSi $user
striqoni. Ee.i. interpretatori, ase vTqvaT, meore nabijs aRar dgams
- $user aRiqvas, rogorc cvladi, da gamogviyvanos misi mniSvneloba.
8
sainteresoa, rom dinamikuri cvladi SeiZleba gamocxaddes
striqonis (striqonuli mudmivis) meSveobiTac (gamoiyeneba
gansxvavebuli sintaqsi):
$ {“user”}=”bob”;
aseTi gadawyveta, rogorc Semdeg vaCvenebT, aadvilebs
dinamikuri cvladebis generirebis process ciklebisa da
konkatenciis operatoris gamoyenebiT.
cxadia, figurul frCxilebSi cvladic SeiZleba moTavsdes:
$ {$holder}
qvemoT programaSi moyvanilia dinamikuri cvladis Seqmnis
sxvadasxva magaliTi.
$holder cvladSi Senaxulia “user” striqoni, romelic $$holder
dinamikur cvlads aformirebs $user cvladis saxiT. am
ukanasknels eniWeba “bob” mniSvneloba.
Semdeg moyvanilia aRniSnuli cvladebis mniSvnelobebis
ekranze gamoyvanis aseve sxvadasxva xerxi:
listingi 2
<html>
<head>
<title> dinamikuri cvladis Seqmna da misdami mimarTva</title>
</head>
<body>
<?php
$holder=”user”;
$$holder=”bob”;
Llistingi 3
<html>
<head>
<title>cvladis tipis Semowmeba </title>
</head>
<body>
<?php
$testing = 5;
print gettype ($testing); // integer
print “<br>”;
$testing = “five”;
print gettype ($testing ); // string
print (“<br>”);
$testing = 5.0;
print gettype ($testing ); //double
print (“<br>”);
$testing = true;
print gettype ($testing ); //Boolean
print “<br>”;
?>
</body>
</html>
10
es programa gamoitans Semdeg Setyobinebebs:
integer
string
double
boolean
listingi 4
<html>
<head>
<title> cvladis tipis Secvla </title>
</head>
<body>
<?php
$undecided = 3.14;
print gettype( $undecided ); //double
print “ -- $undecided<br>” // 3.14
settype( $undecided, string );
print gettype ( $undecided ); // string
print “ -- $undecided<br>”; // 3.14
settype( $undecided, integer );
print gettype( $undecided ); // integer
print “ -- $undecided<br>”; //3
settype( $undecided, double );
print gettype( $undecided ); // double
print “ -- $undecided<br>”; // 3.0
settype( $undecided, boolean );
print gettype ( $undecided ); // boolean
print “ -- $undecided<br>”; // 1
?>
</body>
</html>
aRsaniSnavia, rom mocemul cvladze dayrdnobiT SesaZlebelia
SevqmnaT axali, magram gansxvavebuli tipis mqone cvladi. cxadia,
bazisuri cvladis tipi am SemTxvevaSi ucvleli rCeba (bunebrivia,
mniSvnelobac). axali, gansxvavebuli tipis cvladis mniSvneloba ki
ganisazRvreba bazisuri cvladis mniSvnelobis mixedviT.
moviyvanoT aseTi gardaqmnebis magaliTi:
listingi 5
<html>
<head>
<title> cvladis tipis gardaqmna </title>
11
</head>
<body>
<?php
$undecided = 3.14;
$holder = ( double ) $undecided;
print gettype( $holder ); // double
print “ -- $holder<br>”; // 3.14
$holder = ( string ) $undecided;
print gettype( $holder ); // string
print “ -- $holder<br> “; // 3.14
$holder = ( integer ) $undecided;
print gettype( $holder ); // integer
print “ -- $holder<br>”; // 3
$holder = ( double ) $undecided;
print gettype ( $holder ); // double
print “ -- $holder<br>”; // 3.14
$holder = ( boolean ) $undecided;
print gettype ($holder ); // boolean
print “ -- $holder<br>”; // 1
?>
</body>
</html>
gamosaxulebebi PHP4-Si sxva enebis msgavsad iqmneba.
Ggamoiyeneba
+, -, /, * da % (gayofa modulis mixedviT) operatorebi.
striqonis striqonze gadabma ki aq wertilis meSveobiT
xorcieldeba:
Print “hello”.”world”;
am instruqciis Sedegad ekranze aisaxeba
hello world
striqoni.
mniSvnelobis miniWebis Cveulebrivi operatori x=x+4; aqac
SeiZleba sxvagvarad warmogvidges:
x += 4;
cxadia, gamoiyeneba
-=, /=, *= da %= operatorebic.
PHP-Si funqcionirebs .= operatoric. magaliTad, $x = $x . “test”
gamosaxuleba SeiZleba Seicvalos $x .= “test” gamosaxulebiT.
gamosaxulebebSi gamoiyeneba CvenTvis nacnobi Sedarebis
operatorebi:
==, !=, >, >=, <, <=
12
aq siaxles warmoadgens === operatori, romelic amowmebs
operandebis ara marto mniSvnelobebis, aramed maTi tipebis
Tanxvedrasac!
rac Seexeba logikur operatorebs, || da && operatorebTan
erTad gamoiyeneba imave daniSnulebis mqone or da and logikuri
operatorebi (SevniSnoT, rom pirvelebs ufro maRali prioriteti
gaaCniaT).
“uaryofis” logikur operacias axorcielebs ! operatori,
xolo “gamomricxavi an” operacias (niSnavs, rom mxolod erTi
operandia WeSmariti) – xor logikuri operatori.
PHP-Si vxvdebiT agreTve CvenTvis ukve nacnob, specifikuri
saxis mqone miniWebis operatorebs:
$x++
$x--
--$
++$
zogjer saWiroa, programaSi Tavidan aviciloT cvladis
mniSvnelobis da tipis Secvla. AmaSin cvlads mxolod erTxel,
programis dasawyisSi mieniWeba mniSvneloba (am mniSvnelobis
mixedviT - tipic) da mere is aRar icvleba. cvladis aseTi
nairsaxeoba faqtobrivad konstantaa. PHP-Si mas asec uwodeben.
misi gansazRvrisas $ simbolos ar iyeneben da saxels didi
asoebisagan adgenen:
listingi 6
<html>
<head>
<title>konstantis Seqmna </title>
</head>
<body>
<?php
define ( “USER”, “Gerald” );
print “Welcome ”.USER;
?>
</body>
</html>
mivaqcioT yuradReba - gamobeWdvisas konstanta striqons
mivuerTeT konkatenciis operatoris meSveobiT.
aRvniSnoT, rom PHP ena programists awvdis e.w.
winaswargansazRvruli konstantebis gamoyenebis saSualebasac.
magaliTad: _FILE_ konstanta Seicavs im failis saxels,
romelsac mocemul momentSi amuSavebs interpretatori, _LINE_ ki -
failis mimdinare striqonis nomers da sxv.
13
nakadis marTva
programis Sesrulebis mimdinareoba, situaciidan gamomdinare,
SeiZleba Seicvalos. aqac, programirebis nacnob enebTan Sedarebas
Tu movaxdenT, gansakuTrebul siaxleebs ar vxvdebiT.
moviyvanoT IF instruqciis gamoyenebis magaliTi:
listingi 7
<html>
<head>
<title> if instruqcia </title>
</head>
<body>
<?php
$mood = “sad”;
if ($mood == “happy” )
{
print “me karg gunebaze var!”;
}
?>
</body>
</html>
radgan aq IF-is momdevno bloki erTaderT instruqcias Seicavs,
SeiZleboda figuruli frCxilebi arc gamogveyenebina.
programa odnav gavarTuloT else blokis daniSnulebis
sademonstraciod:
listingi 8
<html>
<head>
<title> if instruqcia else blokiT </title>
</head>
<body>
<?php
$mood = “dardianada vaar”;
if ($mood == “happy” )
{
print “me karg gunebaze var!”
}
else
{
print $mood;
}
?>
</body>
</html>
14
Semdegi nabijia elseif konstruqciasTan gacnoba, romelic if-
instruqciaSi, else-blokisgan gansxvavebiT, erTmaneTis miyolebiT
ramdenjermec SeiZleba Segvxvdes (qvemoT moyvanil magaliTSi ki
igi mxolod erTgan figurirebs):
listingi 9
<html>
<head>
<title> else da elseif blokebis gamoyeneba </title>
</head>
<body>
<?php
$mood = “sad”;
if ($mood == “happy” )
{
print “me karg gunebaze var!”;
}
elseif ( $mood == “sad” )
{
print “ar idardo!”;
}
else
{
print “gaugebaria es $mood ”;
}
?>
</body>
</html>
programis Sesrulebis mimdevroba SeiZleba SevcvaloT CvenTvis
ukve nacnobi switch-instruqciis meSveobiTac:
listingi 10
<html>
<head>
<title>switch instruqcia </title>
</head>
<body>
<?php
$mood = “sad”;
switch ( $mood )
{
case “happy”:
print “me karg gunebaze var!”;
break;
case “sad”:
print “ar idardo!”;
15
break;
default:
print “gaugebaria es $mood ”;
}
?>
</body>
</html>
didi popularobiT ar sargeblobs, magram unda vicnobdeT ?
operatorsac:
(pirobis-Semowmeba)? Ggamosaxuleba_1_dadebiTi_pasuxisas:
gamosaxuleba_2_uaryofiTi_pasuxisas;
vaCvenoT misi funqcionireba Semdegi programis magaliTze:
listingi 11
<html>
<head>
<title> ? operatori </title>
</head>
<body>
<?php
$mood = “sad”;
$text = ($mood == ”happy”)? “me karg gunebaze var!”: “xasiaTze ver var”;
print “$text”;
?>
</body>
</html>
ciklebi
kidev erTxel gadavavloT Tvali CvenTvis nacnob ciklebs:
cikli while
listingi 12
<html>
<head>
<title> while cikli </title>
</head>
<body>
<?php
$counter = 1;
while ( $counter <= 12 )
{
print “$counter gavamravloT orze, iqneba ”. ($counter*2). “<br>”;
$counter++;
}
?>
16
</body>
</html>
For cikli
rac am ciklis meSveobiT xorcieldeba, do … while cikliTac
miiRweva. magram, radganac for cikli ufro advilad aRsaqmelia,
xSirad mas aZleven upiratesobas.
qvemo magaliTSi 2-ze mravldeba pirveli 12 naturaluri ricxvi:
listingi 14
<html>
<head>
<title> for cikli </title>
</head>
<body>
<?php
for ($counter = 1; $counter <=12; $counter ++ )
{
print “$counter-is orze gamravlebiT miviRebT ”.($counter*2). “<br>”;
}
17
?>
</body>
</html>
listingi 15
<html>
<head>
<title> break instruqciis gamoyeneba </title>
</head>
<body>
<?php
for ($counter = -4; $counter <=10; $counter++)
{
if ($counter == 0)
break;
$temp = 4000 / $counter;
print “40000-is $counter-ze gayofiT miviRebT $temp-s<br>”;
}
?>
</body>
</html>
roca $counter cvladis mniSvneloba nulis toli gaxdeba,
cikli Sewydeba.
listingi 16
<html>
<head>
<title> continue instruqciis gamoyeneba </title>
</head>
<body>
<?php
$counter = -4;
for ( ; $counter <= 10; $counter++ )
{
if ( $counter == 0 )
continue;
$temp = 4000/$counter;
print “Tu 4000-s gavyofT $counter-ze, miviRebT ”. $temp.”-s”.“<br>”;
}
?>
</body>
</html>
18
erTmaneTSi Cadgmuli ciklebi
ciklis sxeuli SeiZleba sxva ciklsac Seicavdes. aseTi
konstruqciis gamoyeneba gansakuTrebiT xelsayrelia cxrilebTan
muSaobisas.
moviyvanoT Cadgmuli ciklebis magaliTi, romelTac brouzeris
ekranze gamohyavs gamravlebis tabula:
listingi 17
<html>
<head>
<title> erTmaneTSi Cadgmuli for-ciklebi </title>
</head>
<body>
<?php
print “<table border=1\n>”;
for ( $y=1; $y<=12; $y++ )
{
print “<tr>\n”;
for ( $x=1; $x<=12; $x++ )
{
print “\t<td>”;
print ($x*$y);
print “</td>\n”;
}
print “</tr>\n”;
}
print “</table>”;
?>
</body>
</html>
funqciebi
nebismieri, met-naklebad “seriozuli” programa, rogorc wesi,
funqciebs iyenebs.
funqcia SeiZleba avtomats SevadaroT. Mfunqcias miewodeba
garkveuli “nedleuli” - monacemebi, romlebsac igi gadaamuSavebs
da iZleva Sedegs, romelic SeiZleba ekranze gamovitanoT CvenTvis
dabrunebuli, mis mier gamoTvlili mniSvnelobis saxiT. xSirad
funqcia orive aRniSnul qmedebas TviTonve axorcielebs.
gansakuTrebiT sasurvelia funqciebis gamoyeneba mravaljer
ganmeorebadi moqmedebebis Sesasruleblad.
funqcia ganimarteba, rogorc instruqciebis bloki, romelic
sruldeba programis mier misi gamoZaxebis SemTxvevaSi.
funqciebi ori saxisaa: sistemaSi (PHP-Si) CaSenebuli da
momxmareblis mier Seqmnili.
umeteswilad funqcias miewodeba argumenti (argumentebi). isini
unda ganlagdnen mrgval frCxilebSi (rogorc ukve viciT,
gamonakliss warmoadgens print funqcia). im iSviaT SemTxvevebSic ki,
roca romelime funqcia argumentebs ar saWiroebs, frCxilebis
dasma mainc aucilebelia. siaSi argumentebi erTmaneTisagan mZimiT
gamoiyofa.
funqcia gvibrunebs mniSvnelobas. MmagaliTad, abs() funqcia
ukan abrunebs misTvis gadacemuli ricxvis absolutur
(arauaryofiT) mniSvnelobas. sainteresoa, rom mniSvnelobas
abrunebs print() funqciac – es gaxlavT true an false, raTa programam
Seityos, warmatebiT Sesrulda Tu ara es operacia.
listingi 18
<html>
<head>
<title> abs() CaSenebuli funqciis gamoZaxeba </title>
</head>
<body>
<?php
$num = -321;
$newnum = abs($num);
print $newnum; // ekranze gamodis “321”
?>
</body>
</html>
listingi 20
<html>
<head>
<title> argumentiani funqciis Seqmna </title>
</head>
<body>
<?php
function printBR($txt);
{
print (“$txt<br>\n”);
}
print (“es aris striqoni”);
print (“es momdevno striqonia”);
print (“ai, kidev erTi striqoni”);
?>
</body>
</html>
Semdegi nabiji iqneba iseTi funqciis Seqmna, romelic
mniSvnelobas gvibrunebs:
listingi 21
<html>
<head>
<title> mniSvnelobis dambrunebeli funqciis Seqmna </title>
</head>
<body>
21
<?php
function addNums($firstnum, $secondnum);
{
$result = $firstnum + $secondnum;
return $result;
}
print addNums(3,5); // daibeWdeba 8
?>
</body>
</html>
return operacias SeuZlia Sedegi sxvadasxva saxiT daabrunos:
return 4;
return ($a / $b);
return (function($ argument));
dasaSvebia funqciis dinamikurad gamoZaxebac. magaliTad,
momxmarebels SeuZlia kompiuterTan dialogSi gadawyvitos,
romeli funqcia unda Sesruldes; mis mier miwodebuli
informaciis safuZvelze moxdeba gamosaZaxebeli funqciis saxelis
formireba.
listingi 22L
<html>
<head>
<title> funqciis dinamikurad gamoZaxeba </title>
</head>
<body>
<?php
function sayHello( );
/* aq programis gasamartiveblad vgulisxmobT, rom ”sayHello”
striqoni programas garedan miewodeba momxmareblis mier
dialogis reJimSi */
{
print (“Hello<br>”);
}
$function_holder = (“sayHello”);
$function_holder = ( );
?>
</body>
</html>
listingi 23
<html>
<head>
<title> globaluri cvladebis gamoyeneba </title>
</head>
<body>
<?php
$life = 42;
function meaningOfLife( );
{
global $life;
print “The meaning of life is $life<br>”;
}
meaningOfLife( );
?>
</body>
</html>
sakiTxis aseTi gadawyvetis Sedegad ekranze aisaxeba
Setyobineba:
The meaning of Life is 42
listingi 24
<html>
<head>
<title>cvladis mniSvnelobis Senaxva gamoZaxebebs Soris</title>
</head>
<body>
<?php
$num_of_calls = 0;
function andAnotherThing($txt );
{
global $num_of_calls;
$num_of_calls++;
print (“<h1> $num_of_calls. $txt</h1>”;
}
23
andAnotherThing( “ Widgets” );
andAnotherThing( “ Doodads” );
?>
</body>
</html>
vxedavT, rom aqac wina magaliTis msgavs xerxs viyenebT.
funqciis gareT Seqmnil cvlads rom mivwvdeT, funqciaSi igive
cvladi global instruqciis meSveobiT unda gamovacxadoT.
magram aseT midgomas erTi mniSvnelovani nakli axasiaTebs.
funqcia, romelic global instruqcias iyenebs, ar SeiZleba
damoukidebel blokad CaiTvalos, radganac mas muSaoba SeuZlia
mxolod mocemuli programis farglebSi. sakiTxi SeiZleba
sxvagvaradac gadawydes, mxolod am SemTxvevaSi unda visargebloT
static instruqciiT.
Static-iT Seqmnili cvladi lokalurobis Tvisebas inarCunebs,
oRond am cvladebisTvis damaxasiaTebeli Rirseba is gaxlavT, rom
funqciisadmi yoveli mimarTvisas maT axsovT wina gamoZaxebisas
miRebuli mniSvneloba:
listingi 25
<html>
<head>
<title> STATIC instruqcia </title>
</head>
<body>
<?php
function andAnotherThing ($txt)
{
static $num_of_calls = 0;
$num_of_calls++;
print "<h1>$num_of_calls. $txt</h1>";
}
andAnotherThing ("Widgets");
andAnotherThing ("Doodads");
?>
</body>
</html>
aseTi funqcia ki ukve damoukidebeli saxis gaxlavT. Aaxla
saWiro aRaraa globaluri cvladebis Seqmnaze zrunva, Sedegi ki
iseTive iqneba, rogorsac wina programa uzrunvelyofda.
24
kvlav argumentebis Sesaxeb; maTi mniSvnelobis
gansazRvra dumilis principiT
funqciis gamoZaxebisas ama Tu im argumentis mniSvneloba
SesaZlebelia dumilis wesiTac ganisazRvros:
listingi 26
<html>
<head>
<title>funqcia arasavaldebulo argumentiT</title>
</head>
<body>
<?php
function fontWrap($txt, $size=3)
{
print "<font size=\"$size\"face=\"Helvetica, Arial, Sans-Serif\">$txt</font>";
}
fontWrap("A heading<br>",5);
fontWrap("some body text<br>");
fontWrap("some more body text <br>");
fontWrap("yet more body text <br>");
?>
</body>
</html>
listingi 28
<html>
<head>
<title>dayrdnobis meSveobiT argumentis gadacema</title>
</head>
<body>
<?php
function addFive($num)
{
$num += 5;
}
$orignum = 10;
addFive($orignum);
print $orignum;
?>
</body>
</html>
masivebi
masivi erTi saxelis mqone mniSvnelobaTa krebulia,
romelTagan TiToeuls SeiZleba mivmarToT indeqsis an teqsturi
striqonis meSveobiT.
davuSvaT, programaSi saWiroa, inaxebodes raime 100
mniSvneloba. SeiZleboda TiToeuli maTganisTvis gangvesazRvra
26
cvladi (Sesabamisi mniSvnelobiT), magram gacilebiT aadvilebs am
mniSvnelobebTan muSaobas maTi masivis saxiT gaformeba (magaliTad,
sortirebisas, ciklebis gamoyenebisas da a.S.). masividan elementis
amorCeva umeteswilad nomris CvenebiT xdeba (sxva SemTxvevebi
qvemoT iqneba ganxiluli). PHP-Si masivis pirveli elementis
nomeria ara “1”, aramed “0”. (gavixsenoT, rom JavaScript-Sic es
gadawyvetileba iyo miRebuli).
masivis elementebisTvis mniSvnelobebis miniWeba amave dros maT
gamocxadebasac niSnavs. MmniSvnelobebis miniWeba ori xerxiT
xorcieldeba:
I - $users = array (“gia”, “mzia”, “lia”, “gigi”);
II - $users[] “gia”;
$users[] “mzia”;
$users[] “lia”;
$users[] “gigi”;
cxadia, meore SemTxvevaSi SesaZlebeli iyo indeqsebis Cvenebac,
magram masivis Seqmnisas es arafers ar gvaZlevs, garda saqmis
garTulebisa.
masivs misi Seqmnis Semdegac SegviZlia davumatoT elementebi
(indeqsis CvenebiT an mis gareSec):
$users = array (“gia”, “mzia”, “lia”, “gigi”);
$users[] = “joni”;
$users[] = “jimi”;
asocirebuli masivebi
asocirebuli masivi iseTi masivi gaxlavT, romlis elementis
arCeva saxelis meSveobiT SegviZlia. daprogramebis sxva enebSi
amgvar masivebs struqturebs uwodeben.
PHP-Si, sxva mxriv, Cveulebriv da asocirebul masivebs Soris
araviTari gansxvaveba ar arsebobs. Tumca, cxadia, asocirebuli
masivebis aRniSnuli Tavisebureba maTi damuSavebisas gansxvavebul
midgomebs moiTxovs.
asocirebuli masivebis Seqmnac zemoT moyvanili orive xerxiT
aris SesaZlebeli:
$character = array (saxeli => “gia”,
gvari => “lomiZe”,
asaki => 22,
“damatebiti informacia” => “niangebze monadire”);
mivaqcioT yuradReba – Tu masivis elementis saxelSi
Sualedebi gvxvdeba, saWiroa es saxeli brWyalebSi movaTavsoT.
27
axla ukve SegviZlia mivmarToT masivis nebismier elements,
magaliTad, amgvarad:
print $character [ asaki];
vaCvenoT meore gzac:
$character [saxeli] = ”gia”,
$character [gvari] = ”lomiZe”,
$character [asaki] = 22,
$character [“damatebiti informacia”] = ”niangebze monadire”
mravalganzomilebiani masivebi
masivis elementis rolSi SeiZleba gamovides rogorc raime
tipis mniSvneloba, aseve obieqti da masivic ki.
mravalganzomilebiani masivi iseTi masivi gaxlavT, romlis
TiToeuli elementi masivs warmoadgens. Mmisi meSveobiT advilad
SeiZleba SevqmnaT monacemTa sakmaod rTuli struqturebi,
magaliTad, asocirebuli masivebis masivi:
listingi 29
<html>
<head>
<title>mravalganzomilebiani masivis Seqmna</title>
</head>
<body>
<?php
$characters = array (
array ( name=>"bob",
occupation=>"superhero",
age=>30,
speciality=>"x-ray vision" ),
array ( name=>" sally",
occupation=>"superhero",
age=>24,
speciality=>"superhuman strength"),
array ( name=>"Mary",
occupation=>"arch villain",
age=>63,
speciality=>"nanotechnology" )
);
print $characters[0] [occupation];
// prints "superhero"
?>
</body>
</html>
28
zogjer CvenTvis ucnobia masivSi elementebis ricxvi. AaseT
SemTxvevaSi SegviZlia visargebloT count() funqciiT, romelic
masivis elementebis ricxvs gvibrunebs. MmagaliTad, roca gvsurs
amovbeWdoT ucnobi sigrZis masivis bolo elementi, ase SeiZleba
vimoqmedoT:
$users = array (“gia”, “lia”, “mzia”, “gigi”);
print $users[count($users) - 1];
gadmocemuli zomis 1-iT Semcireba gamowveulia im mizeziT, rom
masivis elementebis danomrva 0-dan iwyeba!
masivis elementebis ekranze gamoyvana SeiZleba ganvaxorcieloT
ciklebis meSveobiT. Yyvelaze martivi xerxia specifikuri foreach
ciklis gamoyeneba, romlisTvisac saWiro ar gaxlavT miTiTeba, Tu
ramdeni elementia masivSi. samagierod, aucilebelia im cvladis
Cveneba, romelSic droebiT Seinaxeba masivis TiToeuli elementi.
moviyvanoT am ciklis gamoyenebis magaliTi:
$users = array (“gia”, “lia”, “mzia”, “gigi”);
foreach ($users as $val)
{
print “$val<br>” ;
}
asocirebuli masivis ciklSi CaTvaliereba ki ramdenadme
gansxvavebul midgomas moiTxovs:
foreach ($array as $saxeli => $mniSvneloba)
aq saWiro xdeba masivis elementebis saxelisa da
mniSvnelobebis droebiT Semnaxveli cvladebis gansazRvra.
moviyvanoT magaliTi:
listingi 30
<html>
<head>
<title>asocirebuli masivis CaTvaliereba</title>
</head>
<body>
<?php
$character = array (
name=>"bob",
occupation=>"superhero",
age=>30,
"special power"=>"x-ray vision"
);
foreach ( $character as $key=>$val )
{
print "$key = $val<br>";
}
29
?>
</body>
</html>
programis Sesrulebis Sedegad ekranze gamodis Semdegi
informacia:
name = bob
occupation = superhero
age = 30
special power = x-ray vision
listingi 31
<html>
<head>
<title>cikliT CaTvaliereba</title>
</head>
<body>
<?php
$characters = array (
array ( name=>"bob",
occupation=>"superhero",
age=>30,
speciality=>"x-ray vision" ),
array ( name=>" sally",
occupation=>"superhero",
age=>24,
speciality=>"superhuman strength"),
array ( name=>"Mary",
occupation=>"arch villain",
age=>63,
speciality=>"nanotechnology" )
);
foreach ( $characters as $val )
{
foreach ( $val as $key=>$final_val )
{
print "$key: $final_val<br>";
}
print "<br>";
}
?>
</body>
</html>
30
ekranze gamova asocirebuli masivebis masivi:
name: bob
occupation: superhero
age: 30
speciality: x-ray vision
name: sally
occupation: superhero
age: 24
speciality: superhuman strength
name: Mary
occupation: arch villain
age: 63
speciality: nanotechnology
am programaSi gare cikli CaaTvalierebs nomrebis mixedviT
mowesrigebul $users masivs da mis TiToeul elements moaTavsebs
$val cvladSi. TiToeuli am elementTagani TviTon warmoadgens
masivs, magram radganac es masivi asocirebuli gaxlavT, Sida
cikliT misi CaTvalierebisas gamoiyeneba zemoT ganxiluli Semdegi
sintaqsi - TiToeuli qveelementis saxeli da mniSvneloba
ganTavsdeba $key da $final_val cvladebSi.
masivebis gaerTianeba
masivebis gaerTianebas emsaxureba array_merge CaSenebuli
funqcia:
$first = array (“a”, “b”, “c”);
$second = array (“1”, “2”, “3”);
$third = array_merge ($first, $second);
foreach ($third as $val)
{
print “$val<BR>”;
}
obieqtebi
daprogramebaSi Semdgomi, mniSvnelovani nabiji iqna win
gadadgmuli, roca SemoRebul iqna obieqtis cneba.
obieqti aris raime arsis Tvisebebis da am Tvisebebis damamuSa-
vebuli funqciebis - meTodebis krebuli.
daprogramebis procesi mravali niuansis gaTvaliswinebas
moiTxovs. obieqtebi Tavis Tavze iReben “Sav” samuSaos da Tan
momxmarebels awvdian maTTan interfeisis damyarebis moxerxebul
saSualebebs.
TviT obieqtebi warmogvidgeba, rogorc garkveuli klasis
konkretuli egzemplarebi. amrigad, klasi gamodis specialuri
Sablonis rolSi, romlis mixedviTac SesaZlebelia Seiqmnes
obieqti.
maSasadame, obieqtebis Seqmnamde unda gamovacxadoT klasi -
ganvsazRvroT is Tvisebebi da meTodebi, romlebic daaxasiaTeben
aRniSnul klass da, Sesabamisad, mis bazaze Seqmnil klasis
egzemplarebs – obieqtebs.
obieqtebisTvis ki xdeba Tvisebebis konkretuli mniSvnelo-
bebis gansazRvra.
SevniSnoT, rom TvisebebisTvis mniSvnelobebis miniWeba,
dumilis principiT, klasis gamocxadebis drosac SeiZleba. amasTan,
33
dasaSvebia, rom obieqtisTvis yoveli Tvisebis mniSvnelobis
gansazRvra arc moxdes.
gamovacxadoT raime martivi klasi da mis safuZvelze ganv-
sazRvroT klasis egzemplarebi - obieqtebi:
class first_class
{
var $name=”harry”;
}
$obj1=new first_class();
$obj2=new first_class();
// pirveli obieqtis name Tvisebas mivaniWoT mniSvneloba.
// yuradReba mivaqcioT Tvisebis gansazRvris wess!
$obj1 -> name=”bob”;
// ekranze avsaxoT obieqtebis Tvisebis mniSvnelobebi.
Print “$obj1 -> name<br>”; // gamodis axali mniSvneloba ”bob”
Print “$obj2 -> name<br>”; // gamodis mniSvneloba ”harry” (dumiliT)
listingi 32
<html>
<head>
<title>meTodis Semcveli klasi</title>
</head>
<body>
<?php
class first_class
{
var $name;
function sayHello()
{
print "hello";
}
}
$obj1 = new first_class();
$obj1->sayHello();
// "hello"
?>
</body>
</html>
34
meTodi, vxedavT, Cveulebrivi funqciaa, oRond is klasis
SigniT ganisazRvreba. obieqtisTvis misi gamoZaxeba xdeba _>
operatoris meSveobiT.
xazgasasmelia is garemoeba, rom meTods SeuZlia mimarTos
klasSi arsebul yvela Sida cvlads (Tvisebas). am SesaZleblobas
uzrunvelyofs cvladisadmi mimarTvisas misi saxelis win $this
maCveneblis dasma:
listingi 33
<html>
<head>
<title>Tvisebisadmi mimarTva meTodidan</title>
</head>
<body>
<?php
class first_class
{
var $name="harry";
function sayHello()
{
print "hello! my name is $this->name<BR>";
}
}
$obj1 = new first_class();
$obj1->sayHello();
// print "hello my name is harry"
?>
</body>
</html>
listingi 34
<html>
<head>
<title>konstruqtoris Semcveli klasi</title>
</head>
<body>
35
<?php
class first_class
{
var $name;
function first_class( $n="anon" )
{
$this->name = $n;
}
function sayHello()
{
print "hello my name is $this->name<BR>";
}
}
$obj1 = new first_class("bob");
$obj2 = new first_class( "harry");
$obj2 = new first_class();
$obj1->sayHello();
// print "hello my name is bob"
$obj2->sayHello();
// print "hello my name is harry"
?>
</body>
</html>
magaliTi
mwyobrSi moviyvanoT obieqtebis Sesaxeb Cveni codna da SevqmnaT
klasi, romelic ekranze gamogviyvans dasaTaurebul svetebian
cxrils. am klasSi gaviTvaliswinoT meTodi, romelic Seqmnil
obieqts daumatebs masivis saxiT mocemul striqons.
dasasrul, kidev erTi meTodiT avsaxoT cxrili ekranze.
36
klasis Tvisebebi
programis agebas viwyebT Sesabamisi klasis formirebiT:
class Table
{
var $table_array = array(); // cxrilSi monacemebis masivi
var $headers = array(); // svetebis saxelTa masivi
var $cols; // svetebis raodenobis amsaxveli cvladi
}
konstruqtori
$headers masivis mniSvnelobebi unda ganisazRvros obieqtis
(cxrilis) Seqmnisas. am mizans emsaxureba konstruqtori-funqcia.
cxadia, misi saxeli unda emTxveodes klasis saxels, anu unda iyos
Table. Sinaarsobrivi mxaridan gamomdinare, argumentis (romelic
masivs warmoadgens) saxelad avirCioT $headers. Semdeg, CvenTvis
ukve nacnobi xerxiT unda ganisazRvros klasSi gamocxadebuli
svetebis saTaurTa masivis Semcveloba da count() funqciis meSveobiT
daTvlil iqnes masSi elementebis raodenoba.
konstruqtors eqneba aseTi saxe:
function Table ($headers)
{
$this -> headers=$headers;
$this -> cols=count ($headers);
}
aRvniSnoT, rom obieqtis TvisebebSi ganTavsebuli informacia
misawvdomia obieqtis nebismieri meTodisTvis.
addRow() meTodi
am meTodis yoveli gamoZaxebisas obieqts emateba monacemTa
striqoni. es striqoni masivis saxiT warmogvidgeba, romlis sigrZe
unda emTxveodes saTaurebis striqonis sigrZes (programa amowmebs
am pirobis Sesrulebas):
function addRow ( $row )
{
if ( count ( $row ) != $this->cols )
return false;
array_push ( $this->table_array, $row);
return true;
}
AddRowAssocArray() meTodi
wina meTodisagan gansxvavebiT, addRowAssocArray() meTods
argumentad gadaecema ara mowesrigebuli, aramed asocirebuli
masivi. amasTan, SesaZlebelia masivis sigrZe naklebic iyos cxrilis
siganeze, e.i. masSi yoveli svetis saxeli arc figurirebdes.
programa Semdegnairad igeba:
• funqcia zemoT aRniSnul asocirebul masivs $row-assoc
argumentis saxiT Rebulobs.
• yalibdeba $row carieli masivi, romelic TandaTanobiT ivseba
saWiro elementebiT asocirebuli masividan.
• $row masivisaTvis elementis dasamateblad foreach cikliT
CaTvalierdeba $this _ >headers saTaurTa masivi da misi
elementebis mniSvneloba Tanmimdevrulad mieniWeba h eader
cvlads.
• isset() CaSenebuli funqciiT ciklSi mowmdeba, arsebobs Tu ara
$row-assoc asocirebul masivSi $header saxelis mqone elementi.
Tu es ase ar gaxlavT, nakluli $row-assoc masivi ivseba am
saxelis mqone elementiT, romelsac carieli striqonis
mniSvneloba eniWeba. nebismier SemTxvevaSi amas mosdevs $row
masivis Sesabamisi elementis formirebac.
• ciklis damTavrebis Semdeg Cvens gankargulebaSia $row masivi,
romelSic figurirebs $row-assoc asocirebul masivSi
mocemuli elementebi. zogierTi adgili ki masSi, rogorc
vnaxeT, carieli mniSvnelobiTac SeiZleba ganisazRvros.
• programis boloSi array_push CaSenebuli meTodiT xdeba
$table_array cvladSi ganlagebuli masivisTvis $row masivis,
rogorc elementis, damateba.
• return true instruqciiT xdeba Setyobineba, rom funqciis
muSaoba normalurad damTavrda.
output() meTodi
am meTodiT programas ekranze gamohyavs table-array mraval-
ganzomilebiani masividan cxrilis svetebis saTaurebi da masivis
mniSvnelobebi.
Tavdapirvelad foreach ciklis meSveobiT CaTvalierdeba
svetebis saTaurebis masivi da yoveli maTgani ekranze aisaxeba.
gadavdivarT Semdeg striqonze. foreach cvladSi CaTvalierdeba
table-array masivis elementebic, magram radganac es masivi
mravalganzomilebiania (mocemul SemTxvevaSi - organzomilebiani),
saWiro xdeba misi TiToeuli elementis (masivis) Sida foreah ciklSi
38
CaTvalierebac da calkeuli elementebis ekranze gamoyvana. zeda
donis TiToeul elements (anu masivis) amobeWvdis Semdeg programas
kursori momdevno striqonze gadahyavs.
sabolood, mTliani programa da misi muSaobis Sedegi aseTi
saxiT warmogvidgeba:
listingi 35
<html>
<head>
<title> Table klasi</title>
</head>
<body>
<?php
class Table
{
var $table_array = array ();
var $headers = array ();
var $cols;
listingi 36
<html>
<head>
<title>arsebuli klasis bazaze axlis Seqmna</title>
</head>
<body>
40
<?php
class first_class
{
var $name = "harry";
function first_class( $n )
{
$this->name = $n;
}
function sayHello()
{
print "hello my name is $this->name<br>";
}
}
}
$test = new second_class("son of harry");
$test->sayHello();
listingi 37
<html>
<head>
41
<title>meTodis xelaxla gansazRvra</title>
</head>
<body>
<?php
class first_class
{
var $name = "harry";
function first_class( $n )
{
$this->name = $n;
}
function sayHello()
{
print "hello my name is $this->name<br>";
}
}
listingi 38
<html>
<head>
<title>mSobliuri klasis meTodis gamoZaxeba</title>
</head>
42
<body>
<?php
class first_class
{
var $name = "harry";
function first_class( $n )
{
$this->name = $n;
}
function sayHello()
{
print "hello my name is $this->name<br>";
}
}
konstruqtoris Seqmna
warmoebul klasSi SevqmnaT sakuTari konstruqtori
(winaaRmdeg SemTxvevaSi obieqtis Seqmnisas moxdeboda mSobeli
klasis konstruqtoris gamoZaxeba):
function HTMLTable ($headers, $bg=”#f f f f f f “)
{
Table: :Table ($headers);
$this -> bgcolor=$bg;
}
vxedavT, rom, mSobeli klasis konstruqtoris funqciebis
Sesrulebis garda, warmoebuli klasis konstruqtori Tavis Tavze
iRebs obieqtis (cxrilis) axali TvisebebisTvis argumentis miRebisa
da am TvisebebisaTvis mniSvnelobis miniWebis funqciebsac.
aRvniSnoT, rom Tu obieqtis Seqmnisas $bg argumentisaTvis
mniSvneloba ar ganisazRvreba, maSin mas mieniWeba dumiliT
gaTvaliswinebuli mniSvneloba (mocemul SemTxvevaSi #f f f f f f ).
Output() meTodi
dabolos, mogviwevs mSobliur klasSi arsebuli am meTodis
mTlianad gardaqmna, raTa SevZloT monacemebis HTML-cxrilis
saxiT gamoyvana:
function Output()
{
print "<table cellpadding=\”$this->cellpadding\” border=1>";
foreach ( $this->headers as $header )
print "<td bgcolor=\”$this->bgcolor\”><b> $header </b></td>";
foreach ( $this->table_array as $row=>$cells )
{
44
print "<tr>”;
foreach ( $cells as $cell )
print "<td bgcolor=\”$this->bgcolor\”> $cell</td>";
print "/<tr>”;
}
print "</table>”;
}
damatebiT imisa, rac xdeboda mSobliur klasSi, aq
gaTvaliswinebulia cellpadding da bgcolor atributebis formirebac.
mTliani programa da misi muSaobis Sedegi aseTi saxiT
warmogvidgeba:
listingi 39
<html>
<head>
<title> Table da HTMLTable klasebi </title>
</head>
<body>
<?php
class Table
{
var $table_array = array();
var $headers =array ();
var $cols;
function Table ($headers )
{
$this->headers =$headers;
$this->cols =count ( $headers );
}
function addRow ( $row )
{
if ( count ($row) != $this->cols )
return false;
array_push($this->table_array, $row);
return true;
}
45
function addRowAssocarray( $row_assoc )
{
if ( count ($row_assoc) != $this->cols )
return false;
$row = array();
foreach ( $this->headers as $header )
{
if ( ! isset( $row_assoc[$header] ))
$row_assoc[$header] = " ";
$row[] = $row_assoc[$header];
}
array_push($this->table_array, $row);
}
function output ()
{
print "<pre>";
foreach ( $this->headers as $header )
print "<B>$header</B> ";
print "\n";
foreach ( $this->table_array as $y )
{
foreach ( $y as $xcell )
print "$xcell ";
print "\n";
}
print "</pre>";
}
}
function output ()
{
print "<table cellpadding= \"$this->cellpadding\" border =1>";
foreach ( $this->headers as $header )
print "<td bgcolor=\”$this->bgcolor\”><b> $header </b></td>";
foreach ( $this->table_array as $row=>$cells )
{
print "<tr>";
foreach ( $cells as $cell )
print "<td bgcolor=\"$this-> bgcolor\"> $cell</td>";
print "</tr>";
}
print "</table>";
}
}
$test = new HTMLTable( array( "a", "b", "c"), "#00FF00");
$test->setCellpadding( 7 );
$test->addRow( array(1,2,3));
$test->addRow( array(4,5,6));
$test->addRowAssocArray ( array ( b=>0, a=>6, c=>3 ));
$test->output();
?>
</body>
</html>
47
programis muSaobis Sedegia Semdegi cxrili:
a b c
1 2 3
4 5 6
6 0 3
formebTan muSaoba
dasawyisSi gavixsenoT, rom programebSi globaluri cvladebis
gamocxadeba xdeba yvela funqciis gareT, ase vTqvaT, programis
pirvel doneze. TiToeuli globaluri cvladi inaxeba CaSenebul
asocirebul $GLOBALS masivSi.
vnaxoT, rogor xerxdeba am cvladebis CaTvaliereba:
listingi 40
<HTML>
<head>
<title> $GLOBALS masivis CaTvaliereba </title>
</head>
<body>
<?php
$user1 = "Bob";
$user2 = "Harry";
$user3 = "Mary";
foreach ( $GLOBALS as $key=>$value )
{
print "\$GLOBALS[\"$kay\"] == $value<br>";
}
?>
</body>
</html>
listingi 42
<HTML>
<head>
<title> martivi html-forma </title>
</head>
<body> <form action="eg9.3.php" method="GET">
<input type="text" name="user">
<br>
<textarea name="address" rows="5" cols="40">
</textarea>
<br>
<input type="submit" value="hit it!">
</form>
</body>
</html>
listingi 43
<HTML>
<head>
<title> wina listingidan formis monacemebis wakiTxva </title>
</head>
<body>
<?php
print "Welcome <b>$user</b><p>\n\n";
print "your address is:<p>\n\n<b>$address</b>";
?>
</body>
</html>
listingi 44
<HTML>
<head>
<title> HTML forma Select tegiT </title>
</head>
<body>
<form action="eg9.5.php" method="POST">
<input type="text" name ="user">
<br>
<textarea name="address" rows="5" cols="40">
</textarea>
<br>
<select name="produqts[]" multiple>
<option>Sonic Screwdriver
<option>Tricorder
<option>ORAC AI
<option>HAL 2000
</select>
</br>
<input type="submit" value="hit it!">
</form>
</body>
</html>
select tegSi gadasacemi elementisaTvis products saxeli rom
migveniWebina, maSin programa daamuSavebda siaSi SerCeul mxolod
erT mniSvnelobas, products[] saxeli ki uzrunvelyofs am
programisaTvis momxmareblis mier arCeuli mniSvnelobebis
gadacemas $products masivis saxiT.
programas SeiZleba aseTi saxe hqondes:
listingi 45
<HTML>
<head>
<title> wina listingidan formis monacemebis damuSaveba </title>
</head>
<body>
<?php
50
print "Welcome <b>$user</b><p>\n\n";
print "Your address is:<p>\n\n<b>$address</b><p>\n\n";
print "Your product choices are:<p>\n\n";
print "<ul>\n\n";
foreach ( $products as $value )
{
print "<li>$value<br>\n";
}
print "</ul>";
?>
</body>
</html>
SevniSnoT, rom, select-is garda, erTi saxis ramdenime
mniSvnelobis gadacema sxva elementebsac SeuZliaT (magaliTad,
erTi saxelis qveS gaerTianebul almebis mimdevrobas).
HTML-teqstisa da PHP-programebis
erT furcelze ganlageba
zogjer, Tu es SesaZlebelia, umjobesia HTML-teqsti da PHP-
programa erT Web-furcelze ganvalagoT. magaliTad, maSin, roca
formis Sevseba ramdenjerme xdeba. igulisxmeba SemTxveva, roca
programa teqstisgan gancalkevebulia da ara masSi mraval “naWrad”
gafantuli, rac mis wakiTxvas arTulebs.
SevqmnaT skolamdeli asakis bavSvebisaTvis programa,
romelic «Caifiqrebs» ricxvs da pasuxobs kiTxvaze, momxmareblis
mier misTvis gadacemuli ricxvi metia Tu naklebia am ricxvze.
daviwyoT HTML-formis Seqmna. igi Seicavs erTaderT teqstur
vels. aseT SemTxvevaSi formis gadasacemad Tanamedrove
brouzerebs aRar sWirdebaT Submit Rilakis arseboba – am mizniT
sakmarisia <Return> klaviSze xelis daWera.
Semdeg, action elementSi php programuli failis nacvlad
miTiTebulia $PHP_SELF cvladi. maSasadame, formis Sevsebis
Semdeg mimarTva xdeba sakuTari Tavisadmi:
listingi 46
<HTML>
<head
<title>Tavis Tavis gamomZaxebeli HTML forma </title>
</head>
<body>
<form action=<?php print $PHP_SELF?>" method="POST">
Type your guess here: <input type="text" name="guess">
</form>
</body>
</html>
51
cxadia, ekranze araferi aisaxeba, amitom Semdegi nabiji iqneba
imave Web-furcelze php-programis teqstis damateba:
listingi 47
<?php
$num_to_guess = 42;
$message = " ";
if ( ! isset( $guess ) )
{
$message = "Welcome to the guessing machine!";
}
elseif ( $guess > $num_to_guess )
{
$message = "$guess is too big! Try a smaller number";
}
elseif ( $guess < $num_to_guess )
{
$message = "$guess is too small! Try a larger number";
}
else
{
$message = "Well done!";
}
?>
<html>
<head>
<title> ricxvis gamomcnobi programa </title>
</head>
<body>
<form action=<?php print $PHP_SELF?>" method="POST">
Type your guess here: <input type="text" name="guess">
</form>
</body>
</html>
mdgomareobis dasafiqsireblad
damaluli velebis gamoyeneba
davuSvaT, gvsurs, davimaxsovroT, Tu ramdeni cda gamoiyena
momxmarebelma.Aam saqmeSi SegviZlia e.w. damaluli veli davixmaroT.
igi teqsturi velia, romelic ekranze uSualod ar aisaxeba.
vaCvenoT, Tu rogor SeiZleba Web-furcelze aseTi velis
damateba da PHP-programiT misi damuSaveba:
listingi 48
<?php
$num_to_guess = 42;
$message = " ";
$num_tires = ( isset( $num_tries ) ) ? ++$num_tries : 0;
if ( ! isset( $guess ) )
{
$message = "Welcome to the guessing machine!";
}
elseif ( $guess > $num_to_guess )
{
$message = "$guess is too big! Try a smaller number";
}
elseif ( $guess < $num_to_guess )
{
$message = "$guess is too small! Try a larger number";
}
else // must be equivalent
{
$message = "Well done!";
}
53
$guess = (int) $guess;
?>
<html>
<head>
<title> damaluli velis meSveobiT mdgomareobis damaxsovreba
</title>
</head>
<body>
<h1>
<?php print $message ?>
</h1>
Guess number: <?php print $num_tries?>
<form action=<?php print $PHP_SELF?>" method="POST">
Type your guess here:
<input type="text" name="guess" value="<?php print $guess?>">
<input type="hidden" name="num_tries" value="<?php print $num_tries?>">
</form>
</body>
</html>
vxedavT, rom formaSi davamateT num_tries saxelis mqone
damaluli veli (velis tipze migviTiTebs type = ”hidden” atributi).
mis value atributs vaniWebT mniSvnelobas:
value = ”<?php print $num_tries ?>”
aseve viqceviT guess velisTvisac. masac imave wesiT vaniWebT
mniSvnelobas:
value = ”<?php print $guess ?>”
magram ramdenadac es veli damaluli araa, ekranze aisaxeba
misi mniSvnelobac, anu is mniSvneloba, romelic bolo cdaze
Seitana momxmarebelma am velSi. SedegadD momxmarebels uadvildeba
axali arCevanis gakeTeba velSi arsebuli mniSvnelobis koreqti-
rebis meSveobiT.
programas dasawyisSi emateba Semowmebis operatori, romelic,
Tu $num_tries globaluri cvladi Seqmnilia, 1-iT zrdis mis
mniSvnelobas, winaaRmdeg SemTxvevaSi qmnis cvlads da aniWebs
nulovan mniSvnelobas.
54
klientis “gadarTva” sxva Web-furcelze
Cven mier zemoT ganxilul programas erTi arsebiTi nakli
gaaCnia - mas maSinac gamohyavs ekranze Sesavsebi forma, roca
klientma ricxvi ukve gamoicno.
Tu ki Cven gamoviyenebT e.w programis saTauris gadmomgzavn
header() funqcias, momxmareblis mier ricxvis gamocnobis
SemTxvevaSi SevZlebT mas ekranze gamovuyvanoT sxva - milocvis
Setyobineba, risTvisac sakmarisia wina programaSi else-bloki
Semdegnairad SevcvaloT:
else
{
header ( “Location: congrats.html” );
exit;
}
saerTod, serveridan klientis mier programis gamoZaxebis
SemTxvevaSi mas avtomaturad gadmoegzavneba gadmocemuli Web-
furclis Sesaxeb informaciis Semcveli saTauri. masSi arsebuli
informacia ekranze, Tu specialur zomebs ar mivmarTeT, ar
aisaxeba - am informaciis brouzeri iyenebs.
ai, tipuri saTauri, romelsac PHP-programa brouzers
ugzavnis:
listingi 49
HEAD /matt/php-book/forms/eg9.1.php HTTP/1.0
HTTP/1.1 200 OK
Date: Sun, 09 Feb 2005 17:23:45 QMT
Server: Apache/1.3.9 (UNIX) PHP 4.0
Connection: close
Content-Type: text/html
listingi 50
<?php
$num_to_guess = 42;
$message = " ";
$num_tries = ( isset( $num_tries ) ) ? ++$num_tries : 0;
if ( ! isset( $guess ) )
{
$message = "Welcome to the guessing machine!";
}
55
elseif ( $guess > $num_to_guess )
{
$message = "$guess is too big! Try a smaller number";
}
elseif ( $guess < $num_to_guess )
{
$message = "$guess is too small! Try a larger number";
}
else // must be equivalent
{
header( "Location: congrats.html" );
exit;
}
$guess = (int) $guess;
?>
<html>
<head>
<title> header() funqciis meSveobiT momxmareblisaTvis saitis
misamarTis gagzavna
</title>
</head>
<body>
<h1>
<?php print $message ?>
</h1>
Guess number: <?php print $num_tries?>
</body>
</html>
listingi 51
<HTML>
<HEAD>
<TITLE> failis gadasacemi martivi forma </title>
</head>
<BODY>
<FORM enctype=”multipart/form-data” action=”<? print $PHP_SELF ?>”
metod=”POST>”
<INPUT type=”hidden” name=”MAX_FILE_SIZE” value=”55555”>
<INPUT type=”file” name=”fupload” ><br>
<INPUT type=”submit” value=”upload!” >
</form>
</body>
</html>
listingi 52
<HTML>
<head>
<title> gadacemuli failis damuSavebis programa </title>
</head>
<?php
$file_dir= "/home/matt.htdocs/uploads";
$file_url= "http://www.corrosive.co.uk/matt/uploads";
if (isset( $fupload ) )
{
print "path: $fupload<br>\n";
print "path: $fupload_name<br>\n";
print "path: $fupload_size bytes<br>\n";
print "path: $fupload_type<p>\n\n";
if ($fupload_type == "image/gif")
{
copy ($fupload, "$file_dir/$fupload_name") or die ("Couldn't copy");
print "<img src=\"$file_url/$fupload_name\"><p>\n\n";
}
}
?>
<body>
<form enctype="multipart/form-data" action="<?php print $PHP_SELF ?>"
method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="51200">
<input type="file" name="fulpload"><br>
<input type="submit" value="Send file!">
</form>
</body>
</html>
failebTan muSaoba
failebis CarTva PHP-dokumentSi
include() direqtiviT SesaZlebelia nebismier php-dokumentSi (anu
failSi) sxva, aseve failis saxiT gaformebuli php-programis
CarTva.
CasarTavi faili SeiZleba mravalma sxva php-dokumentmac
gamoiZaxos, rac friad aadvilebs daprogramebis process. kerZod,
Tu saWiroa programul failSi informaciis koreqtireba, es
procesi ganxorcieldeba mxolod masSi, anu erTaderT adgilze.
include() funqcias sWirdeba mxolod failis saxeli (da misken
gzis) Cveneba. moviyvanoT am funqciis gamoyenebis magaliTi:
listingi 53
<HTML>
<head>
<title>include() funqciis gamoyeneba </title>
</head>
<body>
<?php
include("eg10.2.php");
?>
</body>
</html>
listingi 54
<?php
print "I have been included!!<BR>";
print "but now I can add up... 4+4 = ".(4+4);
?>
listingi 55
<HTML>
<head>
<title> include() funqcia abrunebs mniSvnelobas </title>
</head>
<body>
59
<?php
$addResult = include("eg10.6.php");
print "The include file returned $addResult";
?>
</body>
</html>
listingi 56
<?php
$retval = ( 4 + 4 );
return $retval;
?>
{ es teqsti ekranze, cxadia ver aisaxeba! }
DBM-funqciebTan muSaoba
PHP-programebs SeuZliaT imuSaon iseT mZlavr monacemTa
bazebTan, rogoricaa, magaliTad, ORACLE, SQL, MySQL Dda sxv. Tumca
monacemebis Senaxva bazis falebis saxiT da maTTan muSaoba maSinac
ki aris SesaZlebeli, roca zemoT CamoTvlili bazebi Cvens
gankargulebaSi ar imyofeba. saqme isaa, rom PHP-s e.w. DBM-
funqciebis meSveobiT SeuZlia monacemTa bazis funqciebis
emulireba. cxadia, aseTi gziT Seqmnil elementarul bazebs zemoT
moyvanili bazebis yvela SesaZlebloba ar gaaCniaT, magram rig
praqtikul SemTxvevebSi maT warmatebiT SeuZliaT, gadawyviton Cven
mier dasaxuli amocanebi.
listingi 58
<HTML>
<head>
<title> DBM_monacemTa bazaSi monacemTa damateba </title>
</head>
<body>
Adding produts now...
<?php
$dbh = dbmopen( "./data/products", "c") or die( "couldn't open DBM" );
dbmclose($dbh);
?>
</body>
</html>
listingi 59
<HTML>
<head>
<title> DBM_monacemTa bazaSi monacemTa damateba an Secvla
</title>
</head>
<body>
Adding produts now...
<?php
$dbh = dbmopen( "./data/products", "c") or die( "couldn't open DBM" );
dbmclose($dbh);
?>
</body>
</html>
listingi 60
<HTML>
<head>
<title> DBM_monacemTa bazidan monacemTa wakiTxva </title>
</head>
<body>
Here at the Impossible Gadget Shop
we're offering the following exciting
products:
<p>
<table border=1 cellpadding ="5">
<tr>
<td aling="center"> <b>product</b></td>
<td aling="center"> <b>price</b></td>
</tr>
<?php
$dbh = dbmopen( "./data/products", "c") or die( "couldn't open DBM" );
$skey = dbmfirstkey($dbh);
while ($skey !="")
{
$value=dbmfetch($dbh,$key);
print "<tr><td align =\"left\">$skey </td>";
print "<td align = \"right\">\$$value </td></tr>";
$key =dbmnextkey($dbh,$key);
}
dbmclose($dbh);
?>
</table>
</body></html>
listingi 61
<HTML>
<head>
<title>monacemTa bazis gaReba, mierTeba da amorCeva </title>
</head>
<body>
<?php
$user = "harry";
$pass = "elbomonkey";
$db = "sample";
$link = mysql_connect( "localhost", $user, $pass );
if ( ! $link )
die( "Coudn't connect to MySQL");
print “Successfully connected to server<P>”;
mysql_select_db( $db) or die (“Could/t open $db: “.mysql_error());
print “Successfully selected database \”$db\”<P>”;
mysql_close( $link);
?>
</body>
</html>
listingi 62
<html>
<head>
<title> cxrilSi Canaweris damateba
</title>
</head>
<body>
<?php
$user = "harry";
$pass = "elbomonkey";
$db = "sample";
$link = mysql_connect( "localhost", $user, $pass );
if ( ! $link )
die( "Coudn't connect to MySQL");
mysql_select_db( $db, $link)
or die ("Couldn't open $db: ".mysql_error() );
$query=”INSERT INTO domains ( domain, sex, mail )
values( ‘123xyz.com’, ‘F’, sharp@adomain.com’ )”;
mysql_query( $query, $link)
or die ("Couldn't add data to \”domains\” table: “.mysql_error() );
mysql_close( $link);
?>
</body>
</html>
mivaqcioT yuradReba: bazaSi striqonis Camatebisas id-
velisaTvis mniSvneloba ar gviCvenebia. gavixsenoT, gasaReburi
velis mniSvneloba sistemis mier avtomaturad ganisazRvreba.
am programas ramdenjerac SevasrulebT, cxrils imdenjerve
daemateba erTi da igive monacemebis Semcveli axali Canaweri
(gansxvaveba mxolod id velis mniSvnelobaSi iqneba).
qvemoT mogvyavs programa, romelic cxrilSi amatebs
momxmareblis mier formaSi Setanil monacemebs:
listingi 63
<HTML>
<HEAD>
<TITLE> bazaSi momxmareblis mier mowodebuli informaciis
damateba
</title>
67
</head>
<BODY>
<?php
if ( isset( $domain ) && isset( $sex ) && isset( $domain ) )
{
// check user input here!
$dberror = "";
$ret = add_to_database( $domain, $sex, $mail, $dberror);
if ( ! $ret )
print "Error: $dberror<BR>";
else
print “Thank you very much”;
}
else {
write_form();
}
if ( ! $link )
{
$dberror = "Couldn't connect to MySQL server";
return false;
}
if (! mysql_seleqt_db( $db, $kink ) )
{
$dberror =mysql_error();
return faise;
}
function write_form()
{
68
global$PHP_SELF;
print"<form action=\'$PHP _SELF\" method=\"POST\">\n";
print"<input type=\"text\" name=\"domain\"> ";
print"The domain you would like<p>\n";
print"<input TYPE=\"text\" name\"mail\"> ";
print"Your mail address<p>\n" ;
print"<select name=\"sex\">\n";
print"\t<option value=\"F\" Female\n";
print"\t<option value=\"M\"> Male\n";
print"\select>\n";
print"<input type=\"submit\" value=\"submit! \">\n</form>\n";
}
?>
</body>
</html>
listingi 64
<HTML>
<head>
<title>striqonebis ricxvis gansazRvra</title>
</head>
<body>
<?php
$user = "harry";
$pass = "elbomonkey";
$db = "sample";
$link = mysql_connect( "localhost", $user, $pass );
if ( ! $link )
die ( "Could't connect to MySQL");
mysql_select_db($db, $link)
or die ("Couldn't open $db: ".mysql_error() );
$result=sql_query("SELECT *FROM domains");
$num_rows=mysql_num_rows( $result);
70
print "There are currently $num_rows rows in the table<P>";
mysql_close ($link);
?>
</body>
</html>
listingi 65
<HTML>
<head>
<title>cxrilis yvela Canaweris gamoyvana</title>
</head>
<body>
<?php
$user = "harry";
$pass = "elbomonkey";
$db = "sample";
$link = mysql_connect( "localhost", $user, $pass );
if ( ! $link )
die ( "Could't connect to MySQL");
mysql_select_db($db, $link)
or die ("Couldn't open $db: ".mysql_error() );
$result=sql_query("SELECT *FROM domains");
$num_rows=mysql_num_rows( $result);
print "There are currently $num_rows rows in the table<P>";
print "<table border=1>\n";
while ( $a_row =mysql_fetch ($result))
{
print "<tr>\n";
foreach ($a_row as $field)
print "\t<td>$field</td>\n";
print"</tr>\n";
}
print "</table>\n";
mysql_close ($link);
?>
</body>
</html>
71
WHILE-ciklSi mysql_fetch() funqciis mier dabrunebul mniSvne-
lobas vaniWebT $a_row cvlads.
WHILE-ciklSi gvaqvs kidev erTi cikli foreach. misi meSveobiT
xdeba masivis CaTvaliereba da misi TiToeuli elementis gamoyvana
cxrilis ujredSi.
SevniSnoT, rom Canaweris velebs saxeliTac SeiZleba
mivmarToT. amasTan, SeiZleba gamoviyenoT Semdegi ori gzidan erT-
erTi:
• pirveli gulisxmobs WHILE-is saTaurSi mysql_fetch()
funqciis nacvlad mysql_fetch_array-is gamoyenebas (igi
asocirebul masivs gvibrunebs;
• meore _ striqonis aRqmas obieqtad da misi Tvisebebis
mysql_fetch_object() funqciiT wakiTxvas:
monacemebis Secvla
mysql-query() funqcias viyenebT cxrilSi monacemebis Sesacvle-
ladac.
moTxovnaSi figurirebs UPDATE instruqcia, romelsac
SeiZleba, vTqvaT, aseTi saxe hqondes:
UPDATE cxrilis-saxeli SET velis-saxeli =axali-mniSvneloba
Where pirobis Sesruleba;
UPDATE-instruqciis warmatebiT Sesruleba jer kidev ar
niSnavs monacemebis faqtobrivad Secvlas, risi Semowmebac SeiZleba
moxdes mysql_affected_rows() funqciiT (es funqciac mxolod
mierTebis identifikators saWiroebs argumentad da aqac, Tu am
72
identifikators ar mivuTiTebT, gamoyenebuli iqneba ukanaskneli
mierTebis identifikatori).
SevniSnoT, rom am funqciis gamoyeneba SeiZleba monacemebSi
nebismieri cvlilebebis Setanisas.
qvemoT naCvenebia programa, romelic monacemTa bazis
administrators saSualebas aZlevs, cvlilebebi Seitanos domains
cxrilis domain velSi:
listingi
<HTML>
<head>
<title>mysql-funqciis gamoyeneba cxrilSi monacemebis
Sesacvlelad
</title>
</head>
<body>
<?php
$user = "harry";
$pass = "elbomonkey";
$db = "sample";
$link = mysql_connect( "localhost", $user, $pass );
if ( ! $link )
die ( "Could't connect to MySQL");
mysql_select_db($db, $link)
or die ("Couldn't open $db: ".mysql_error() );
if ( isset ($domain) && isset ($id))
{
$query="UPDATE domains SET domain = '$domain' where id=$id";
$result = mysql_query ($query);
if (! $result)
die ("Couldn't update: ".mysql_error());
print "<h1>Table updated ". mysql_affected_rows().
"row(s) hanged</h1><p>";
?>
listingi 67
<HTML>
<head>
74
<title>brouzeris fanjaraSi cvladebis mniSvnelobebis
gamoyvana
</title>
</head>
<body>
<?php
$envs = array ( "HTTP_REFERER", "HTTP_USER_AGENT",
"REMOTE_ADDR", "REMOTE_HOST",
"QUERY_STRING", "PATH_INFO");
foreach ($envs as $env)
{
if ( isset ($$env))
print "$env: ${$env}<br>";
}
?>
</body>
</html>
saxeli aRwera
listingi 68
GET / HTTP / 1.0
Referer: http:/ zink.demon.co.uk :8080/ matt/ php-book/ network/ test2.php
Connection: Keep-Alive
User-Agent: Mozilla 4.6 (XLL; T; Linux 2.2.6-15ampac ppc)
Host : www.corrosive.co.uk
Accept: image/ gif,image/ x-xbitmap, image/ jpg,image/ pjpeg, image/png,
*/*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1, *, utf-8
77
pasuxi
moTxovnis miRebis Semdeg serveri klients ugzavnis pasuxs,
romelic, Cveulebriv, aseve sami nawilisgan Sedgeba:
• statusis striqoni;
• saTaurebis ubani;
• moTxovnis sxeuli.
zogierTi saTauri SeiZleba iseTive iyos, rogorc wina
SemTxvevaSi (pirvel yovlisa, es exeba informacias mesame punqtis
Sesaxeb).
statusis striqoni Sedgeba serveris mier gamoyenebuli HTTP
oqmis versiis, pasuxis kodisa da am kodis aRmweri informa-
ciisgan.
moviyvanoT zogierTi kodi Tavisi aRwerilobiT:
saxeli aRwera
literatura:
Sesavali ------------------------------------------------------------------------ 3
PHP–is dayeneba ------------------------------------------------------------ 4
Apache serveris konfigurireba ---------------------------------- 5
Cveni pirveli programa PHP-ze ---------------------------------- 5
cvladebi ----------------------------------------------------------------------- 7
nakadis marTva --------------------------------------------------------------- 13
ciklebi -------------------------------------------------------------------------- 15
funqciebi ----------------------------------------------------------------------- 19
masivebi ------------------------------------------------------------------------- 25
obieqtebi ---------------------------------------------------------------------- 32
kvlav klasebis Sesaxeb------------------------------------------------ 39
formebTan muSaoba ------------------------------------------------------ 47
failebTan muSaoba ----------------------------------------------------- 58
DBM-funqciebTan muSaoba ------------------------------------------ 60
monacemTa bazebTan kavSiri MySQL-is magaliTze ---- 64
garemos Sesaxeb informaciis Semcveli cvladebi ---- 73
klientis serverTan HTTP oqmiT SeerTebis
zogierTi sakiTxi ------------------------------------------------------ 75
literatura ---------------------------------------------------------------- 78