Professional Documents
Culture Documents
2012 Objektinis Programavimas PDF
2012 Objektinis Programavimas PDF
OBJEKTINIS
P R O G R A M AV I M A S
Mokymo(si) rinkinys
VILMA RIKEVIIEN
OBJEKTINIS
P R O G R A M AV I M A S
Mokymo(si) rinkinys
Marijampol, 2012
3
UDK 004.438(075.8)
Ri-121
Vilma Rikeviien
Redagavo
Nijol Bagdonien
Recenzavo
ISBN 978-609-422-068-5
TURINYS
PRATARM...................................................................................................................................................7
VADAS ....................................................................................................................................................... 8
1. OBJEKTINIO PROGRAMAVIMO PRINCIPAI.....................................................................................9
1.1.
Klass..........................................................................................................................................9
1.2.
1.3.
Paveldjimas.............................................................................................................................12
PHP privalumai.........................................................................................................................14
2.2.
2.3.
PHP operatoriai.........................................................................................................................20
2.6.
Slygos sakiniai........................................................................................................................21
2.7.
2.8.
PHPfunkcijos...........................................................................................................................23
2.8.1.
2.8.2.
2.8.3.
2.9.
2.9.1.
$_GET masyvas................................................................................................................32
2.9.2.
PHP$_POST masyvas.....................................................................................................33
2.9.3.
PHP$_REQUEST masyvas.............................................................................................34
2.10.
2.11.
2.12.
2.12.1.
2.12.2. Antrats.........................................................................................................................40
2.12.3.
2.12.4.
2.12.5.
2.15.
PHP sesijos.............................................................................................................................46
3.2.
Operatoriai................................................................................................................................49
3.3.
3.4.
Ciklo operatoriai.......................................................................................................................52
3.5.
JavaScript objektai....................................................................................................................53
5
3.5.1.
Objektas Array..................................................................................................................53
3.5.2.
3.5.3.
Objektas Date...................................................................................................................55
3.5.4.
Objektas Function.............................................................................................................57
3.5.5.
Objektas Math..................................................................................................................57
3.5.6.
Objektas String.................................................................................................................58
3.5.7.
Objektas Navigator...........................................................................................................58
3.5.8.
Objektas Window.............................................................................................................59
3.5.9.
Objektas Location.............................................................................................................64
3.5.10.
Objektas Event...............................................................................................................65
3.5.11.
Objektas Screen..............................................................................................................65
3.5.12.
Objektas Document........................................................................................................66
3.6
vykis OnAbort.................................................................................................................69
3.6.2.
vykis OnBlur...................................................................................................................69
3.6.3.
vykis OnChange..............................................................................................................69
3.6.4.
vykis OnCIick.................................................................................................................70
3.6.5.
vykis OnError..................................................................................................................72
3.6.6.
vykis OnFocus.................................................................................................................72
3.6.7.
vykis OnLoad..................................................................................................................73
3.6.8.
3.7.
Iskleidiamieji sraai.............................................................................................................73
3.8.
4. PRAKTINS UDUOTYS....................................................................................................................80
4.1.
4.2.
4.3.
4.4.
4.5.
4.6.
4.7.
4.8.
4.9.
4.10.
4.11.
4.12.
4.13.
4.14.
4.15.
4.16.
LITERATROS ALTINIAI....................................................................................................................124
PRATARM
Mokymo(si) rinkinys skirtas ne tik Marijampols kolegijos Verslo ir technologij
fakulteto bei kit auktj mokykl studentams, bet ir visiems, norintiems imokti objektinio
programavimo pagrind.
ioje knygoje apraomi objektinio programavimo ypatumai, supaindinama su dinamini
tinklalapi krimo pagrindais: PHP ir JavaScript technologijomis. Pateikiami nuosekls
praktini darb apraymai. iuo metu PHP programiniai intarpai naudojami milijonuose
interneto svetaini. Tai paangi ir plaiai paplitusi objektinio programavimo kalba, kuri
vartojama aprayti vairiems sudtingiems interneto technologij procesams. JavaScript kalba
skirta interaktyviems tinklalapiams kurti ir turi priemoni naryklei valdyti.
VADAS
Mokomoji knyga skirta studentams, besimokantiems objektinio programavimo dalyko,
taip pat tiems, kurie nori plaiau susipainti su objektinio programavimo principais, interneto
technologijomis.
Knyg sudaro keturi skyriai, kuri kiekvienas suskirstytas poskyrius. Pirmuose trijuose
skyriuose pateikta teorin mediaga, gausiai iliustruota pavyzdiais, ketvirtajame praktins
uduotys bei savarankiko darbo uduotys.
Pirmajame skyriuje nagrinjami objektinio programavimo principai. Pateikiami
pagrindiniai objektinio programavimo terminai.
Antrasis mokomosios knygos skyrius skirtas supaindinti su interneto serveriuose
vykdom proces apraymo kalba PHP. Aptariamos kodo terpimo HTML dokument
galimybs, nagrinjama PHP sintaks, kintamj apraymo taisykls, valdymo struktros,
duomen masyvo tvarkymo priemons.
Treiajame skyriuje supaindinama su JavaScript priemonmis, nagrinjami kodo
terpimo HTML dokument principai ir taisykls, aikinama sintaks, slygos ir ciklo sakiniai,
valdymo struktros, pateikiami dialogini lang krimo pavyzdiai.
Ketvirtasis mokomosios knygos skyrius skirtas praktinms uduotims. Kiekvienos
praktins uduoties pabaigoje yra pateikiama savarankiko darbo uduoi.
Metodinio leidinio mediaga parengta naudojantis Antano Vidino, Daivos Vitkuts
Interneto paslaugos ir svetaini krimas, Liudviko Kaklausko Tinklalapiai ir j krimas,
P. irvinsko PHP pamokos pradedantiesiems, J. N. Robbins Tinklalapi dizainas. (X)HTML
kalbos, pakopini stili ir tinklalapi grafikos pradiamokslis ir internetiniais altiniais, kurie
nurodyti literatros srae.
objekto duomenys objekto iorje tiesiogiai nra prieinami: jei reikia koki nors
duomen i objekto, reikia kviesti funkcij objekto metod;
jei reikia keisti objekto duomenis, taip pat reikia kviesti funkcij objekto
metod.
PHP kalba jau pakankamai itobulinta ir joje yra viskas, ko reikia OOP programavimui
atlikti. Pagrindiniai objektinio programavimo terminai:
Objektas duomen ir susijusio funkcionalumo talpinimas vientisus vienetus. Objektai
padeda pasiekti modulikum ir nusako objektins programos struktr.
Abstrakcija galimyb programuoti neinant konkrei detali apie informacij.
Inkapsuliacija (informacijos slpimas) utikrina, kad objekto naudotojas negali pakeisti
objekto bsenos nenumatytu bdu. Tik objekto vidiniai metodai turi galimyb keisti objekto
bsen. Objektas pateikia interfeis (ssaj), nusakani galimybes manipuliuoti objektu.
Polimorfizmas objektikai orientuotos kalbos nekvieia paprogrami, bet siunia
praneimus, todl konkretus praneim reaguojantis metodas priklauso nuo objekto, ne nuo
siuntjo. Tai leidia dirbti su bendresnio tipo objektais (pvz., pauktis), neinant konkretaus tipo
(pvz., strutis ar pingvinas), dl to nereikia kiekvienam konkreiam tipui rayti atskiro kodo.
Paveldjimas objekt organizavimas, specializuojant egzistuojanius bendresnius tipus,
papildant ar i dalies pakeiiant funkcionalum.
1.1.
Klass
}
function Uzklausa($query) {
$this>Prisijungimas();
$this>rezultatas = mysql_query($query);
// ... tolimesnis uklausos rezultat apdorojimas
}
}
1.2.
Bendru atveju, jeigu reikia panaudoti funkcij, ji yra ikvieiama paraomas jos
pavadinimas ir parametrai. Naudojantis klasmis, yra kiek kitaip: prie tai reikia sukurti klass
objekt, o tada jau galima atlikti veiksmus su tuo objektu:
$db = new DuomenuBaze();
Kintamajam priskiriamas pasirinktos klass apibrimas. Tas kintamasis vadinamas
klass objektu. Vliau btent su tuo objektu bus atlikti veiksmai. Galima sukurti kelis tos paios
klass objektus ir su jais dirbti atskirai.
Pvz.
$db1 = new DuomenuBaze();
$db1>duomenu_baze = "pirmas_projektas";
$db1>Prisijungimas();
// kitas tos paios klass objektas
$db2 = new DuomenuBaze();
$db2>duomenu_baze = "antras_projektas";
$db2>Prisijungimas();
Sukrus objekt, galima ne tik ikviesti jo metodus, bet ir priskirti reikm jo atributams
kintamiesiems, nuo kuri priklauso metod ikvietimo parametrai.
1.3.
Paveldjimas
Dar viena svarbi objektinio programavimo galimyb kurti klases, kurios paveldi viena
kit.
Sakykime, yra klas Transportas, kuri panaudojant bus dirbama su duomenimis apie
transporto priemones. Projektui isipltus, reikia atskiro funkcionalumo krovininiams
automobiliams, ir atskir funkcij motociklams. Bet dalis i t funkcij vis tiek turi bti bendros.
Sprendimas atrodo taip:
// bendra klas, skirta
// bendra klas, skirta duomenims apie transport
class Transportas {
function RegistruotiTransporta() {
// ... funkcija transporto priemones registravimui
12
}
// ... dar keletas funkcij, skirt bendrai transporto priemonms
}
// klas krovininiams automobiliams
class Krovininiai EXTENDS Transportas {
var $krovinio_mase;
function KrovinioMase() {
// ... funkcija, skirta tik krovininiam transportui
}
}
// klas motociklams
class Motociklai EXTENDS Transportas {
var $motociklu_klase;
function MotocikloKlase() {
// ... funkcija, skirta tik motociklams
// klasi objekt sukrimas
function $krovininis = new Krovininiai();
$krovininis>KrovinioMase();
$krovininis>RegistruotiTransporta();
function $motociklas = new Motociklai();
$motociklas>MotocikloKlase();
$motociklas>RegistruotiTransporta();
Specialiu odeliu extends nurodoma, kad kuriama klas paveldima i kitos klass ir taip
pat paveldi visas jos savybes bei objektus. Dviej sukurt paveldt klasi objektai naudoja savo
individualias funkcijas, taip pat ir bendras tvo klass funkcijas.
13
2.
PHP kalba pradta vartoti 1994 met ruden, kai Rasmus Lerdorfas nusprend susikurti
priemoni sisteml, kuri palengvint asmeninio puslapio krimo darb. Savo sistemos versij
1.0 ir idjas jis pristat 1995-ais metais konferencijoje praneime Personal Home Page Tools.
Toliau viskas spariai vystsi: 1995 met vidurys: atsiranda antroji Lerdorf'o sistemos versija
(PHP/FI version 2). FI pagrindin naujov Form (blank) Interpretatorius. PHP/FI
integravosi Apache Web server, naudojo standartin Apache API. PHP dirbo greiiau, nei
CGI/Perl skriptai, jos galimybs artjo prie Perl kalbos teikiamo serviso, plito kalbos galimybs
bendrauti su duomen bazmis.
1997 met pabaigoje Zeev Suraski ir Andi Gutmans perrao PHP realizacij, itaiso
pasitaikiusias senos versijos klaidas ir pagreitina PHP skript vykdym.
1998 viduryje atsiranda nauja versija, pavadinta PHP3, kuria 1999 metais jau naudojosi
apie 106 registruot www tinkle serveri.
1999 met pabaigoje perraoma PHP3 realizacija, kurios varikliukas pavadinamas
ZendEngine, ir ileidiama nauja versija PHP4. Prie PHP atskir moduli krimo prisijungia
mas entuziast, sukuriamas grafikos modulis gd (autoriai: Rasmus Lerdorf, Stig Bakken, Jim
Winstead, Jouni Ahto), ryio tarp kompiuteri palaikymo ir tvarkymo modulis sockets (Chris
Vandomelen, Sterling Hughes, Daniel Beulshausen) ir daug kit.
2004
metais
atsirado
PHP5
versija.
Naujoje
versijoje
praplstos
objektinio
programavimo galimybs.
2.1.
PHP privalumai
14
server;
2.
procesoriui);
3.
4.
5.
6.
2.2.
PHP (PHP hypertext preprocessor) tai kod krimo kalba, kuri pradioje buvo
orientuota tik internet, o ilgainiui tapo programavimo kalba. PHP kodai yra interpretuojami ir
vykdomi serverio pusje.
2.3.
isiskirt
program
teksto,
joms
jei vienas argumentas yra realusis skaiius, o antrasis sveikasis skaiius, sveikasis
skaiius pertvarkomas realj tip;
jei vienas argumentas yra realusis skaiius, o antrasis simboli eilut, simboli eilut
pertvarkoma taip, kad jos reikm atitikt kito argumento reikms tip.
ios taisykls leidia taikyti aritmetinius veiksmus simboli eilutmis apraomoms
reikmms. skaii galima pertvarkyti bet kuri eilut, kurios pradioje rayta skaiiaus
reikm. Jei toliau eilutje yra raids arba kiti simboliai, jie atmetami. Jeigu pradinis eiluts
17
simbolis nra skaitmuo, ji keiiama skaiiumi 0. Aritmetini veiksm, kuri vienas argumentas
yra simboli eilut, skaiiavimo pavyzdiai:
"9 Lt" 1;
"0.55 kg" * 2;
"9 m." 0.5;
// Sveikasis skaiius 8
// Realusis skaiius 1.1
// Realusis skaiius 8.5
"1E3 tak" + 1;
// Realusis skaiius 1001
Kai pageidaujama tiesiogiai apibrti kintamajam suteikiamos reikms tip, naudojamas
tipo keitimo operatorius. Jo apraymo sintaks tokia:
(Parinktas reikms tipas) Reikm
Parenkamas reikms tipas nurodomas pagrindiniais kalbos odiais: integer (sveikasis),
double (realusis) ir string (simboli eilut). Kintamj reikmi tipo nurodymo pavyzdiai:
$kiekis = 0;
$suma = 0.00;
PHP programose taip pat tenka aprayti vairius tekst tvarkymo veiksmus. iam tikslui
naudojamas taku ymimas dvivietis eilui sujungimo operatorius ir itisas tekst tvarkymo
funkcij rinkinys. Sujungimo operatoriaus rezultatas yra simboli eilut, kurioje prie kairiojo
argumento eiluts prijungiama deiniojo argumento eilut. Jeigu kuris nors operatoriaus
argumentas yra skaiius, jis automatikai pertvarkomas ekvivalentin simboli eilut ir tada
taikomas sujungimo veiksmas. Eilui sujungimo operatoriaus taikymo pavyzdiai:
$a = "Firma";
$b = " 'Aukso veris' ";
$pavadinimas = $a.$b;
$n = 5;
$s = 'Gauta: ' . $n . ' kg ' ;
t = 3 . 2.74
// Rezultatas: "32.74"
2.4.
Vienas svarbiausi PHP program privalum tas, kad jomis galima aprayti serveryje
rengiam duomen terpim HTML dokumentus ir j perdavim narykli programoms.
Tokiems veiksmams aprayti naudojamas operatorius echo ir funkcijos print, printf bei print_r.
Kreipiniai funkcijas raomi taip:
Funkcijos vardas (Argumentas arba j sraas) ;
narykl perduodamus duomenis paprasiausia aprayti operatoriumi echo:
Echo Simboli eilui sraas;
18
Simboli eiluts yra tarp paprast arba dvigub kabui rayti bet kurie narykls
palaikomo alfabeto simboli rinkiniai, pavyzdiui:
echo "Labas, Jonai!"; // Vienos eiluts perdavimas naryklei
echo 'Labas, ', 'Jonai!';
Paprastose ir dvigubose kabutse raom simboli eilui savybs labai panaios, taiau
ne identikos. Pavyzdiui, dvigubomis kabutmis iskirtose eilutse galima terpti kintamj
reikmes, o kito tipo eilutse to daryti negalima. Jeigu simboli eilutje btina terpti jos ribas
ymint simbol (") , tai galima padaryti raant j su priedliu \, pavyzdiui:
echo "Firma "Microsoft" "; // Sintakss klaida
echo "Firma \"Microsoft\" ";
Funkcija print skiriasi nuo operatoriaus echo tuo, kad jai gali bti perduodama tiktai
viena eilut. Be to, funkcijos grinama login reikm pranea, ar argumento eilut narykls
lange rayta skmingai. Todl tikrinant funkcijos print grinam reikm, galima nustatyti, ar
pavyko perduoti duomenis narykls kompiuter.
Naudojant funkcij printf galima nurodyti naryklei perduodam duomen raymo bdus
formatus. ios funkcijos apraymo sintaks tokia:
printf (ablonas, ablone terpiamos reikms);
ablonas yra teksto eilut su specialiomis funkcijai perduodam reikmi terpimo bd
apraaniomis ymmis, kurios aprao reikmms skiriam lauk dydius bei kitas savybes:
%[Upildo simbolis] [enklas]Lauko dydis Lauko tipo simbolis
iame terpimo yms struktros aprayme lautiniai skliaustai ymi neprivalomus jos
elementus. Kaip matyti i sintakss apraymo, kiekvienos terpimo yms pradioje raomas
privalomas simbolis %. Toliau gali bti nurodomas upildo simbolis, raomas terpiam
duomen neuimtoje lauko dalyje, ir enklas: + arba . Abu ie elementai neprivalomi. Kai
terpimo ymje nenurodomas upildo simbolis, upildui naudojamas tarpo simbolis. enklo
simbolio prasm priklauso nuo terpiamame lauke raomos reikms tipo. Jei i reikm yra
skaiius, simbolis + nurodo, kad enklas reikalingas net ir tada, kai reikm teigiama. Simboli
eilutms enklas + nurodo, kad reikms tekstas turi bti raomas kairiajame lauko krate. Tai
taip pat yra ir tipinis simboli eilui lygiavimo bdas, parenkamas tada, kai enklo simbolio
ymje nebna. enklo simbolis nurodo, kad eiluts reikm raoma deiniajame lauko krate.
Teksto ir sveikj skaii reikmms skiriamo lauko dydis nurodomas vienu skaiiumi,
kuris nusako minimal reikmms skiriamo lauko dyd. Jeigu laukas per maas, jis automatikai
padidinamas taip, kad terpiama reikm tilpt, o jeigu per didelis, likusioje dalyje raomi
upildo simboliai. Realiesiems skaiiams skiriamo lauko dyd aprao du taku atskirti skaiiai:
pirmasis nurodo viso lauko dyd, o antrasis trupmeninei daliai skiriam simboli skaii.
19
$d);
c
d arba i
e arba f
s
2.5.
PHP operatoriai
Apraymas
Sudtis
Atimtis
Daugyba
Dalyba
Modulis (dalybos
liekanos)
++
Padidinimas vienetu
--
Pamainimas vienetu
Pavyzdys
x=2
x+2
x=2
5-x
x=4
x*5
15/5
5/2
5%2
10%8
10%2
x=5
x++
x=5
x--
Rezultatas
4
3
20
3
2.5
1
2
0
x=6
x=4
20
Apraymas
Yra lygu
Nra lygu
Pavyzdys
5= =8 grina false (netiesa)
5!=8 grina true (tiesa)
===
!= =
<>
>
<
>=
<=
Nra lygu
Yra daugiau u
Yra maiau u
Yra daugiau arba lygu u
Yra maiau arba lygu u
Apraymas
&&
And
Ir
||
Or
Arba
Ne
2.6.
Pavyzdys
x=6
y=3
(x < 10 && y > 1) grina true (tiesa)
x=6
y=3
(x= =5 || y= =5) grina false (netiesa)
x=6
y=3
!(x= =y) grina true (tiesa)
Slygos sakiniai
If sakinys skirtas vykdyti kod tik tada, kai slyga grina reikm true;
If... else sakinys skirtas naudoti, jei atitinka slyg, tada vykdyti vien kod, kitu
atveju kit;
If... elseif... else sakinys skirtas naudoti, kai turimos kelios slygas, jei atitinka
pirm vykdomas pirmas kodas, jei antr antras, kitu atveju else dalies kodas;
Switch sakinys panaus if... elseif... elseif... else... ir skirtas pasirinkti vien i keli
kodo blok.
Pvz. Bus spausdinama iandien penktadienis!, jei kodas bus vykdomas penktadien:
<html>
<body>
<?php
$d=date("D");
if ($d= ="Fri") {
print "iandien penktadienis!";
21
}
?>
</body>
</html>
Pvz. Jei kodas bus vykdomas penktadien, parays iandien penktadienis!, jei
sekmadien iandien sekmadienis!, jei kit dien, parays Sveiki!:
<html>
<body>
<?php
$d=date("D");
if ($d= ="Fri") {
print "iandien penktadienis!";
} elseif ($d= ="Sun") {
print "iandien sekmadienis!";
} else {
print "Sveiki!";
}
?>
</body>
</html>
2.7.
Ciklas skirtas patikrinti daug slyg ir parinkti vien i keli kodo blok. Labai
panai struktra if... elseif... elseif... else... slygos sakin.
Swith sakinio sintaks:
switch (n) {
case 1:
kodas, kur vykdome, jei kintamasis n yra lygus 1;
break;
case 2:
kodas, kur vykdome, jei kintamasis n yra lygus 2;
break;
default:
kodas, kur vykdome, jei kintamasis n nra lygus nei 1, nei 2;
}
Vietoje n raomas kintamasis, jo reikm tikrinama su visomis reikmmis, kurios
apraytos su case. Po odelio case yra raoma galima kintamojo reikm, tada dvitakis ir po
dvitakio kodas, kuris bus vykdomas. Kai norima, kad ciklas nebebt toliau vykdomas,
paraoma break;
22
while ciklas, kuris kartoja kod tol, kol jame parayta slyga yra true;
do.. while ciklas, kuris vien kart vykdo kod, tada patikrina slyg, jei ji yra true
Padidinimas
ioje
vietoje
daniausiai
yra
padidinama
pradins reikms reikm. Tai taip pat gali bti bet koks PHP kodas, kuris bus vykdomas
kiekvieno ciklo pabaigoje.
P a s t a b a. Kiekvienas parametras gali bti tuias, taiau visada turi bti du
kabliatakiai, kurie atskiria pradin reikm nuo slygos ir padidinimo. Tuias ciklas for( ; ; )
yra begalinis.
foreach ciklo sintaks:
foreach ( $masyvas as $reiksme ) {
kodas, kuris bus vykdomas
}
Ciklo metu kiekvien element galima pasiekti per kintamj $reiksme.
2.8.
PHP funkcijos
masyvo funkcijos;
23
kalendoriaus funkcijos;
datos funkcijos;
klaid funkcijos;
filtr funkcijos;
FTP funkcijos;
HTTP funkcijos;
MAIL funkcijos;
matematins funkcijos;
MySQL funkcijos;
Vartotojas gali kurti savo funkcijas. Funkcija turi turti pavadinim, kuris negali sutapti
su jau rezervuotais PHP funkcij pavadinimais ir pai sukurt kit funkcij pavadinimais.
Funkcijos pavadinimas negali prasidti skaiiumi. Funkcij vard uraymas galimas
didiosiomis ir maosiomis raidmis, taip pat pabraukimu (__funkcijosVardas()). Funkcija gali
(bet neprivalo) turti parametrus, kurie raomi skliausteliuose po pavadinimo ir iskiriami
kableliu. Jeigu parametr nra perduodama, raomi tiesiog tuti skliausteliai ( ). Funkcijos kodas
raomas lautiniuose skliaustuose { ir }.
Funkcijos sintaks:
function funkcijosVardas()
{
kodas, kuris bus vykdomas;
}
Pvz.
<?php
function manoAdresas(){
echo "Miestas, Gatvs 45 g.";
}
echo "Labas, mano adresas yra : "
manoAdresas();
?>
Pvz. Funkcija su parametrais:
<?php
function manoAdresas($butoNr){
echo "Miestas, Gatvs 45 g. Buto numeris : " . $butoNr;
}
echo "Labas, mano adresas yra : ";
24
manoAdresas("24");
?>
Pvz. Funkcija su parametrais:
<?php
function manoAdresas($butoNr, $symbolis){
echo "Miestas, Gatvs 45 g. Buto numeris : " . $butoNr . $symbolis . "<br />";
}
echo "Labas, mano adresas yra : ";
manoAdresas("24", ".");
echo "Labas, mano adresas yra : ";
manoAdresas("24", "?");
echo "Labas, mano adresas yra : ";
manoAdresas("24", "!");
echo "Labas, mano adresas yra : ";
manoAdresas("24", "!!!");
?>
Pvz. Funkcija kintamasis sugrinimas:
<?php
function skaiciuok($a, $b){
$suma = $a+$b; // pirmame kintamojo $suma apskaiiuoja
$suma = $a . "+" . $b . "=" . $suma; // antrame suformatuojame eilut
// ir parodome koks buvo veiksmas
return $suma;
}
echo skaiciuok("5", "6");
?>
2.8.1. Eilui tvarkymo funkcijos
Analizuojant i form gaunamus duomenis ir apraant naryklms grinam tinklalapi
tekst, tenka atlikti vairius teksto tvarkymo veiksmus. Tokiems veiksmams aprayti skirtas
simboli eilui tvarkymo funkcij rinkinys, apraytas 2.8.1.1 lentelje. Daniausiai ios
funkcijos naudojamos pertvarkant eilutse esanius simbolius ir analizuojant j struktr.
2.8.1.1 lentel. Eilui tvarkymo funkcijos
Kreipinys
strcasecmp(arg1, arg2)
strcmp(arg1, arg2)
string strtok(arg1, arg2)
strlen(arg)
25
strpos(arg1, arg2)
strrpos(arg1, arg2)
str_replace(arg1, arg2,
arg3)
strrstr(arg1, arg2)
substr(arg1, p, n )
substr_replace(arg1, arg2,
p, n)
trim(arg)
strtoupper(arg)
strtolower(arg)
Stri_tags($input)
27
28
2.8.3.
PHP kalboje yra nemaai funkcij, skirt masyvams kurti, ir jos danai smarkiai
palengvina kodo raym. Masyvams skirtos funkcijos apraytos 2.8.3.1 lentelje.
2.8.3.1 lentel. Masyv funkcijos
Funkcija
Apraymas
array()
array_change_key_case()
array_chunk()
array_combine()
array_count_values()
array_diff()
array_diff_assoc()
array_diff_key()
array_diff_uassoc()
array_diff_ukey()
array_fill()
array_filter()
array_flip()
array_intersect()
array_intersect_assoc()
array_intersect_key()
array_intersect_uassoc()
array_intersect_ukey()
array_key_exists()
29
array_keys()
array_map()
array_merge()
array_merge_recursive()
array_multisort()
array_pad()
array_pop()
array_product()
array_push()
array_rand()
array_reduce()
Grina masyv kaip string tipo kintamj, pagal vartotojo pateikt funkcij
array_reverse()
array_search()
array_shift()
array_slice()
array_splice()
array_sum()
array_udiff()
array_udiff_assoc()
array_udiff_uassoc()
array_uintersect()
array_uintersect_assoc()
array_uintersect_uassoc()
30
array_unique()
array_unshift()
array_values()
array_walk()
array_walk_recursive()
arsort()
asort()
compact()
count()
Suskaiiuoja, kiek element turi masyvas, grina skaii. Taip pat galima
naudoti su objektais, grina objekto parametr skaii
current()
each()
end()
extract()
in_array()
key()
krsort()
ksort()
list()
natcasesort()
natsort()
next()
pos()
prev()
31
range()
reset()
rsort()
shuffle()
sizeof()
sort()
Irikiuoja masyv, indeks tvarka ilieka tokia kaip buvo (atsiria nuo
perrikiuot reikmi)
uasort()
uksort()
usort()
2.9.
$_GET masyvas
tip galima naudoti tada, kai reikia, kad duomenys bt matomi narykls adreso
eilutje. Tai tikslinga paiekos formose, kai yra naudinga paiekos kriterijus matyti narykls
adreso eilutje, tada vartotojui paprasta pasidalinti paiekos rezultatais su kitais. Naudojant get
metod, reikia nepamirti, kad adreso ilgis neturi viryti 2083 simboli.
Pvz. HTML forma su atributu method ir reikme get:
<form action="html_formos_ivedimas_pvz.php" method="get">
Vardas:
32
<input type="text">
<input type="submit" value="Sisti">
</form>
PHP failas, kuriam bus pateikta informacija:
Js vestas vardas:<br />
<?php
print($_GET['vardas']);
?>
Pateikus form, naryklje bus matomas (jei vedimo lauk vesta: Lukas):
Js vestas vardas:
Lukas
Puslapio adresas, rodomas narykls adreso lauke, bus panaus tok:
http://kazkas.lt/html_formos_ivedimas_pvz.php?vardas=lukas
2.9.2.
iame masyve yra saugomos reikms, kurias pateikia vartotojas pasirinks form, kurios
atributas method turi reikm post. Informacija, kuri siuniama post metodu, yra visiems
matoma, taiau jai pasiekti reikia speciali papildom program. Siuniamos informacijos per
post masyv narykls adreso lauke visikai nebna matyti. is masyvas puikiai tinka slaptiems
duomenims persisti prisijungimo vardui, slaptaodiui ir kt.
P a s t a b a: PHP serveryje yra failas php.ini. Jame daniausiai bna PHP serverio
nustatymai. Pagal nutyljim nustatymas post_max_size turi reikm 8 Mb. Tai reikia, kad per
post metod vienu kartu galima persisti daugiausia 8 Mb duomen.
Pvz. HTML forma su atributu method ir reikme post:
<form action="html_formos_ivedimas_pvz.php" method="post">
Vardas:
<input name="vardas">
<input type="submit" value="Sisti">
</form>
PHP failas kuriam bus pateikta informacija:
Js vestas vardas:<br />
<?php
print($_POST['vardas']);
?>
Pateikus form, naryklje bus matomas (jei vedimo lauk vesta: Lukas):
Js vestas vardas:
Lukas
Puslapio adresas, rodomas narykls adreso lauke bus panaus tok:
33
http://kazkas.lt/html_formos_ivedimas_pvz.php
2.9.3.
$_REQUEST masyvas tai asociatyvus masyvas, kurio viduje yra $_GET, $_POST ir
$_COOKIE masyv reikms. Tai superglobal tipo masyvas, pasiekiamas bet kurioje kodo
dalyje.
masyv patogu naudoti tada, kai tiksliai negalima pasakyti, kokiu metodu bus gaunami
duomenys: ar i $_GET, $_POST, ar $_COOKIE.
P a s t a b a. Kadangi is masyvas gauna reikmes i $_GET, $_POST ir $_COOKIE, jo
reikmes vartotojai gali pakeisti ir juo pasitikti negalima. Prie naudojant reikmes i io
masyvo, reikia patikrinti, kad atitikt tai, ko tikimasi gauti. Pavyzdiui, jei reikm yra
i HTML formos, kur vartotojas turjo vesti savo vard, reikia patikrinti, ar tai, kas buvo vesta,
sudaryta tik i raidi.
Pvz. Tarkime, kad duomenims apie svetains lankytojus rinkti naudojama tokia forma
(r. 2.9.3.1 pav.):
<html>
<body>
<form action="welcome.php" method="post">
Vardas: <input type="text" name="fname" />
Amius: <input type="text" name="age" />
<input type="submit" />
</form>
</body>
</html>
2.10.
Prie panaudojant PHP intarpuose naryklse raytus ir parinktus form duomenis, juos
reikia patikrinti. Tikrinant ias reikmes, naudojami slyginio veiksm parinkimo sakiniai if.
PHP kalboje didesn tikrinam slyg apraymo priemoni vairov: galima naudoti sryi
operatorius, logines iraikas ir PHP kalboje apibrtas logines funkcijas, kurios apraytos 2.10.1
lentelje. Tikrinant, ar formos vedimo laukelyje buvo rayti duomenys, paprastai jo reikm
lyginama su tuia eilute, pavyzdiui:
if ($_GET['vardas'] == ""){
echo "<b>** Nevedte vardo! **</b><br>";
$rezultatas = false; }
Taiau toks tikrinimas ne visuomet geras, nes duomenimis laikoma ir vien i tarpo
simboli sudaryta eilut. To galima ivengti tikrinam reikm apdorojant funkcija trim, kuri
argumento eiluts pradioje ir pabaigoje panaikina tarpus bei kitus specialius ekrane nerodomus
simbolius:
if (trim($_GET['vardas']) == ""){
echo "<b>** Nevedte vardo! **</bxbr>";
$rezultatas = false;
}
Kai inomas minimalus vedamos reikms simboli skaiius, vedimo kontrolei patogu
naudoti funkcij strlen:
if (strlen(trim($_GET['adresas']))< 6){
echo "Neteisingai vestas elektroninio pato adresas";
exit;
// PHP intarpo vykdymo nutraukimas
}
35
</form>
Duomenis vedus toki form, turi bti kontroliuojama, kad bt paymta bent viena
akut (apibrta kintamojo $miestas reikm):
if (! isset(S_GET['miestas']){
echo "<b>Js turite pasirinkti miest</br><br>";
$rezultatas = false;
}
2.11.
37
Grietas failo vietos nurodymas iplstu vardu taip pat nra geras, nes interneto serveri
fail login struktra laikas nuo laiko keiiama ir tokie pakeitimai su vartotojais nederinami.
Todl PHP kalboje numatytas specialus kintamasis $DOCUMENT_ROOT, kuriam suteikiama
keli failams skirt katalog apraanti reikm. Naudojant kintamj, failo vieta ir vardas
nurodomi taip:
$DOCUMENT_ROOT/../Pakatalogis/Failo vardas
Kai formomis duomenys renkami i daugelio svetains lankytoj, fail raymo
veiksmams naudoti bdu w negalima, nes tada kiekvienas lankytojas itrins anksiau ten
buvusius duomenis. Geriau tuius duomen failus sukurti jau projektuojant svetain, o PHP
intarpuose juos atverti.
Pagrindins
skaitymo
bei
raymo
funkcijos: fopen(),
fgets(),
fputs(),
fclose(),
feof(); fopen atidaro fail (skaitymo, raymo arba papildymo veiksmas atlikti). Sintaks:
Failo kintamasis =fopen(failo_pavadinimas, atidarymo bdas);
Atidarymo bdai gali bti:
'r' atidaro fail tik skaitymui, ymekl pastato failo pradioje;
'r+' atidaro fail skirt skaitymui ir raymui, ymekl pastato failo pradioje;
'w' atidaro fail raymui, ymekl pastato failo pradioje, ivalo failo turin (itrina visus
buvusius duomenis), o jei failas neegzistuoja, sukuria j;
'w+' atidaro fail skaitymui ir raymui, ymekl pastato failo pradioje, fail ivalo, o jei failo
nra, j sukuria;
'a' atidaro fail tik raymui, pastato ymekl failo pabaig, jei failas neegzistuoja, sukuria j;
'a+' atidaro fail ir skaitymui ir raymui, pastato ymekl failo pabaig, jei failas neegzistuoja,
sukuria j.
Pvz.
$fp = fopen("/home/katalogas/file.txt", "r");
$fp = fopen("http://www.mano.lt", "r");
$fp = fopen("ftp://vartotojas: slaptazodis@mano.lt/", "w");
Pvz.
Atidarius fail, atlikus veiksmus, btinai reikia j udaryti, pasinaudojus funkcija fclose().
fclose($fp);
fputs(); rao duomenis fail,
fgets(); nuskaito nurodyto ilgio eilut string tipo kintamj,
$string = fgets($fp,255); // nuskaito vis eilut
Kai vienu metu t pat fail naudoja keli vartotojai, gali kilti konfliktini situacij. Kad
tai isprsti, galima naudoti funkcij flock(). i funkcija laikinai sustabdo antro vartotojo darb ir
38
palaukia, kol pirmasis baigs dirbti su failu, tada antrajam vartotojui leidiama pradti dirbti.
Patariama kuo daniau naudoti i funkcij danai lankomuose puslapiuose.
Pvz.
$failas = @fopen('skait.dat','r');
flock = ($naujas_failas,2);
$count = fgets($file, 255);
$count++;
flock = ($naujas_failas,3);
fclose($file);
Tekstiniai failai puiki duomen bazi alternatyva pradedaniajam. Jam nebtinas nei
39
2.12.
Danai, form upildius vartotojui, atsakym jam reikia isisti elektroniniu laiku, arba
vartotojo upildyt form reikia nusisti kam nors kitam. Elektroniniai laikai PHP
programavimo kalba siuniami naudojantis funkcija mail(), kuri leidia sisti informacij el.
pat tiesiai i kodo.
bool mail(string to, string subject, string message, [string additional_headers], [string
additional_parameters]);
[ ] paymti argumentai nra btini.
Funkcija mail() grina boolean tip (true/false). Jei mail() funkcija grina false,
vadinasi el. laiko isisti nepavyko. Paprasiausias el. patu siuniamo laiko pavyzdys:
<?php
mail(
webmaster@php.lt is el.pato adresas yra apsaugotas nuo Spam'o, jums reikia jungti
Javaskript, kad matytumte tai
, tema, laiko turinys);
?>
Pirmasis mail() argumentas tai el. pato adresas, kuriam siuniamas el. laikas, kitas
argumentas laiko tema, o treiasis turinys. Laiko turinyje, norint nukelti tekst nauj
eilut, reikia terpti \n.
Pvz.
<?
$tekstas = "Mano inut\nKita eilut";
?>
Po laiko turinio gali eiti antrats bei kiti papildomi parametrai, reikalingi el. laikui
isisti.
2.12.2. Antrats
Antratse galima nurodyti laiko siuntj, laiko koduot, reply-to lauk ir t. t. Laiko
antrats yra atskiriamos "\r\n". Paprasiausios antrats, kuri turt bti kiekviename laike,
pavyzdys:
<?
$header = "Content-type: text/plain; charset=\"windows-1257\"\r\n";
$header .= "From: Vardenis Pavardenis <mano@el_pastas.lt>\r\n";
$header .= "Reply-to: mano@el_pastas.lt\r\n";
mail('
40
webmaster@php.lt is el.pato adresas yra apsaugotas nuo Spam'o, jums reikia jungti
JavaScript, kad matytumte tai
','tema','laiko turinys',$header);
?>
Content type nurodoma, kad inut bus isista naudojantis plain tekstu (ne HTML) bei
windows-1257 koduote. Isiuntus laik su tokia antrate, vartotojai gaus el. laik, kuriame
visos raids bus lietuvikos.
El. laikai gali bti siuniami ir HTML formatu, tada antrat atrodyt taip:
$header = "Content-type: text/html; charset=\"windows-1257\"\r\n";
Dabar el. inutje galima naudoti ir HTML ymes (pastaba: ne visos pato duts turi
galimyb rodyti el. laikus HTML formatu).
From antratje nurodoma, nuo ko ir kam siuniamas laikas. Siuntjas/gavjas gali bti
nurodomas tokiais formatais:
<?
/*
* From:
mano@pastas.lt is el.pato adresas yra apsaugotas nuo Spam'o, jums reikia jungti
JavaScript, kad matytumte tai
* From:
mano@pastas.lt is el.pato adresas yra apsaugotas nuo Spam'o, jums reikia jungti
JavaScript, kad matytumte tai
(Vardenis Pavardenis)
* From: Vardenis Pavardenis <
mano@pastas.lt is el.pato adresas yra apsaugotas nuo Spam'o, jums reikia jungti
JavaScript, kad matytumte tai
>
* From: " Vardenis Pavardenis " <
mano@pastas.lt is el.pato adresas yra apsaugotas nuo Spam'o, jums reikia jungti
JavaScript, kad matytumte tai
>
*/
?>
Reply-to reikalingas tam, kad bt nurodyta, kam sisti atsakym isist el. laik.
Pagal nutyljim, jei nra reply-to, atsakymas bus siuniamas asmeniui, kuris atsiunt laik.
Kelios papildomos antrats, kurios gali praversti:
$headers .= "X-Priority: 3\r\n";
$headers .= "Return-Path: <
41
mail@server.com is el.pato adresas yra apsaugotas nuo Spam'o, jums reikia jungti
JavaScript, kad matytumte tai r\n";
X-Priority danai pastebima, kad bna inuts su auktuku one, ten ymimi prioritetai.
Jei bus udtas prioritetas 1, tai reikia, kad inut yra aukiausio prioriteto, ir prie el. inuts
gavjo el. pato programoje atsiras raudonas auktukas. Daniausiai visi siunia el. inutes su 3
(normaliu) prioritetu. Return-path tai el. pato adresas, kur bus nukreipiami laikai, vykus
klaidoms (pvz.: el. laikas nepasiek reikiamo serverio, arba tokio el. pato adreso, adresas jau
nebeegzistuoja sistemoje).
Kaip nusisisti el. inuts kopij sau? Yra trys galimybs:
1. Pats paprasiausias tai nurodyti "to" lauk tai taip:
<?
$to = "Vardenis Pavardenis <
vardenis@pastas.lt is el.pato adresas yra apsaugotas nuo Spam'o, jums reikia jungti
JavaScript, kad matytumte tai
>" . ", ";
$to .= "Mano Vardas <
webmaster@php.lt is el.pato adresas yra apsaugotas nuo Spam'o, jums reikia jungti
JavaScript, kad matytumte tai
>";
mail($to,'Laikas dviems gavjams', 'Tekstas');
?>
2. Savo el.pato adres nurodyti "Cc" antrats lauke:
<?
$header .= "cc:
webmaster@php.lt is el.pato adresas yra apsaugotas nuo Spam'o, jums reikia jungti
JavaScript, kad matytumte tai
\r\n";
?>
iuo atveju visi gavjai matys, kam buvo siuniamas gautas el. laikas.
3. Naudotis antrats "Bcc" lauku:
<?
$header .= "bcc:
webmaster@php.lt is el.pato adresas yra apsaugotas nuo Spam'o, jums reikia jungti
JavaScript, kad matytumte tai
\r\n";
?>
42
iai formai sukuriamas PHP skriptas, kuris patikrina, ar teisingai vestas el. pato
adresas, ir isiunia formos autoriui atsakomj laik, kuriame yra komentaro autoriaus vardas,
komentaras ir el. pato adresas:
<?
$vardas=$_POST['vardas'];
43
$email=$_POST['email'];
if (eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]$", $email)==false)
echo "Klaida, '$pastas' yra neteisingai vestas adresas";
else
{
$komentaras=$_POST['komentaras'];
$to="
formosautorius@tinklapis.lt is el.pato adresas yra apsaugotas nuo Spam'o, jums reikia
jungti JavaScript, kad matytumte tai
"; // formos autoriaus el.pato adresas
$zinute="$vardas upild komentaro form. Jis pasak:\n$komentaras\n\nJo
el.pato adresas: $email";
if(mail($to,"Komentaras",$zinute,"From: $email\n"))
echo "Ai u komentar.";
else
echo "vyko klaida, isiuniant laik.";
}
?>
2.12.5. El. laiko siuntimo testavimas
Jei kuriam form, kurioje bus atsakymas, siuniamas el. laiko forma, ir ji bus
apdorojama PHP skripto, reikia testuoti Windows operacinje sistemoje, mail() funkcija neveiks.
Neveiks todl, kad php.ini faile pagal nutyljim SMTP serveris nurodytas localhost, o
didiausia tikimyb yra ta, kad pas vartotoj localhost SMTP serverio nra (nebent naudoja
Windows Server), todl ekrane bus matomas tik toks uraas: Warning: Failed to Connect in
c:\kelias\failas.php on line XX. Todl PHP negali prisijungti prie SMTP serverio. To galima
ivengti raius php.ini faile:
SMTP=jums_inomas_smtp_serverio_adresas.
fclose($duomenys);
echo $informacija;
?>
Naujas raymas, itrinant visus senus duomenis. Pritaikymas: paprasto puslapio
skaitliuko skaiiaus raymas ir panaiai:
<?
$informacija="Tekstas, raomas i fail";
$failas="duomenys.txt";
$duomenys=fopen($failas, "w");
fwrite($duomenys, "$informacija");
fclose($duomenys);
?>
raymas neitrinant sen duomen, o tsiant sra toliau. Pritaikymas: vairs log'ai ir
panaiai:
<?
$informacija="Tekstas, raomas fail";
$failas="duomenys.txt";
$duomenys=fopen($failas, "a");
fwrite($duomenys, "$informacija\n");
fclose($duomenys);
?>
2.13.2. Tekstin duomen baz
Informacijos eiluts perskaitymas i tekstinio failo. Pritaikymas: objekto apraymas, jei
objektas turi daugiau nei vien savyb. Pavyzdys:
Mindaugas|20|185|70
Pateikta eilut apibdina asmens vard, ami, g ir svor. Taigi duomenys.txt struktra
turi bti tokia: tekstas0|tekstas1|tekstas2|tekstas3. Kodo fragmento esm tokia, kad yra
perskaitoma eilutje surayta informacija ir iskirstoma atskirus atitinkamus kintamuosius
$laukelis[$i]. iuo bdu jau manoma sukurti panai duomen bazs lentel:
<?
$failas="duomenys.txt";
$simboliu_skaicius = count($failas);
$stulpelis = file($failas);
for($i=0; $simboliu_skaicius > $i; $i++)
$laukelis = explode("|", $stulpelis[$i]);
echo "$laukelis[0] $laukelis[1] $laukelis[2] $laukelis[3]";
?>
Tik kintamasis $informacija turt bti:
$informacija="Mindaugas|20|185|70";
45
Daug toki tekstini eilui sudaro pilnos duomen bazs struktr. Pavyzdiui:
Mindaugas|20|185|70
Kristina|20|174|50
Rimantas|50|190|80
[..]
Vaida|19|171|53
Tokios duomen bazs struktros duomen failo sukrimas yra paprastas:
<?
$vardas="vardas";
$amzius="amzius";
$ugis="ugis";
$svoris="svoris";
$informacija=$vardas."|".$amzius."|".$ugis."|".$svoris;
$failas="duomenys.txt";
$duomenys=fopen($failas, "a");
fwrite($duomenys, "$informacija\n");
fclose($duomenys);
?>
2.14.
Slapukai danai naudojami vartotojui identifikuoti. Slapukas tai nedidelis failas, kur
serveris deda vartotojo kompiuter. Kiekvien kart, kai tas pats kompiuteris interneto
narykls pagalba kreipiasi t pat puslap, jis isiunia ir slapuk. Naudojantis PHP, galima
atlikti ias operacijas su slapukais:
46
PHP sesijai inicializuoti naudojama session_start() funkcija, kuri btinai turi bti
terpiama dar prie html element.
PHP sesijos kintamiesiems saugoti naudojamas $_SESSION kintamasis.
PHP sesijai sunaikinti naudojama funkcija unset(); norint visikai sunaikinti sesij,
naudojama funkcija session_destroy().
47
JavaScript kalboje visi tinklalapio elementai sudti tam tikra hierarchine tvarka.
Kiekvienas elementas yra tam tikras objektas. Kiekvienas objektas turi tam tikrus metodus ir
savybes. Baziniai JavaScript odiai: break false if null var continue for in true while else
function new type of with.
</script>
3.2. Operatoriai
Priskyrimo, palyginimo, matematiniai operatoriai ir atliekamos operacijos pateikti 3.2.1,
3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.5 lentelse.
3.2.1 lentel. Priskyrimo operatoriai
Operatorius
=
+=
=
*=
/=
%=
Veiksmas
Priskiria kintamajam reikm
Padidina kintamojo reikm nurodytu dydiu
Sumaina kintamojo reikm nurodytu dydiu
Padaugina kintamojo reikm i nurodyto dydio
Padaugina kintamojo reikm i nurodyto dydio
Padalija kintamojo reikm grina liekan
Pavyzdys
Kint=100
Kint+=10
Kint=10
Kint*=2
Kint/=5
Kint%=3
49
Ekvivalenti operacija
Kint=kint+d
Kint=kintd
Kint=kint*d
Kint=kint/d
Kint=kint%d
3.2.3 lentel. Matematiniai operatoriai
Operatorius
Apraymas
Pavyzdys
Reikm
Reikm1 + reikm2
Prieingas enklas
Sudtis. Naudojamas ir eilutms jungti
Reikm1 reikm2
Reikm1 * reikm2
Reikm1 / reikm2
Reikm1 %reikm2
Reikm++
Reikm--
Atimtis
Daugyba
Dalyba
Dalyba
Kintamojo reikm didinama 1
Kintamojo reikm mainama 1
D=-10
D=a+100
Str=abc+def
D=a100
D=10*10
D=a/b
D=a%3
D++
D--
Operacija
Tikrina, ar lygs operandai
Tikrina, ar nelygs
Tikrina, ar pirmas didesnis u antr
Tikrina, ar pirmas didesnis u antr, arba lygs
Tikrina, ar pirmas maesnis u antr
Tikrina, ar pirmas maesnis u antr, arba lygs
vykdo login operacij ir
vykdo login operacij arba
vykdo login inversij ne
3.2.5 lentel. Bit operatoriai (naudojami tik su skaitiniais operandais ir operacijoms su atskirais bitais)
Operatorius
&
|
^
~
<<
>>
50
Pavadinimas
Bitin operacija ir
Bitin operacija arba
Bitin operacija ir/arba
Bitin operacija ne
Postmis kair
Postmis dein
Operatoriai
(unarinis minusas), + (unarinis pliusas), ~ (bitinis NE), ! (loginis
NE)
*(daugyba), / (dalyba), %
+(sudtis), (atimtis)
<< (postmis kair), >>(postmis dein)
Visos lyginimo operacijos >, >=, <=, <, =,
& (bitinis ir)
^ (bitinis ir/arba)
| (bitinis arba)
&& (loginis ir)
|| (loginis arba)
?:
Priskyrimo operatoriai
, (kablelis)
default:
{
//veiksmai atliekami tada, kai sakinys negyja nei vienos nurodytos reikms
}
}
Pvz.:
Switch (key) {
Case a :alert(Js paspaudte klavi a)
Case b :alert(Js paspaudte klavi b)
Default:alert(Js paspaudte kakok klavi)
}
Elementas Continue taip pat naudojamas cikluose for, for...in, while. is elementas
nurodo, kad iteracija stabdoma ir pereinama prie kitos iteracijos.
Objektas Array
JavaScript kalboje nra specialios komand grups, skirtos atlikti veiksmus su masyvais.
Firma Netsacape sukr masyv naudojimo metodik panaudodama objekt array. Jis turi
masyv sujungimo metodus, riavim ir perstatym. Galima suinoti masyvo dyd. Masyvas
kintamj rinkinys, kuriame svarbi element tvarka. Pvz., jei masyvo pavadinimas sar, tai
pirmasis jo elementas bus ikvieiamas sar[0], antrasis sar[1] ir t. t. Objekto array metodai
pateikti 3.5.1.1 lentelje.
Sukurti objekt Array galima dviem bdais:
Join
Reverse
Sort
Concat
Slice
Apraymas
Sujungia visus masyvo elementus vien eilut
Keiia masyvo element tvark: pirmasis elementas tampa paskutiniu, o
antrasis priepaskutiniu ir t. t.
Riuoja masyvo elementus
Masyv sujungimas
Masyvo element irinkimas, nurodant sekos pradios ir pabaigos
simbolius
53
Pvz.:
<script language="JavaScript">
a = new Array (2)
for (i=1;i<3;i++) {
a[i] = new Array(4)
for (j=1;j<3;j++){
a[i][j] = prompt(i+"eilut"+j+"stulpelis",'Jonas'); }
}
for (i=1;i<3;i++) {
str = "Eil"+i+":"
for (j=1;j<3;j++) {
document.write(i+"eilut "+j+"stulpelis "+a[i][j],"<br>")}
}
</script>
3.5.2.
JavaScript kalboje visi tinklalapio elementai sudti tam tikra hierarchine tvarka.
Kiekvienas elementas yra tam tikras objektas. Kiekvienas objektas turi tam tikrus metodus ir
savybes. JavaScript leidia gana lengvai valdyti tinklalapio objektus, taiau btina inoti ir
objekt hierarchij.
elements[0]
images[0]
forms[0]
elements[1]
elements[2]
links[0]
3.5.2.1 pav. Objektinis narykls modelis
3.5.2.1 pav. yra vienas paveiksllis, viena nuoroda ir forma, kuri sudaryta i dviej teksto
vedimo laukeli ir mygtuko.
JavaScript poiriu, narykls langas tai objektas window. is objektas turi savo
element: informacin eilut, tvarka. Narykls lango viduje galima dti HTML dokument.
Toks tinklalapis yra document objektas. io objekto savybms priskiriamos tokios savybs kaip,
pvz., tinklalapio fonas. Be iimties visi HTML kalbos objektai priskiriami objekto document
54
savybms. Kaip matyti i 3.5.2.1 pav., kiekvienas objektas turi savo vard hierarchinje
struktroje. Norint kreiptis kur nors objekt, reikia inoti ir jo viet ioje struktroje.
Pirmas objektas 3.5.2.1 pav. yra document. Paveiksllis tinklalapyje images[0], tai
reikia, kad norint kreiptis objekt reikia rayti document.images[0].
Pavyzdiui, jei norima suinoti, kok tekst ved vartotojas pirmj formos laukel, tai
pirma
reikia
inoti
keli
iki
io
laukelio.
Pradedama
nuo
objekto
document
Objektas Date
55
Sintaks:
MyDate=new Date ([parametrai])
Galimi tokie parametr variantai:
joki parametr, kintamajam bus priskirta data, kurios formatas Mnuo, diena, metai,
Date(96,4,15);
skaii, kurie sudaro piln rinkin metus, mnes, dien, valand, minutes ir sekundes, pvz.,
sameDay=new Date(96,4,15,15,30,0).
Objekto Date metodus pagal paskirt galima suskirstyti ias grupes:
laiko gavimas;
veiksmai su datomis.
Datai ir laikui nustatyti ir gauti naudojami sekundi, minui, valand, dien, mnesio,
savaits ir met gavimo metodai (r. 2.5.3.1 lentel). Pavyzdiui, metodas getDay naudojamas
suinoti, kokia yra savaits diena, bet metodu setDay savaits diena nra nustatoma
automatikai.
3.5.3.1 lentel. Datos metodai
Metodas
GetDate
GetDay
GetHours
GetMinutes
GetMonth
GetSeconds
GetTime
GetTimeZone()ffset
GetYear
Parse
Setdate
SetHours
SetMinutes
SetMonth
SetSeconds
SetTime
SetYear
56
Apraymas
Grina einamo mnesio dien skaii nuo 1 iki 31
Grina savaits dien nuo 0 (sekmadienio) iki 6 (etadienio)
Grina valandas sveik skaii nuo 0 iki 23
Grina minutes sveik skaii nuo 0 iki 59
Grina mnes sveik skaii nuo 0 (sausio) iki 11 (gruodio)
Grina minutes sveik skaii nuo 0 iki 59
Grina skaii milisekundmis nuo 1970 met sausio 1 dienos
000:00:00 ir nurodytos objekte Date datos
Grina laiko skirtum tarp esamo vietinio laiko ir Grinvio laiko
minutmis
Grina du paskutiniuosius met skaiius
Grina skaii milisekundmis tarp 1970 met sausio 1 dienos 00:00:00
ir datos eilutje
Nustato mnesio dien
Nustato valandas
Nustato minutes
Nustato mnesio numer
Nustato sekundes
Nustato laik
Nustato metus
ToGMTString
ToLocaleString
UTC
Intervalas
0..59
0..23
0..6
1..31
0..11
Metai nuo 1990
3.5.4.
Objektas Function
Objektas Function naudojamas, kai reikia sukurti JavaScript kodo eilut, kuri skaitoma
kaip funkcija. Kaip ir prasta, funkcija gali turti kelet parametr ir tik vien reikm. Apraant
parametrus nebtina nurodyti kintamj tipus. Naujiems objektams kurti naudojamas
konstruktorius new. Naujos funkcijos apraymo sintaks:
Function funkcijos_vardas([1parametras] [, 2 parametras][,Nparametras]){
//Funkcij sudarantys operatoriai
}
Jei naudojamas konstruktoris new, tai funkcij galima aprayti kaip kintamj:
Var kintamojo_vardas = new Function([1parametras] [, 2
parametras][,Nparametras]);
3.5.5.
Objektas Math
Apraymas
abs
exp, log
ceil
floor
min, max
pow
Argumento ingsnis
round
Apvalina argument
sgrt
Kvadratin aknis
3.5.6.
Objektas String
Objektas String turi nemaai metod, skirt atlikti vairius veiksmus su eilutmis, ir vien
savyb (length), kuri naudojant galima suinoti eiluts ilg.
Panaudojant objekt String, kintamasis kuriamas konstruktoriumi New:
Eilute=new String(Mano tekstin eilut);
3.5.6.1 lentel. Objekto String metodai
Metodai
anchor
big, blink, bold, fixed, italics, small,
strike, sub, sup
chartAt
indexOf, lastIndexOf
Link
split
substring
toLowerCase
toUpperCase
Apraymas
Sukuria HTML element anchor
Sukuria atitinkam HTML kalboje parayto teksto element
Simbolis, esantis nurodytoje eiluts pozicijoje
Simbolio pozicija nurodytoje eilutje, paskutinio eiluts
simbolio pozicija
Sukuria HTML nuorod kit puslap
Padalina eilut eilui masyv
Nurodytos eiluts dalis
Veria eiluts simbolius masias arba didisias raides
3.5.7.
Objektas Navigator
58
Apraymas
Narykls vardo kodas
Narykls pavadinimas
Narykls versija
Ir narykls pavadinimas, ir versija
Leidia suinoti, ar palaikoma Java kalba
Leidia suinoti, ar palaikomas cookies
Leidia suinoti, ar palaikomas taint (tiktai netscape)
3.5.8.
Objektas Window
Objektas Window teikia ir valdo informacij, esani lange. Jo savybs pateiktos 3.5.8.1
lentelje.
3.5.8.1 lentel. Objekto window savybs
Savybs
Parent
Self
Top
Name
Opener
Closed
Status
Defaultstatus
ReturnValue
Document
Event
History
Location
Navigator
Screen
ClientInformation
Apraymas
Grina tvik lang duotajam
Grina nuorod aktyv lang
Grina nuorod lang, esant ariausiai vartotojo
Grina lango vard, sukurt bloke <framest>
Grina lang, sukrus duotj
Parodo, kad langas udarytas
Narykls informacins eiluts tekstas
Grina tekst, esant informacinje eilutje
Sugrina dialogo lango reikm
Grina nuorod objekt document
Grina nuorod globalin objekt event
Grina nuorod objekt history
Grina nuorod objekt location
Grina nuorod objekt navigator
Grina nuorod globalin objekt screen
Grina nuorod objekt Navigator
3.5.8.2 lentel. Objekto window metodai, skirti lang valdymui ir vairiems veiksmams atlikti
Metodas
Open
Close
ShowHelp
ShowModalDialog
Alert
Prompt
Confirm
Navigate
Blur
Focus
Apraymas
Atidaro nauj narykls lang
Udaro aktyvj narykls lang
Ikvieia pagalbos lang
Ikvieia nauj lang, kaip modalin dialogo lang
Praneim langas
Dialogo langas
Dialogo langas
Nuskaito kit tinklalap
Dingsta tinklalapio efektas
Perveda kok nors efekt nurodyt tinklalap
59
Scroll
SetInterval
SetTimeOut
ClearInterval
ClearTimeout
execScript
Reikm
Fullscreen
Toolbar
Location
Directories
Status
Menubar
Scrollbars
Resizable
Width
Height
Top
Yes|No|1|0
Yes|No|1|0
Yes|No|1|0
Yes|No|1|0
Yes|No|1|0
Yes|No|1|0
Yes|No|1|0
Yes|No|1|0
Skaiius
Skaiius
Skaiius
Left
Skaiius
60
Apraymas
Nurodo lango dyd (per vis ekran ar ne)
Ar rodyti narykls mygtuk liniuot
Ar rodyti adreso eilut
Ar rodyti katalog
Ar rodyti narykls informacin eilut
Ar rodyti meniu liniuot
Horizontali ir vertikali persukimo juosta
Nurodymas, ar gali langas keisti dyd
Nurodomas lango plotis pikseliais. Minimali reikm 100
Nurodomas lango auktis pikseliais. Minimali reikm 100
Nurodo virutinio kairiojo lango kampo vertikalij
koordinat
Nurodo virutinio kairiojo lango kampo horizontalij
koordinat
Reikm
Yes|No
Yes|No
Yes|No
Yes|No
Tak skaiius (keiia width)
Tak skaiius (keiia height)
Tak skaiius
Tak skaiius
Tak skaiius
Tak skaiius
Yes|No
Yes|No
61
Funkcij setTimeout galima panaudoti ir reklaminiams paveikslliams keisti kas tam tikr
laiko interval. Tokiu atveju kiekvienas paveiksllis yra nuoroda vis kit tinklalap. Patogiausia
toki program realizuoti naudojant masyvus.
Pakartotiniams veiksmams atlikti naudojamas metodas setInterval. Pavyzdyje kas
penkias sekundes spausdinamas praneimas Prajo penkios sekunds. Funkcija rodykLaika()
ispausdins ekrane laik, o funkcija laikas() skaiiuoja 5 sekundes ir kiekvien kart kreipiasi
save.
Pvz. Funkcija rodykLaika():
<html>
<head>
<title>5 sekundi laikmatis</title>
</head>
<body>
<script language ="JavaScript">
function rodykLaika()
{
window.alert(Prajo penkios sekunds)
}
function laikas()
{
window.setInterval(rodykLaika(),5000,JavaScript)
}
laikas()
</script>
</body>
</html>
Metodai clearTimeout ir clearInterval atitinkamai panaikina metod setTimeout ir
setInterval veikim.
Pvz. Skaitliuko su funkcija clearTimeout vaizdas naryklje pateiktas 3.5.8.2 pav.:
<html>
<head>
62
<script type="text/javascript">
var c=0;
var t;
var timer_is_on=0;
function timedCount()
{
document.getElementById('txt').value=c;
c=c+1;
t=setTimeout("timedCount()",1000);
}
function doTimer()
{
if (!timer_is_on)
{
timer_is_on=1;
timedCount();
}
}
function stopCount()
{
clearTimeout(t);
timer_is_on=0;
}
</script>
</head>
<body>
<form>
<input type="button" value="Pradti!" onclick="doTimer()" />
<input type="text" id="txt" />
<input type="button" value="Stabdyti!" onclick="stopCount()" />
</form>
</body>
</html>
63
Apraymas
vyksta prie nuskaitant tinklap
vyksta, kai prarandamas koks nors efektas
vyksta, kai atsiranda klaid nuskaitant tinklalap ar grafin objekt
vyksta, kai atsitinka koks nors efektas
vyksta, kai paspaudiamas klavias F1
vyksta, kai nuskaitomas tinklapis
vyksta, kai pakeiiamas narykls lango dydis
vyksta, kai persukamas lango turinys (persukimo juosta)
vyksta, kai pereinama kit tinklap ar baigiamas darbas su narykle
Apraymas
Href
Hash
Host
Hostname
Pathname
Port
Protocol
Search
Pavyzdiui,
komanda
Window.location.href=http://www.naujas.lt/naujas.html
64
Apraymas
Nuskaito kit tinklalap. Veiksmas ekvivalentus: Window.location.href
I naujo nuskaito aktyv tinklalap
Nuskaito tinklalap ir paymi j history srae
Savybs
AvailHeight
AvailWidth
BufferDepth
ColorDepth
Height
UpdateInterva
l
Width
Apraymas
Skaitymas/Raymas
Skaitymas
Skaitymas
Skaitymas/Raymas
Skaitymas
Skaitymas
Skaitymas/Raymas
Skaitymas
65
anchors
links
applets
embeds
filters
all
images
selection
plugins
styleSheets
scripts
Yra vairi savybi, padedani suinoti informacij apie pat fail, kuriame saugomas
HTML dokumentas. Pvz. Paskutin dokumento redagavimo dat galima suinoti taip:
<script language=JavaScript>
document.write(document.lastModified)
</script>
3.5.12.1 lentel. Savybs, susietos su spalvomis
Savybs
bgColor
fgColor
linkColor
alinkColor
vlinkColor
Apraymas
Dokumento fono spalva
Dokumento teksto spalva
Hiperssajos spalva
Aktyvios hiperssajos spalva
Anksiau lankyto puslapio hiperssajos spalva
Objekto document vykiai naudojami tam, kad tinklalapis bt aktyvus, patogu valdyti
vartotojo veiksmus tinklapyje (klavi paspaudimas, pels kursoriaus vaikiojimas, mygtuk
paspaudimai ir t. t.) ir atitinkamai juos reaguoti.
3.5.12.2 lentel. Objekto Document vykiai
vykiai
onClick
OnDblClick
66
Apraymas
vyksta, kai spragteljamas kuris nors pels klavias
vyksta, kai spragteljamas du kartus pels klavias
onMouseDown
OnMouseOver
OnMouseMove
OnMouseOut
OnMouseUp
OnDragStart
OnSelectStart
OnKeyDown
OnKeyPress
OnKeyUp
onHelp
Apraymas
Kolekcija vis blok ir element idstyt dokumente
Kolekcija vis anchor element
Kolekcija vis dokumento objekt:grafini, aplet ir kt.
Kolekcija vis element terpt dokument bloke <embed>
Kolekcija vis filtr, naudojam dokumente
Rmeli kolekcija, bloke <framest>
Form kolekcija
Grafini objekt kolekcija
Nuorod ir emlapi kolekcija
Papildom moduli kolekcija
Vis skripto program kolekcija
Stili kolekcija
Kolekcijos struktra panai masyvo kiekvienas elementas turi savo indeks. Kolekcija
all tai rinkinys vis blok ir element, idstyt tinklapyje. Kolekcij frames galima naudoti
tam, kad bt galima gauti vairius rmeli atributus, pavyzdiui, j vardus ar rmeli kitimo
atributus. Paprastai rmeliams suteikiami logiki vardai, kad vliau juos bt lengva kreiptis.
Pavyzdiui, jei rmelis yra deinje, nuoroda j gali bti tokia:
Window.parent.right.location.href=right1.html
Kolekcija forms naudojama, kai reikia prieiti prie atskir formos element, ir yra gana
svarbus informacijos i vartotoj gauti. Formos ir j elementai turi vardus, kurie suteikiami
atributu name. Yra du formos element pasiekimo bdai. Pirmasis pagal indeks. Informacijai
gauti naudojama kolekcija forms(0). Pirmasis elementas visada turi indeks 0. Formos elementai
idstyti kolekcijoje elements, todl norint suinoti, kiek element turi forma, reikia urayti:
Document.write(Formos element saiius.document.forms(0).elements.length)
67
Savybs action, method ir name leidia suinoti atitinkamus bloko <forms> atributus.
Norint suinoti formos element tip, reikt parayti programos fragment.
Pvz.:
Var ctrls
Ctrls=document.forms(0).elements
For (i=0;i<ctrls.length;i++)
{
document.write(ctrls(i).type,<br>)
}
Gautas rezultatas:
#0 text
#1 text
#2 submit
#4 reset
Patogiau formos elementus kreiptis pagal j vardus. Tarkime, formai suteikiamas vardas
form1, o pirmam elementui text1. Norint suinoti pirmojo laukelio turin, reikt urayti taip:
Document.write.form1.text1.value
Kolekcija Images naudojama, kai reikia prieiti prie grafini tinklalapio element. Galima
suinoti kiekvieno objekto plot, aukt, saugojimo adres. iuos atributus taip pat galima keisti.
68
Apraymas
Naudojamas grafinio objekto raymui nutraukti
Naudojamas, kai reikia objekto vaizd fokusuoti
Naudojamas tekstinio lauko reikmei keisti
Naudojamas, kai reikia, kad vykis vykt paspaudus kairj pels klavi tam
tikroje ekrano srityje
vykdomas, kai atsiranda klaidos raant puslap ar grafin objekt
Naudojamas, kai sufokusuojamas koks nors elementas
vykdomas, kai raomas puslapis ar grafinis objektas
vykdomas, kai pels ymeklis atsiduria nurodyto elemento srityje
vykdomas, kai pels ymeklis perengia nurodyto elemento ribas
vykdomas, kai paspaudiamas mygtukas Reset
vykdomas, kai tekstiniame lauke paymimas tekstas
vykdomas, kai paspaudiamas mygtukas Submit
vykdomas, kai pereinama kit tinklalap arba kai baigiamas darbas su
narykle
3.6.1.
vykis OnAbort
Vykdomas, kai nutraukiamas grafinio objekto siuntimas, todl vykio apdorojimas vyksta
bloke <img>, kuriame apraomi vairs grafinio elemento parametrai. Apraant didels apimties
paveikslo persiuntimo parametrus, komanda img src tiesiogiai nurodoma, kaip elgtis, kai
vartotojas sustabdys objekto siuntim. <Script> bloke prie tai turi bti nurodyti mygtukai arba
veiksmai, kuriuos vartotojas turi atlikti siekdamas sustabdyti siuntimo proces. Bendru atveju
komanda atrodo taip:
<img src= "paveikslas.jpg onAbort= "doAbortfj ">,
ia paveikslas.jpg tai siuniamas paveikslas, o vykis onAbort aprao programos
veiksmus, kuriuos reikia atlikti, kad siuntimas bt sustabdytas.
3.6.2. vykis OnBlur
vykis naudojamas, kai reikia patikrinti, ar teisingai vartotojas ved informacij kuriame
nors formos laukelyje. iuo atveju vartotojas negals pereiti kit lauk tol, kol neves teisingos
informacijos duotajame laukelyje.
Pvz.:
<html>
<head>
<script type="text/javascript">
function upperCase()
{
var x=document.getElementById("fname");
x.value=x.value.toUpperCase();
}
</script>
</head>
<body>
veskite vard: <input type="text" id="fname" onblur="upperCase()" />
<p> funkcija suveikia, kai js paliekate vesties lauk. Funkcija pakeiia
masias raides didiosiomis.</p>
</body>
</html>
3.6.3.
vykis OnChange
vykis naudojamas patikrinti, ar kas nors pasikeit. Ikvieiamas tada, kai pasikeiia kuris
nors formos elementas upildoma vesties eilut, irenkamas sraas ir pan. J naudojant galima
tikrinti vestos informacijos teisingum arba atlikti kitus veiksmus.
OnChange ir HTML forma sudaro galimyb i srao pasirinkti tam tikr nuorod ir
pereiti kit tinklalap.
69
Pasirinkus bet kur enklo pavadinim, kvieiama funkcija keisk(), kuri konstruoja
atitinkamo tinklalapio nuorod ir j ikvieia:
<html><head>
<title>Horoskopai</title>
<script language="JavaScript" >
function keisk() {
var kur=document.forma.pasirink.options
[forma.pasirink.selectedlndex].value;
Window.location. href=kur-+ ". html";}
</script>
</head>
<body>
<form name="forma">
<select name="pasirink" size="1" onchange="keisk()" >
<option value="" selected>Kas esi
<option value="skorp">Skorpionas
<option value="vezys"> Vys
<option vaiue="saulys"> aulys
<option value="liutas"> Litas
<option value = "vandenis"> Vandenis
</select>
</form>
</body>
</html>
3.6.4.
vykis OnCIick
vykis vykdomas, kai paspaudiamas mygtukas Submit ar Reset arba kai suaktyvinama
kito tinklalapio nuoroda. Pavyzdyje programa paklaus vartotojo, ar tikrai jis nori pereiti kit
70
tinklalap. Programa sureaguos tada, kai vartotojas paspaus kairj pels klavi su nuoroda
Spausk ia:
Pvz.:
<html>
<head>
<title>Pavyzdys su "noClick"</title>
<script language= "JavaScript ">
function doClick()
{
if (confirm("Ar tikrai jau ieinate?"))
return true
else
return alse f
}
</script>
</head>
<body>
<a href= "k1.html" onClick= "return doClick()">
Spausk ia</a>
</body>
</html>
vykdius OnClick, ekrane pasirodys langas su dviem mygtukais: OK ir Cancel.
Paspaudus OK, pereinama nurodyt tinklalap, iuo atveju kl.html, jei Cancel, liekama tame
paiame.
Programl sutrumps, jei bus panaudota mygtuko OK grinama reikm true, o Cancel
false. Standartin funkcija confirm gyja tik dvi reikmes (arba true, arba false), panaudojus j
galima nebenaudoti operatoriaus if:
<html>
<head>
<title>Pavyzdys su "noClick"</title>
<script language= "JavaScript">
function doCIick()
{
return confirm("Ar tikrai jau ieinate?")
</script>
</head>
<body>
<a href= "k1.html" onClick= "return doClick()">
Spausk ia</a>
</body>
</htm/>
71
3.6.5.
vykis OnError
vykis naudojamas, kai padaroma klaida raant dokument ar grafin objekt. Tada
galima perduoti suformuluot praneim vartotojui. Pateiktame pavyzdyje programa,
panaudodama HTML konstrukcij img src, tikrina, ar objektas vestas teisingai. Jei ne, tai
funkcija doError() spausdina praneim lange Grafinio objekto raymo klaida, vietoj paveikslo
uraomas alternatyvus tekstas:
<html>
<head>
<title> Pavyzdys su onError</title>
<script language= "JavaScript">
function doError () {
alert(''Grafinio objekto raymo klaida"):
{
</script>
</head>
<body>
<img src = "c.windows/images/paveikslas.jpg"
onError= "doError() " alt = "deja, paveiksllio nematysite ">
</body>
</html>
3.6.6.
vykis OnFocus
vykdomas tada, kai persiuniamas tinklalapio elementas. Juo gali bti langas, rmelis,
formos elementas. Naudojamas, kai vartotojui norima padti ar kaip nors kitaip sureaguoti jo
veiksmus. Pavyzdio bloke, panaudojant HTML kalbos konstrukcij form, ikvieiamas langas.
Jame pateikiamas komentaras, silantis rayti savo elektroninio pato adres. Kai perkeliamas
ymeklis lang, uraas panaikinamas:
<html>
<head>
<title > Pavyzdys </title >
<script language= "JavaScript">
function valyk_forma() {
document.form.form. value="}
</script>
</head>
<body>
<form name="form">
<p>< input onFocus "valyk_forma()"name="form"
size = "12" value=" [Js E-mail ] "></p>
</form>
</body>
< html>
72
3.6.7.
vykis OnLoad
kai pels spragteljimu galima parinkti tiktai vien element. Tokio parinkimo bdo specialiai
prayti nereikia. Kai leidiama kartu parinkti kelis elementus, gairelje select raomas atributas
multiple, o element grup parenkama spragtelint juos pele esant nuspaustam klaviui <Ctrl>. Jei
is klavias nepaspaustas, net ir raius atribut multiple bus leidiama pasirinkti tiktai vien
element, o parenkant kiekvien nauj element, ankstesnis bus grinamas pasyvi bsen.
Srao dyd apraanio parametro size reikm nurodo, kiek jo element (eilui) vienu
metu rodoma ekrane. Kai leidiama parinkti tiktai pavienius elementus, greta srao elemento
tinklalapyje sukuriamas srao iskleidimo mygtukas . Spragteljus pele mygtuk,
parodomas visas sraas, kuriame pasirinktas elementas paymimas pakeista fono spalva. Jei
leidiamas grupinis parinkimas, vietoje iskleidimo mygtuko sukuriami du srao slinkties
valdymo mygtukai, parodyti 3.7.1 pav.
76
77
Intarp funkcij apraymuose daromos klaidos bna trij tip: sintakss, vykdymo ir
logins. Sintakss klaid atsiranda dl to, kad neteisingai apraomos programavimo kalbos
Intarp funkcij apraymuose daromos klaidos bna trij tip: sintakss, vykdymo ir
logins. Sintakss klaid atsiranda dl to, kad neteisingai apraomos programavimo kalbos
struktros. Jas automatikai aptinka narykles komponuoti programavimo kalbos
interpretatoriai. J formuojami praneimai apie klaidas ir atveriami langai vairi tip ir atmain
naryklse skiriasi, taiau pagrindiniai klaid paiekos principai labai panas.
Pavyzdiui, tarkime, kad parengtas tinklalapio apraymas, kurio programiniame intarpe
pamirta operatoriaus if login slyg rayti skliaustuose. Tai sintakss klaida, kuri narykl
aptiks tinklalapio atidarymo metu ir parodys ekrane praneim apie spjam klaidos pobd bei
pasilys tsti klaidos paiek (3.8.2 pav.):
Nors intarpo aprayme sintakss klaid ir neaptinkama, garantijos, kad jis teisingas, nra.
Dar gali bti vykdymo ir logini klaid. Vykdymo klaid pasitaiko tada, kai pageidaujama atlikti
78
neleistinus veiksmus, pavyzdiui, dalyti i nulio arba sudauginti tekstus. Tokias klaidas ir
apytiksl j viet taip pat leidia aptikti automatinio derinimo priemons.
Sunkiausiai aptinkamos logins klaidos, kurios atsiranda dl to, kad intarpo autorius
netinkamai parinko udavinio sprendimo bd arba atsivelg ne visas galimas situacijas.
Tokiais atvejais automatins derinimo priemons klaid neaptinka, taiau sprendimo rezultatai
bna ne tokie, koki tikimasi. ias klaidas galima aptikti tiktai organizuojant intarp testavim,
juose aprayt proces bandomj vykdym. Intarp testavimas atliekamas esant vairioms j
apdorojam duomen reikmms, stengiantis sukurti kuo sunkesnes tikrinamos programos darbo
slygas.
Pastebjus klaidas, stengiamasi analizuoti j prieastis. Tai padaryti padeda tarpini
rezultat parodymas, programos fragment ijungimas, paveriant juos komentarais arba raant
funkcij nutraukimo operatori return. Testavimo metodika ir naudojamos priemons priklauso
nuo konkrei tikrinam program atliekam veiksm, todl ir nra griet rekomendacij, kaip
testuoti programas.
79
4.
4.1.
PRAKTINS UDUOTYS
80
84
Kitos TR komandos
</TABLE>
Lentel:
CAPTION lentels antrat, TR lentels eilut, TH, TD lentels lstel, TH labiau skirta
pavadinimui. Atributai:
CELLSPACING lstels dydis.
CELLPADDING atstumas nuo lstels turinio iki jos krato.
ALIGN (lentelei) slankios lentels padtis dokumente.
VALIGN lentels lsteli ar vienos eiluts, vienos lstels turinio vertikali orientacija.
BACKGROUND nuoroda lentels ar lstels fono grafinio paveiksliuko fail.
BORDERCOLOR lentels, eiluts ar lstels rmeli spalva.
NOWARP lstels turinys neperkeliamas.
COLSPAN lstels dalijimas du stulpelius.
ROWSPAN lstels dalijimas dvi eilutes.
Formos:
<FORM ACTION="url" METHOD="get|post" ENCTYPE="MIME type"
TARGET="name|_self|_perent|_top|_blank " ></FORM>
HTML Forma, skirta formos elementuose surinktai informacijai nurodytu adresu sisti.
Atributai:
ACTION failas, kuriam perduodama informacija.
METHOD informacijos perdavimo metodas.
ENCTYPE informacijos kodavimo metodas.
<INPUT TYPE="text|password|checkbox|radio|image|hidden|submit|reset" NAME="name"
VALUE="value" ALIGN="left|right|texttopabsmidddle|baseline|absbottom" CHECKED
SIZE="value" MAXLENGTH="value" SRC="url" >
Formos elementas. Ivaizda ir naudojimas priklauso nuo tipo. Atributai:
TYPE elemento tipas: tekstinis laukas, slaptaodis, pasirinkimo elementas, isirinkimo
elementas, grafinis vaizdas, nematomas, paslptas elementas, mygtukas informacijai perduoti
server, mygtukas vis formos element reikmms atnaujinti.
NAME elemento vardas, perduodamas kaip informacijos pavadinimas server.
VALUE pradin elemento reikm arba pavadinimai ant submit ir reset tipo mygtuk. Taip pat
perduodama server kaip reikm (tekstiniams laukams gali bti keiiama).
CHECKED atributas, skirtas pasirinktiems radio ar checkbox elementams paymti (i vienodo
vardo (NAME) radio element (gali bti pasirinktas tik vienintelis).
SIZE matomas tekstini element dydis.
MAXLENGTH maksimalus simboli kiekis tekstiniuose elementuose.
SRC nuoroda grafinio elemento fail.
<SELECT NAME="name" SIZE="number" MULTIPLE>
<OPTION VALUE="value" SELECTED>
Kitos OPTION komandos
</SELECT>
Formos elementas, skirtas pasirinkimui i keleto opcij realizuoti. Atributai:
NAME elemento vardas, perduodamas kaip informacijos pavadinimas server.
85
86
c) sukurtos kelios nuorodos (saitai) kitas svetaines, konkreius to paties ar kito svetains
tinklalapio objektus ir bent vienas el. pato adreso saitas;
d) sukurtas bent vienas ymtasis ir bent vienas numeruotasis sraas (reikia panaudoti
vairius ymjimo ir numeravimo stilius);
e) terptos bent dvi lentels;
f) sukurta forma.
4.2.
/*login uklausa,priskyrimas.Kintamasis$sumabuvopriskirtaskintamiesiems$kintir$kit
as_kint,kur $kintbuvopridtaspriekintamojo $kitas_kint*/
$suma = $kint + $kitas_kint;
echo $suma; // lange iveda: 11
?>
Pvz. 3. Sryio operatorius (ymimas (.) taku). Jis yra naudojamas eilutms sujungti,
tarkime, 2 kintamiesiems (4.2.2 pav.):
<?php
$tekstas1 = "Sveikas Pasauli!";
$tekstas2 = "Kokia grai iandien diena!";
echo $tekstas1 . " " . $tekstas2;
?>
?>
4.3.
while ciklas tikrina slygas prie arba po kiekvieno ciklo pakartojimo ir kartoja
cikl tik tuo atveju, jei slyga vis dar netenkinama. Sintaks:
while (slyga)
{
kodas, kuris bus vykdomas;
}
do...while ciklas kartojamas bent vien kart, tada pereina cikl, kuris
kartojamas, kol slyga bus teisinga. Sintaks:
89
do
{
91
echo $string[0];
// grazina a
echo $string[3];
// grazina d
echo $string[strlen($string)-1]; // grazina f
?>
Pvz. 8. Masyvas (4.3.6 pav.):
<?php
$str = 'one|two|three|four';
// teigiamas limitas
print_r(explode('|', $str, 2));
// neigiamas limitas (nuo PHP 5.1)
print_r(explode('|', $str, 1));
?>
4.4.
}
$pakeista=implode("", $eilute);
print("<pre>$pakeista</pre>"); //pakeist eilut atspausdiname ekrane
$doc=fopen("rez.txt", "w"); //ir raome rezultat fail
fwrite($doc, $pakeista);
fclose($doc);
?>
Funkcija file() grina dokumento turin kaip masyv, o kiekvien dokumento eilut kaip
atskir masyvo element.
Funkcija explode() suskaldo eilut pagal nurodyt skirtuk, t. y. yra " " (tarpas) ir grina
kiekvien jos dal masyve.
implode(), prieingai nei explode() sujungia masyvo elementus eilut.
preg_split() atlieka t pai funkcij kaip ir explode(), tik skirtukui naudojama paprastoji
iraika (regularexpression), kuri suskaldo od po raid.
Sakykime, tekstinio failo duom.txt turinys:
tekst kakoks
ir dar teksto dad
4.5.
95
Prisiminkite, kad PHP kalboje masyv numeravimas prasideda nuo 0, o ne nuo 1, tad ir
ciklas vykdomas nuo 0 iki 5 pozicij.
Informacijos ivedimas ekran. Iveskite spjamus skaiius, tada loimo skaiius ir
galiausiai rezultatus kiek skaii atspta ir ar js laimjote:
echo "Spjami skaiiai: " . implode(" ", $spejimas) . "<br />";
echo "Loimo skaiiai: " . implode(" ", $losimas) . "<br />";
echo "Atspta skaii: " . $atspeta . "<br />";
if ($atspeta>= 2) {
echo "Js laimjote";
} else {
echo "Js nelaimjote";
}
Pilnas skripto PHP kodas. Programa realizuota. Bet norisi j iek tiek pavairinti. O kaip
atrodyt programa, jeigu loim bt ne 1, o 10? Arba 100? Tam tikslui paraykite dar vien
cikl. Pilnas programos kodas atrodo taip:
$spejimas = array();
if (is_int($_GET['x1']) && $_GET['x1'] <= 9) {
$spejimas[] = $_GET['x1'];
}
if (is_int($_GET['x2']) && $_GET['x2'] <= 9) {
$spejimas[] = $_GET['x2'];
}
if (is_int($_GET['x3']) && $_GET['x3'] <= 9) {
$spejimas[] = $_GET['x3'];
}
if (is_int($_GET['x4']) && $_GET['x4'] <= 9) {
$spejimas[] = $_GET['x4'];
}
if (is_int($_GET['x5']) && $_GET['x5'] <= 9) {
$spejimas[] = $_GET['x5'];
}
if (is_int($_GET['x6']) && $_GET['x6'] <= 9) {
$spejimas[] = $_GET['x6'];
}
$losimu_skaicius = 100;
$laimingi_bilietai = 0;
for ($losimai=1; $losimai <= $losimu_skaicius; $losimai++) {
$atspeta = 0;
$losimas = array();
for ($i=0; $i <= 5; $i++) {
97
$skaicius = rand(0,9);
// funkcija rand() grina atsitiktin skaii,
// iuo atveju intervale 0-9
$losimas[] = $skaicius;
if ($skaicius == $spejimas[$i]) { $atspeta++; }
echo "Spjami skaiiai: " . implode(" ", $spejimas) . "<br />";
}
echo "Loimo skaiiai: " . implode(" ", $losimas) . "<br />";
echo "Atspta skaii: " . $atspeta . "<br />";
if ($atspeta>= 2) {
echo "Js laimjote";
$laimingi_bilietai++;
} else {
echo "Js nelaimjote";
}
}
echo "<hr />"; echo "Laiming biliet: " . $laimingi_bilietai;
Ekrane matyti kiekvieno loimo statistika paioje pabaigoje kiek biliet laimta i vis
loim, jeigu skaiiuotumte, kad turjote tik po vien kiekvieno loimo biliet su tais paiais
skaiiais.
4.6.
Pagal anksiau sukurt PHP kod turite gauti rezultat (4.6.3 pav.).
99
4.7.
return $vidurkis;
}
Funkcijos ikvietimas ir jos panaudojimas, kai kiekvienam parametrui priskiriamos
reikms pagal nutyljim:
functionSkaiciausKvadratas ($skaicius = 2) {
return $skaicius * $skaicius;
}
$kvadratas = SkaiciausKvadratas(5); // funkcija grina 25
$kvadratas = SkaiciausKvadratas();
// funkcija grina 4, nes skaiiuoja kvadrat i 2
4.8.
sesijos sukrimas;
sesijos ubaigimas.
I prisijungimo formos (4.8.1 pav.) PHP skript perduodami trys formos parametrai
kintamieji: login, password ir submit. Naudojant formos kintamj perdavimo metod POST,
sutrumpintas PHP skripto tekstas atrodys taip:
session_start();
$error = ""; // klaidos tekstas - bendru atveju is kintamasis tuias
if ($_POST['submit'] == "Prisijungti") {
// jeigu paspaustas mygtukas "Prisijungti"
if ($_POST['login'] == "admin" && $_POST['password'] == "admin123") {
$_SESSION['username'] = "admin";
} else {
$error = "Neteisingi prisijungimo duomenys";
}
}
if ($_SESSION['username'] == "admin") {
echo "Sveiki, jums prieinamos administratoriaus funkcijos...";
// parodomas administratoriaus meniu
} else {
echo "<form> ... </form>"; // ukraunama visa prisijungimo forma
if ($error != "") { echo $error; }
}
102
4.9.
103
paprasiausias operacijas.
Uduotis. Inagrinkite pavyzdius ir ibandykite praktikai:
Pvz. 1. Slygos sakinys (4.10.1 pav.):
104
<html>
<body>
<scripttype="text/javascript">
var d = newDate();
vartime = d.getHours();
if (time< 10)
{
document.write("<b>Labas rytas</b>");
}
</script>
<p>is pavyzdys demonstruoja slyg If.</p>
<p>Jei laikas Js naryklje maesnis nei 10, ives "Labas rytas" </p>
</body>
</html>
110
Masyv funkcijos:
concat() sujungia kelis masyvus;
join() sujungia masyvo elementus eilut;
pop() imeta paskutin masyvo element;
push() prideda nauj element masyv;
reverse() sukeiia masyvo elementus vietomis
shift() imeta pirm masyvo element;
slice() paymi masyvo elementus;
sort() riuoja masyvo elementus didjimo/majimo tvarka;
splice() prideda element antr pozicij;
toString() paveria masyv eilut;
unshift() prideda nauj element masyvo pradi.
Pvz. 2. Funkcija concat():
<html>
<body>
<scripttype="text/javascript">
varparents = ["Jani", "Tove"];
varbrothers = ["Stale", "Kai Jim", "Borge"];
varchildren = ["Cecilie", "Lone"];
varfamily = parents.concat(brothers, children);
document.write(family);
</script>
</body>
</html>
Pvz. 3. Funkcija reverse():
<html>
<body>
<scripttype="text/javascript">
varfruits = ["Banana", "Orange", "Apple", "Mango"];
document.write(fruits.reverse());
111
</script>
</body>
</html>
Pvz. 4. Funkcija join():
<html>
<body>
<scripttype="text/javascript">
varfruits = ["Banana", "Orange", "Apple", "Mango"];
document.write(fruits.join() + "<br />");
document.write(fruits.join("+") + "<br />");
document.write(fruits.join(" and "));
</script>
</body>
</html>
Pvz. 5. Funkcija pop():
<html>
<body>
<scripttype="text/javascript">
varfruits = ["Banana", "Orange", "Apple", "Mango"];
document.write(fruits.pop() + "<br />");
document.write(fruits + "<br />");
document.write(fruits.pop() + "<br />");
document.write(fruits);
</script>
</body>
</html>
Pvz. 6. Funkcija push():
<html>
<body>
<scripttype="text/javascript">
varfruits = ["Banana", "Orange", "Apple", "Mango"];
document.write(fruits.push("Kiwi") + "<br />");
document.write(fruits.push("Lemon","Pineapple") + "<br />");
document.write(fruits);
</script>
</body>
</html>
Naudodamiesi pavyzdiais, atlikite ias uduotis:
1. Duotas sveik skaii masyvas i deimties element A(10). Rasti didiausi skaii ir j
sumainti perpus. Spausdinti masyvus prie ir po pakeitimo.
112
vartoday = newDate()
var d1 = newDate("October 13, 1975 11:13:00")
var d2 = new Date(79,5,24)
var d3 = new Date(79,5,24,11,33,0)
Uduotis. Inagrinkite ir praktikai ibandykite pavyzdius:
Pvz. 1. Sukuriamas Date objektas su konkreia data (2010 vasario 14):
varmyDate=newDate();
myDate.setFullYear(2010,02,14);
Pvz. 2. Nustatomas Date objektas 5 dienas priek:
varmyDate=newDate();
myDate.setDate(myDate.getDate()+5);
Pvz. 3. iandienos datos palyginimas su 2010 vasario 14 diena:
varmyDate=newDate();
myDate.setFullYear(2010,02,14);
113
vartoday = newDate();
if (myDate>today)
{
alert("Todayisbefore 14th January 2010");
}
else
{
alert("Todayisafter 14th January 2010");
}
Pvz. 4. Datos ir laiko nustatymo rodymas puslapyje:
<html>
<body>
<scripttype="text/javascript">
vard=newDate();
document.write(d);
</script>
</body>
</html>
Pvz. 5. Laikrodio nustatymo rodymas puslapyje (4.13.1 pav.):
<html>
<head>
<scripttype="text/javascript">
functionstartTime()
{
vartoday=newDate();
varh=today.getHours();
varm=today.getMinutes();
vars=today.getSeconds();
// add a zeroinfrontofnumbers<10
m=checkTime(m);
s=checkTime(s);
document.getElementById('txt').innerHTML=h+":"+m+":"+s;
t=setTimeout('startTime()',500);
}
functioncheckTime(i)
{
if (i<10)
{
i="0" + i;
}
return i;
114
}
</script>
</head>
<bodyonload="startTime()">
<divid="txt"></div>
</body>
</html>
115
Pvz. 6. Programos kodas, kai ujus pele ant paveiksllio pasikeiia uraas. Priklausomai nuo
to, kur bus pels ymeklis, matysite kit planet apibdinim. Paspaudus pels klavi, bus
ikviestas paveiksllis su planetos atvaizdu (4.13.3 pav.):
<html>
<head>
<scripttype="text/javascript">
functionwriteText(txt)
{
document.getElementById("desc").innerHTML=txt;
}
</script>
</head>
<body>
<imgsrc ="planets.gif" width ="145" height ="126" alt="Planets"
usemap="#planetmap" />
<mapname="planetmap">
<areashape ="rect" coords ="0,0,82,126"
onmouseover="writeText('Saul ir Jupiteris yra didiausi ms Sauls sistemos
objektai.')"
href ="sun.htm" target ="_blank" alt="Sun" />
<areashape ="circle" coords ="90,58,3"
onmouseover="writeText('Merkurijaus planet yra sunku nagrinti i ems, nes ji yra
taip arti Sauls.')"
href ="mercur.htm" target ="_blank" alt="Mercury" />
<areashape ="circle" coords ="124,58,8"
onmouseover="writeText('Venera yra vadinama ems dvyne seserim, nes yra ariausiai
.')"
href ="venus.htm" target ="_blank" alt="Venus" />
</map>
<p id="desc">Nuveskite pels ymekl vir sauls ir planet ir pamatysite skirtingus
apraymus.</p>
</body>
</html>
116
ioje formoje spragteljus reset tipo mygtuk Trinti, bus itrinami visi teksto laukeliuose
rayti duomenys, o submit tipo mygtukas Registruotis valdo i duomen perdavim konteinerio
form parametro action nurodomai programai. Kai io parametro reikm yra elektroninio pato
adresas, formos element pavadinimai ir parinktos j reikms siuniamos parametro nurodytu
adresu. Pvz:
119
Uduotys
1. Naudodamiesi lenteli ir eilui apraymo priemonmis, pakeiskite 1 pvz. pateikto
tinklalapio apraym, kad jo ivaizda bt kaip 4.15.3 paveiksllyje:
120
Visi objektai yra kuriami naudojant konstruktori funkcij, kuri parengia objekt
darbui. Konstruktoriai JavaScript kalboje suteikia tokias galimybes, kokias kitose kalbose
suteikia klass.
Sakykim, apraytas objektas:
personObj.firstname="John";
personObj.lastname="Doe";
personObj.age=30;
personObj.eyecolor="blue";
document.write(personObj.firstname);
Aprayto objekto rezultatas bus John.
Nauj objekt galima sukurti dviem bdais: tiesioginiu bdu ir naudojant konstruktori.
Uduotis. Inagrinkite ir praktikai pritaikykite pateiktus pavyzdius:
Pvz. 1. Tiesioginiu bdu sukurtas objektas:
<html>
<body>
<scripttype="text/javascript">
personObj={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"}
document.write(personObj.firstname + " is " + personObj.age + " yearsold.");
</script>
</body>
</html>
Pvz. 2. Objektas, sukurtas naudojant konstruktori:
<html>
<body>
<scripttype="text/javascript">
functionperson(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
}
myFather=new person("John","Doe",50,"blue");
document.write(myFather.firstname + " is " + myFather.age + " yearsold.");
</script>
</body>
</html
122
123
LITERATROS ALTINIAI
1. Kaklauskas L. Tinklalapiai ir j krimas. iauliai, 2001. ISBN 9955418508.
2. PHP bendruomen. [interaktyvus] [irta 2011-11-17]. Prieiga per internet:
<www.php.lt>
3. PHP
komandos.
[interaktyvus]
[irta
2011-10-17].
Prieiga
per
internet:
<http://ik.su.lt/~programavimas/php_komandos.php>
4. Programavimo pamokos lietuvikai. [interaktyvus] [irta 2011-09-26]. Prieiga per
internet: < http://manualai.lt/php.html>
5. Programavimo pamokos. [interaktyvus] [irta 2011-11-17]. Prieiga per internet:
<www.programva.com>
6. Robbins J. N. Tinklalapi dizainas. (X)HTML kalbos, pakopini stili ir tinklalapi
grafikos pradiamokslis. Kaunas: Smaltija, 2008. ISBN 9789955707479.
7. irvinskas P. PHP pamokos pradedantiesiems. Elektronin knyga [irta 2011-10-07].
Prieiga per internet: <http://www.skaitykIT.lt>
8. Vidinas A., Vitkut D. Interneto paslaugos ir svetaini krimas. Kaunas: Smaltija,
2009. ISBN 9789955707639.
9. w3schools konsorciumas. [interaktyvus][irta 2011-11-17]. Prieiga per internet:
<http://www.w3schools.com/>
10. iniatinklio technologijos. [interaktyvus] [irta 2011-10-02]. Prieiga per internet:
<http://www.internetotechnologijos.lt>
124
125
UDK 004.438(075.8)
Ri-121
ISBN 978-609-422-068-5
VILMA RIKEVIIEN
OBJEKTINIS
P R O G R A M AV I M A S
Mokymo(si) rinkinys