Download as pdf or txt
Download as pdf or txt
You are on page 1of 126

VILMA RIKEVIIEN

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

Parengta pagal 20072013 m. mogikj itekli pltros veiksm programos


2 prioriteto Mokymasis vis gyvenim (projekto kodas Nr. VP1-2.2-MM-07-K-01-027)
priemon Studij kokybs gerinimas, tarptautikumo didinimas

Spausdinti rekomendavo Marijampols kolegijos Ininerijos ir informacini technologij


katedra 2012 m. balandio 11 d. posdio sprendimu (protokolas Nr. 7)
Sudar

Vilma Rikeviien
Redagavo

Nijol Bagdonien
Recenzavo

informatikos ininerijos magistr Vida Undznien


Marijampols vietimo centro lektor

ISBN 978-609-422-068-5

Vilma Rikeviien, 2012


Piko valanda, 2012

TURINYS
PRATARM...................................................................................................................................................7
VADAS ....................................................................................................................................................... 8
1. OBJEKTINIO PROGRAMAVIMO PRINCIPAI.....................................................................................9
1.1.

Klass..........................................................................................................................................9

1.2.

Objektai ir klasi panaudojimas...............................................................................................12

1.3.

Paveldjimas.............................................................................................................................12

2. PHP KALBOS ISTORIJA IR PASKIRTIS.............................................................................................14


2.1.

PHP privalumai.........................................................................................................................14

2.2.

PHP kalbos sintaks..................................................................................................................15

2.3.

Kintamieji ir kintamj tipai....................................................................................................15

2.4. Teksto raymas narykls lange................................................................................................18


2.5.

PHP operatoriai.........................................................................................................................20

2.6.

Slygos sakiniai........................................................................................................................21

2.7.

PHP Swith ir ciklo sakiniai.......................................................................................................22

2.8.

PHPfunkcijos...........................................................................................................................23

2.8.1.

Eilui tvarkymo funkcijos..............................................................................................25

2.8.2.

PHP datos ir laiko funkcijos.............................................................................................28

2.8.3.

PHP masyv funkcijos (array functions)..........................................................................29

2.9.

Specialieji PHP masyvai...........................................................................................................32

2.9.1.

$_GET masyvas................................................................................................................32

2.9.2.

PHP$_POST masyvas.....................................................................................................33

2.9.3.

PHP$_REQUEST masyvas.............................................................................................34

2.10.

Form duomen patikrinimas.................................................................................................35

2.11.

Duomen isaugojimas serveryje...........................................................................................37

2.12.

Form apdorojimas Formos atsakymo siuntimas el. patu..................................................40

2.12.1.

Formos atsakymo siuntimas el. patu.............................................................................40

2.12.2. Antrats.........................................................................................................................40
2.12.3.

El. pato adreso teisingumo tikrinimas...........................................................................43

2.12.4.

El. laiko siuntimas, panaudojant formos duomenis......................................................43

2.12.5.

El. laiko siuntimo testavimas........................................................................................44

2.13. Formos duomen raymas failus.........................................................................................44


2.13.1.

Skaitymas ir raymas failus..........................................................................................44

2.13.2. Tekstin duomen baz..................................................................................................45


2.14.

PHP slapukai (Cookies)......................................................................................................46

2.15.

PHP sesijos.............................................................................................................................46

3. JAVASCRIPT KALBOS PASKIRTIS....................................................................................................48


3.1.

Pagrindiniai JavaScript elementai............................................................................................48

3.2.

Operatoriai................................................................................................................................49

3.3.

Slygos tikrinimo operatoriai...................................................................................................51

3.4.

Ciklo operatoriai.......................................................................................................................52

3.5.

JavaScript objektai....................................................................................................................53
5

3.5.1.

Objektas Array..................................................................................................................53

3.5.2.

Objektinis narykls modelis. JavaScript objekt hierarchija..........................................54

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

Baziniai JavaScript vykiai........................................................................................................68


3.6.1.

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.

vykiai OnMouseOver ir OnMouseOut............................................................................73

3.7.

Iskleidiamieji sraai.............................................................................................................73

3.8.

Intarp funkcij derinimas........................................................................................................77

4. PRAKTINS UDUOTYS....................................................................................................................80
4.1.

Praktin uduotis. HTML pagrindai.........................................................................................80

4.2.

Praktin uduotis. PHP pradmenys, PHP kintamieji................................................................87

4.3.

Praktin uduotis. PHP masyvai. PHP ciklai, eiluts...............................................................89

4.4.

Praktin uduotis. PHP skaitymas ir raymas /i failus...........................................................94

4.5.

Praktin uduotis. Loterija........................................................................................................95

4.6.

Praktin uduotis. Formos ir j apdorojimas............................................................................98

4.7.

Praktin uduotis. PHP funkcij raymas...............................................................................100

4.8.

Praktin uduotis. Vartotoj sesijos........................................................................................101

4.9.

Praktin uduotis. JavaScript pradmenys, JavaScript kintamieji...........................................103

4.10.

Praktin uduotis. JavaScript operacijos..............................................................................104

4.11.

Praktin uduotis. JavaScript funkcijos................................................................................107

4.12.

Praktin uduotis. JavaScript masyvai.................................................................................110

4.13.

Praktin uduotis. JavaScript datos ir laiko objektai, vykiai...............................................113

4.14.

Praktin uduotis. JavaScript narykls, langai....................................................................117

4.15.

Praktin uduotis. JavaScript formos...................................................................................119

4.16.

Praktin uduotis. JavaScript objekt masyvo krimas.......................................................121

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.

1. OBJEKTINIO PROGRAMAVIMO PRINCIPAI


Objektinis programavimas OOP (angl. Object-Oriented Programming). Pagrindin OOP
idja duomen ir funkcij, atliekani veiksmus su iais duomenimis apjungimas vien
visum-objekt:

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

Klas rinkinys funkcij ir kintamj, susijusi tarpusavyje.


Savybs klasje naudojami kintamieji.
Metodai klasje naudojamos funkcijos.
Konstruktorius funkcija vykdoma sukuriant klas (sukuriant objekt).
Klass sintaks apibriama odiu class, tada nurodomas klass pavadinimas ir vliau
lautiniuose skliaustuose { } raomas visas klass tekstas.
Pvz.
// pirmiausia klas darbui su vartotoj duomenimis,
// kurie saugomi duomen bazje
class Vartotojai {
function SukurtiVartotoja($vardas, $slaptazodis, $el_pastas) {
$query = "insert into vartotojai ...";
9

// ... funkcija vartotojo sukrimui


}
function VartotojoDuomenys($id) {
$query = "select * from vartotojai where id = $id";
// ... i duomen bazs paimami vartotojo duomenys
}
function PrisijungimoDuomenys($vardas, $slaptazodis) {
$query = "select id from vartotojai
where vardas = '".$vardas."'
and slaptazodis = '".$slaptazodis."'";
// ... patikriname, ar vartotojas ved
// teisingus prisijungimo duomenis
}
}
/* --------------------------------------- */
// antra klas - nauding nuorod talpinimas ir grupavimas
class Nuorodos {
function IterptiNuoroda($pavadinimas, $kategorija,
$adresas, $aprasymas) {
$query = "insert into nuorodos ...";
// ... terpia nuorodos ra duomen baz
}
function NuoroduKategorijos() {
$query = "select * from nuorodu_kategorijos order by pavadinimas";
// ... itraukia i duomen bazes nuorod kategorijas pagal abcl
}
function IdomiausiosNuorodos() {
$query = "select nuorodos.pavadinimas, count(*) as ivertinimai
from nuorodu_ivertinimai
join nuorodos on nuorodu_ivertinimai.nuorodos_id = nuorodos.id
group by nuorodos.pavadinimas order by ivertinimai
limit 0,10";
// ... sudtingesn uklausa duomen baz
// TOP 10 nuorod pagal lankytoj vertinimus
}
}
/* --------------------------------------- */
// ir galiausiai klas, susijusi su komentarais
class Komentarai {
function IterptiKomentara($nuoroda_id, $vartotojas_id, $komentaras) {
$query = "insert into nuorodu_komentarai ...";
// ... terpia vartotojo komentar prie nuorodos
}
function NaujausiKomentarai() {
$query = "select * from nuorodu_komentarai
order by id desc limit 0,10";
10

// ... itraukia i duomen bazs 10 naujausi komentar


}
function NuorodosKomentarai($nuoroda_id) {
$query = "select * from nuorodu_komentarai
where nuoroda_id = $nuoroda_id
order by id desc limit 0,10";
// ... itraukia i duomen bazs komentarus
// prie konkreios nuorodos
}
}
Be funkcij (arba kitaip klass metod), klas gali turti ir savo vidinius kintamuosius
arba klass atributus:
Pvz.
// pavyzdys klas, skirta darbui su duomen baze
class DuomenuBaze {
var $serveris = "localhost";
var $vartotojas = "admin";
var $slaptazodis = "admin12345";
var $duomenu_baze = "projektas";
var $prisijungimas;
function Prisijungimas() {
$this>prisijungimas = mysql_connect($this->serveris,
$this>vartotojas, $this>slaptazodis);
mysql_select_db($this>$duomenu_baze);
// ... funkcija prisijungimui prie duomen bazs serverio
}
}
Taip pat svarbu, kaip kreiptis tuos kintamuosius. Tam vartojamas odelis this bei
simboli junginys >. Lygiai taip kreipiamasi ir klass metod, jeigu j reikia ikviesti i kito
metodo:
Pvz.
// pavyzdys klas, skirta darbui su duomen baze
class DuomenuBaze {
var $serveris = "localhost";
var $vartotojas = "admin";
var $slaptazodis = "admin12345";
var $duomenu_baze = "projektas";
var $id;
var $rezultatas;
function Prisijungimas() {
$this>id = mysql_connect($this>serveris,
$this>vartotojas, $this>slaptazodis);
mysql_select_db($this>$duomenu_baze);
// ... funkcija prisijungimui prie duomen bazs serverio
11

}
function Uzklausa($query) {
$this>Prisijungimas();
$this>rezultatas = mysql_query($query);
// ... tolimesnis uklausos rezultat apdorojimas
}
}

1.2.

Objektai ir klasi panaudojimas

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 KALBOS ISTORIJA IR PASKIRTIS

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

PHP kalba turi iuos privalumus:


PHP kalbos programos gali bti vykdomos vairi operacini sistem (Windows, Unix,
Linux ir t. t.);
atvirojo kodo principas;
dauguma sintakss taisykli ir naudojam struktr perimtos i populiari programavimo
kalb (C++, JAVA);
pritaikyta aprayti informaciniams ryiams su duomen bazi valdymo sistema MySQL.
iuo metu PHP programiniai intarpai naudojami milijonuose interneto svetaini. Dabar
tai galinga objektinio programavimo kalba, kuria galima aprayti vairius sudtingus interneto
technologij procesus. Naujausi PHP diegimo program paket galima parsisisti i svetains
http://ww.php.net ir diegti serveryje. Tinklalapi failai su PHP program intarpais saugomi
failuose su vardo pltiniu php.

14

2.1.1 pav. Tipinis PHP dokument uklaus aptarnavimo ciklas

Toki uklaus tipin aptarnavimo cikl iliustruoja 2.1.1 pav.


1.

narykls adreso langelyje nurodyto PHP tinklalapio paiekos uklausos siuntimas

server;
2.

uklausos perdavimas PHP intarp aptarnavimo program paketui (PHP

procesoriui);
3.

tinklalapio skaitymas i diskins serverio atminties;

4.

tinklalapyje rayt PHP instrukcij analiz ir vykdymas;

5.

tinklalapio su PHP instrukcij vykdymo rezultatais perdavimas server;

6.

tinklalapio siuntimas narykls kompiuter.

2.2.

PHP kalbos sintaks

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.

Kintamieji ir kintamj tipai

Viena svarbiausi ir esmini programavimo kalbos struktr yra kintamieji. Pagrindin


kintamojo paskirtis saugoti duomenis, kiekvienas kintamasis skripto vykdymo momentu gyja
tam tikr reikm, kuri, vykdant skript, gali keistis. Kintamieji gali bti gaunami i HTML
form, yra sukuriami automatikai programos vykdymo pradioje. Jie atlieka labai svarb
vaidmen, nes perduoda vartotojo vest informacij. Kintamasis apibriamas nurodant jo vard.
Iskirtinis PHP kintamojo poymis yra enklas "$". Kintamj tipai:
Integer; // sveikojo skaiiaus tipas
Floating-point numbers; // slankaus kablelio skaiiai, arba kitaip realieji skaiiai
String; // eiluts tipas
15

Array; // struktrinio kintamojo tipas masyvas


Object; // objekto tipas (objektiniam programavimui)
Daniausiai kintamojo tipas yra nustatomas ne paties programuotojo, o skripto
kompiliatoriaus. Jis pats priskiria kintamajam tinkam tip. Jei reikia keisti kintamojo tip
programos metu, tai galima padaryti naudojant settype() funkcij.
Integer (sveikojo skaiiaus tipas). is tipas priskiriamas kintamajam iais atvejais:
$a= 1234; # deimtainis skaitmuo
$a= 123; # neigiamas skaitmuo
$a= 0x12; # eioliktainis skaiiaus pavidalas (lygus 18 deimtainje sistemoje)
Floating-point numbers (slankaus kablelio skaiiai, arba kitaip realieji skaiiai). Du
bdai, vaizduojantys realj skaii:
$a= 1.234;
$a= 1.2e3;
String (eilutes tipas). String tipas gali bti vaizduojamas programavimo kalbose dviem
bdais:
Viengubose kabutse pvz.: a$='Testas';
Dvigubose kabutse pvz.: a$="Kitas testas";
Array (struktrinio kintamojo tipas masyvas). Vienmatis masyvas, kur galima
sivaizduoti kaip vien ilg sek element, kurie susij savo kintamj tipais.
Pvz.
savaits dien masyvas: ["pirm", "antr", "trec", "ketvr", "penkt", "sest", "sekm"]
$savdienos[0]="pirm";
$savdienos[1]="antr";
$savdienos[2]="trec";
$savdienos[3]="ketvr";
$savdienos[4]="penkt";
$savdienos[5]="sest";
$savdienos[6]="sekm";
Pastaba. PHP masyvo pirmojo elemento indeksas yra 0, o ne 1.
vienmat masyv rayti elementus galima ir iuo bdu:
$savdienos[ ]="pirm"; // 0 elementas
$savdienos[ ]="antr"; // 1 elementas
$savdienos[ ]="trec"; // ir t. t.
$savdienos[ ]="ketvr";
$savdienos[ ]="penkt";
$savdienos[ ]="sest";
$savdienos[ ]="sekm";
Dvimatis masyvas (matrica) vaizduojamas panaiai:
$skaicius[1][2] = $kitas; // dvimatis masyvas
16

Daugiamaiai (trimaiai ir t.t.) masyvai vaizduojami analogikai:


$masyvas[1][2][3] = $kitas; // trimatis masyvas
Object (objekto tipas). Sukurti objekt ir vliau j naudoti galima taip:
Class objektas
{
Function parasyti()
{
echo "SVEIKAS PASAULI";
}
$naujas = & new objektas;
$naujas> parasyti();
}
PHP kalboje nra grietos kintamj tip kontrols. Kintamj tipai nustatomi
priklausomai nuo jiems suteikt reikmi tipo, o jeigu vliau kintamajam suteikiama kito tipo
reikm, pakinta ir kintamojo tipas. Kintamojo tipas nurodo, kaip jo reikm saugoma
kompiuterio atmintinje, kokius veiksmus jai leidiama taikyti.
Programos danai bna vaizdesns, kai jose naudojamos konstantos. Tai vardais
nurodomos specialios paskirties reikms, kurias programoje keisti draudiama. Konstantas
sukuria funkcija define:
Define ("Konstantos vardas", Reikm);
Siekiant, kad konstant vardai geriau

isiskirt

program

teksto,

joms

rekomenduojama skirti didiosiomis raidmis raomus vardus ir juose nenaudoti priedlio $.


Konstant apraymo pavyzdiai:
define ("KAINA", 100.25);
define ("KIEKIS", 10);
define ("PVM", 0.18);
Apraant duomen mainus su iore naudojamos simboli eiluts, o aritmetinius
skaiiavimus galima taikyti tiktai skaiiams, todl aktuali duomen tip keitimo problema.
Programavimo kalbose su grieta tip kontrole tip keitimo veiksmais turi rpintis ir juos
aprayti programuotojas. Programose PHP kalba plaiai naudojamas automatinis tip keitimas,
kai duomen interpretavimo bdas priklauso nuo konteksto. Dvivieiuose aritmetiniuose
veiksmuose taikomos tokios automatinio tip keitimo taisykls:

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;

// Automatikai parenkamas sveikasis tipas

$suma = 0.00;

// Automatikai parenkamas realusis tipas

$viso = (double) $kiekis;

// Tiesiogiai nurodomas realusis tipas

$tekstas = (string) $suma;

// Tiesiogiai nurodomas eiluts tipas

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;

// Rezultatas: "Firma 'Aukso veris' "

$n = 5;
$s = 'Gauta: ' . $n . ' kg ' ;

//Rezultatas: 'Gauta: 5 kg'

t = 3 . 2.74

// Rezultatas: "32.74"

2.4.

Teksto raymas narykls lange

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!';

// Dviej eilui perdavimas naryklei

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\" ";

// Teisingas simboli " terpimas

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

Daniausiai naudojami terpiam reikmi tip ymjimo simboliai aprayti 2.4.1


lentelje. J taikymo pavyzdiai:
printf('Kodas: %3d.\ 5);
$metai= 2004; $m= 9; $d= 30;
printf('%04d-%02d-%02y', $metai, $m,
printf ('Ilaidos: %5.2f Lt.', 9.2);

$d);

// Reikm: Kodas 005


// Kintamj reikmi apraymas
//Reikm: 2004-09-30
// Ilaidos: 9.20 Lt.

2.4.1 lentel. terpiam reikmi tip ymjimo simboliai


Simbolis

ymimo reikms tipo savybs

c
d arba i
e arba f
s

Simbolis, kurio kod nurodo terpiama reikm


Sveikasis skaiius
Realaus tipo skaiius su trupmenine dalimi
Simboli eilut

Funkcija print_r naudojama pateikiant narykls ekrane sudtingos struktros duomenis.


Jos argumentai gali bti ne tiktai skaii ir teksto reikms, bet ir sudtingesns duomen
struktros masyvai bei objektai. Todl i funkcija taip pat naudojama ir programoms derinti,
tarpiniams j darbo rezultatams parodyti.

2.5.

PHP operatoriai

Priskyrimo, palyginimo ir loginiai operatoriai pateikti 2.5.1, 2.5.2, 2.5.3 lentelse.


2.5.1 lentel. Priskyrimo operatoriai
Operatorius

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

2.5.2 lentel. Lyginimo operatoriai


Operatorius
==
!=

20

Apraymas
Yra lygu
Nra lygu

Pavyzdys
5= =8 grina false (netiesa)
5!=8 grina true (tiesa)

===

Yra lygu (tikrina ne tik reikmes,


bet ir kintamj tipus)

$a = '1'; // kadangi kabutse, tai bus ne skaiius,


o teksto tipo
$b = 1; // skaiiaus tipo kintamasis
$a = = = $b grina false (netiesa)

!= =

Nra lygu (tikrina ne tik


reikmes, bet ir kintamj tipus)

<>
>
<
>=
<=

Nra lygu
Yra daugiau u
Yra maiau u
Yra daugiau arba lygu u
Yra maiau arba lygu u

$a = '1'; // kadangi kabutse, tai bus ne skaiius,


o teksto tipo
$b = 1; // skaiiaus tipo kintamasis
$a != = $b grina true (tiesa)
5<>8 grina true (tiesa)
5>8 grina false (netiesa)
5<8 grina true (tiesa)
5>=8 grina false (netiesa)
5<=8 grina true (tiesa)

2.5.3 lentel. Loginiai operatoriai


Operatorius

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

PHP kalboje naudojami slygos tikrinimo 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.

PHP Swith ir ciklo sakiniai

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

toliau veikia kaip paprastas while;

for ciklas, kuris vykdo kod nurodyt kiek kart;

switch ciklas, panaus if... elseif... elseif... else...;

foreach ciklas, kuris vykdo kod kiekvienam masyvo elementui.

while ciklo sintaks:


While (slyga ) {
Kodas, kuris bus vykdomas;
}
do.. while ciklo sintaks:
do {
kodas, kuris bus vykdomas;
} while (slyga);
For ciklo sintaks:
for (pradin_reikm; slyga; padidinimas) {
kodas, kuris bus vykdomas
}
Pradin_reikm ioje vietoje danai nurodomas kintamasis ir jo pradin reikm. Tai
taip pat gali bti bet koks PHP kodas, kuris bus vykdytas prie pradedant cikl. Slyga ioje
vietoje yra tikrinama, ar tsti cikl: jei joje raytas kodas grina reikm true (tiesa), tada cikle
esantis kodas bus vykdomas. Jei slyga grina reikm false (netiesa), tada ciklas yra
nutraukiamas.

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

PHP kalba turi labai daug bazini funkcij:

masyvo funkcijos;
23

kalendoriaus funkcijos;

datos funkcijos;

katalog / aplankal funkcijos;

klaid funkcijos;

fail sistem funkcijos;

filtr funkcijos;

FTP funkcijos;

HTTP funkcijos;

MAIL funkcijos;

matematins funkcijos;

MySQL funkcijos;

String / eilui formatavimo funkcijos;

archyv / zip 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)

Funkcijos grinama reikm


Analogika funkcijai strcmp, tiktai vienodai interpretuoja didisias ir
masias raides
Teigiama, kai arg1>arg2, neigiama, kai arg1<arg2, ir 0 kai ios
eiluts vienodos
Eiluts arg1 odis (fragmentas), kurio pabaig nurodo vienas i eilutje
arg2 ivardyt skirtuk (kartojant funkcij vien tiktai su skirtuk eilute
parametr srae, i anksiau tvarkytos eiluts atskiriami nauji jos
fragmentai)
Skaiius, kuris nurodo argumento eiluts arg simboli skaii

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)

Skaiius, kuris eiluts arg2 pirmojo terpimo eilutje arg1 vietos


indeks, arba reikm false, kai arg2 nra eiluts arg1 dalis
Analogika funkcijai strpos, tiktai vienodai interpretuoja didisias ir
masias raides
Pertvarkyta eilut arg3, kurioje argumento arg1 nurodomi fragmentai
pakeiiami argumento arg2 nurodomu fragmentu
Eilut arg2, jeigu ji yra eilutje arg1, ir false, jeigu ten jos nra
Ilgio n argumento eiluts arg1 dalis, pradedant simboliu su indeksu p
(kai neprivalomas argumentas n nenurodomas, atskiriamos dalies
pabaiga sutampa su eiluts arg1 pabaiga)
Pertvarkyta eilut arg1, kurioje n simboli, pradedant simboliu su
indeksu p, keiiami eiluts arg2 simboliais (kai neprivalomas
argumentas n nenurodomas, pakeitimas atliekamas iki eiluts arg1
pabaigos)
Pertvarkyta argumento eilut, kurios pradioje ir pabaigoje paalinami
tarpo simboliai
Pertvarkyta argumento eilut, kurioje visos maosios raids pakeistos
didiosiomis
Pertvarkyta argumento eilut, kurioje visos didiosios raids pakeistos
maosiomis
Pertvarkyta argumento eilut, kurioje paalintos HTML kalbos yms

Pavyzdiui, interneto parduotuvi svetainse reikia i usakym formos laukelyje vesto


pageidaujamo preki srao atrinkti atskirus preki pavadinimus. Tam naudojama funkcija
strtok, kurios pirmasis argumentas nurodo analizuojam eilut, o antrasis j sudarani
element skirtuk sra. Funkcijos reikm grina pirmj analizuojamos eiluts element.
Jeigu pageidaujama irinkti i eiluts ir kitus elementus, reikia pakartotinai kreiptis funkcij,
nurodant tiktai skirtuk rinkin. Funkcija atsimena, kokia anksiau tirtos eiluts dalis buvo
apdorota ir tsia jos likusios dalies analiz. Kai irenkami visi tiriamos eiluts elementai,
funkcija grina tuios eiluts reikm. Atsivelgiant i savyb, galima aprayti vis jos
element irinkim ciklu while.
Pvz.
$pavadinimas = strtok($eil, ",");
while ($pavadinimas != ""){
echo $pavadinimas, "<br>";
$pavadinimas = strtok(",");
}
Pavyzdyje apraoma, kaip i eiluts $eil irenkami ir parodomi narykls ekrane
kableliais atskirti jos elementai. Atskiriamo elemento reikm perduodama kintamajam
$pavadinimas ir, kol tai nra tuia eilut, operatoriumi echo perduodama narykls ekran.
Apraytas eiluts element irinkimo bdas tinka tiktai tada, kai tvarkomoje eilutje nebna
greta rayt dviej skirtuk, nes tada taip pat grinama tuios eiluts reikm, kurios negalima
atskirti nuo eiluts pabaigos poymio.
26

Renkant statistinius duomenis ir atliekant duomen paiek, danai tenka tikrinti, ar


simboli eilutse yra tam tikras odis arba kuris nors kitas poymis. Taip tikrinti lengviausia
naudojant funkcij strstr, kuri grina reikm false, kai antrojo argumento eilut nra pirmojo
argumento eiluts dalis, o kitu atveju grina antrojo argumento reikm. ios funkcijos
naudojimo pavyzdys:
$fp = "Geras miestas Kaunas";
$tempo = strstr($fp, "Kaunas");
if ($tempo )
echo "Eilutje pavadinimas ", $tempo, "yra.";
else
echo "Eilutje pavadinimo ", $tempo, "nra."
Vietoje funkcijos strstr galima naudoti funkcij strpos, kuri grina antrojo argumento
pirmojo terpimo pirmojo argumento eilutje vietos indeks arba login reikm false, kai antrojo
argumento eilut nra pirmojo argumento dalis. Kai tikrinamas fragmentas yra analizuojamos
eiluts pradioje, funkcijos grinamas indeksas yra reikm 0, kuri interpretuojama kaip false.
Todl, naudojant strpos vietoj strstr funkcijos grinamai reikmei patikrinti, reikia taikyti ne
lygybs veiksm ==, o tapatumo kontrols veiksm, kuris ymimas trij simboli grupe ===. is
veiksmas leidia atskirti sveikj reikm 0 nuo logins reikms false, nes jos yra skirting tip.
Pvz.
$vardas = "Vytautas Didysis";
// Tiriama eilut
$rezultatas = strpos($vardas, "V"); // Raids "V" indeksas eilutje
if ($rezultatas == false
)
// Tapatumo kontrol
echo "Raids V varde ", $vardas, " nra.";
else
echo "Raids indeksas: ", $rezultatas;
Naudojant funkcij strpos kartu su eilui fragment atskyrimo funkcija substr ir kitomis
eilui tvarkymo funkcijomis, galima aprayti sudtingus eilui analizs udavinius.
Pavyzdiui, konkretaus odio pasikartojim skaiiaus eilutje skaiiavimas apraomas taip:
$sk = 0;
$fp = "Kaunas, Kaunas ir tiktai Kaunas";
$tempo = strpos($fp, "Kaunas")
while (!($tempo === false)) {
$fp = substr($fp, ($tempo+6));
$tempo = strpos($fp, "Kaunas");
$sk ++;
}
echo "$sk"

// odio pasikartojim skaitiklis


// Tiriama eilut
//odio vietos indeksas
//Ar odis eilutje yra?
//Itirtos dalies atmetimas
// odio vieta likusioje eiluts dalyje
//odio pasikartojim skaiiavimas
//Pasikartojim skaiius

27

2.8.2. PHP datos ir laiko funkcijos


Darbui su data PHP turi savo funkcij date (formatas). Funkcija naudojama laiko ir datos
parodymui vairiais formatais.
Formatai:
Y metai, pvz.: 2012
y metai, pvz.: 12
M menuo, pvz.: Bal
m menuo, pvz.: 10
D savaites diena, pvz.: Penkt
l savaites diena, pvz.: Penktadienis
d diena, pvz.:27
z metu diena, pvz.: 299
H valandos 24 val. formatu
h valandos 12 val. formatu
i minutes, pvz.: 5
s sekundes, pvz.: 40
a am/pm
Pavyzdyje pateiktas kodas, kuris interneto narykl perduos einamj dat (2.8.2.1
pav.):
<?php
function data_lt()
{
$menesis = date('n');
$mas_menesiai = array("Sausio", "Vasario", "Kovo", "Balandio", "Gegus",
"Birelio",
"Liepos","Rugpjio", "Rugsjo","Spalio", "Lapkriio", "Gruodio");
$data = date('Y ');
$data .= $mas_menesiai[$menesis-1];
$data .= date(' j \d.');
return $data;
}
echo data_lt();
?>

2.8.2.1 pav. Vaizdas naryklje

28

2.8.3.

PHP masyv funkcijos (array functions)

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()

Sukuria nauj masyv

array_change_key_case()

Grina t pat masyv, tik visas reikmes pertvarko didiosiomis arba


maosiomis raidmis

array_chunk()

Iskaido masyv gabalus

array_combine()

Sukuria nauj masyv, naudojant vien masyv raktams (indeksams), kit


reikmms

array_count_values()

Grina masyv su kiekvienos reikms buvimo vieta

array_diff()

Palygina dviej masyv reikmes ir grina skirtumus

array_diff_assoc()

Palygina dviej masyv raktus (indeksus) ir reikmes, grina skirtumus

array_diff_key()

Palygina dviej masyv raktus (indeksus) ir grina skirtumus

array_diff_uassoc()

Palygina dviej masyv raktus (indeksus) ir reikmes pagal vartotojo


pateikt funkcij, grina skirtumus

array_diff_ukey()

Palygina dviej masyv raktus (indeksus) pagal vartotojo pateikt funkcij


ir grina skirtumus

array_fill()

Upildo masyv reikmmis

array_filter()

Filtruoja masyvo elementus pagal vartotojo pateikt funkcij

array_flip()

Apkeiia vietomis masyvo raktus (indeksus) su j reikmmis. Reikms


tampa indeksais ir atvirkiai

array_intersect()

Palygina dviej masyv reikmes ir grina sutapimus

array_intersect_assoc()

Palygina dviej masyv raktus (indeksus) ir reikmes, grina sutapimus

array_intersect_key()

Palygina dviej masyv raktus (indeksus) ir grina sutapimus

array_intersect_uassoc()

Palygina dviej masyv raktus (indeksus) ir reikmes pagal vartotojo


pateikt funkcij, grina sutapimus

array_intersect_ukey()

Palygina dviej masyv raktus (indeksus) pagal vartotojo pateikt funkcij


ir grina sutapimus

array_key_exists()

Patikrina, ar masyve yra toks raktas (indeksas)

29

array_keys()

Grina visus masyvo raktus (indeksus)

array_map()

Siunia visas reikmes vien po kitos vartotojo pateikt funkcij, kuri


grina naujas reikmes

array_merge()

Sulieja kelet masyv vien

array_merge_recursive()

Sulieja kelet masyv vien

array_multisort()

Riuoja keli dimensij masyvus

array_pad()

terpia masyv nurodyt skaii element su nurodytomis reikmmis

array_pop()

Itrina paskutin masyvo element

array_product()

Apskaiiuoja masyvo reikmi sandaug

array_push()

Prideda vien ar kelias reikmes prie masyvo pabaigos

array_rand()

Grina vien ar kelis atsitiktinius raktus (indeksus) i masyvo

array_reduce()

Grina masyv kaip string tipo kintamj, pagal vartotojo pateikt funkcij

array_reverse()

Grina t pat masyv su atvirkia tvarka idstytais jo elementais

array_search()

Ieko masyve nurodyto rakto (indekso) ir grina jo reikm

array_shift()

Panaikina masyvo pirmj element ir grina jo reikm

array_slice()

Grina masyv pasirinktomis dalimis (supjausto j)

array_splice()

Panaikina ir pakeiia naujais nurodytus masyvo elementus

array_sum()

Grina masyvo reikmi sum

array_udiff()

Palygina masyvo reikmes pagal vartotojo pateikt funkcij ir grina


masyv su rezultatais

array_udiff_assoc()

Palygina masyvo raktus (indeksus) ir reikmes pagal vartotojo pateikt


funkcij ir grina masyv su skirtumais

array_udiff_uassoc()

Palygina masyvo raktus (indeksus) ir reikmes pagal vartotojo pateiktas


funkcijas (viena reikmms tikrinti, kita raktams) ir grina masyv su
skirtumais

array_uintersect()

Palygina masyvo reikmes pagal vartotojo pateikt funkcij ir grina


masyv su sutapimais

array_uintersect_assoc()

Palygina masyvo raktus (indeksus) ir reikmes pagal vartotojo pateikt


funkcij ir grina masyv su sutapimais

array_uintersect_uassoc()

Palygina masyvo raktus (indeksus) ir reikmes pagal vartotojo pateiktas


funkcijas (viena reikmi tikrinimui, kita raktams) ir grina masyv su
sutapimais

30

array_unique()

Panaikina pasikartojanias reikmes turinius masyvo elementus i masyvo

array_unshift()

Prideda vien ar kelis elementus masyvo pradi

array_values()

Grina visas masyvo reikmes

array_walk()

Pritaiko vartotojo pateikt funkcij kiekvienam masyvo elementui


(vienmaiam masyvui)

array_walk_recursive()

Pritaiko vartotojo pateikt funkcij kiekvienam masyvo elementui


(keliamaiam masyvui)

arsort()

Pertvarko masyvo elementus pagal j reikmes (pagal abcl nuo Z iki A ).


Indeksai ilieka alia reikmi tokie pat, kaip buv

asort()

Pertvarko masyvo elementus pagal j reikmes (pagal abcl nuo A iki Z ).


Indeksai ilieka alia reikmi tokie pat, kaip buv

compact()

Sukuria masyv, kuris kintamj pavadinimus priskiria raktams


(indeksams), o j reikmes masyvo reikmms

count()

Suskaiiuoja, kiek element turi masyvas, grina skaii. Taip pat galima
naudoti su objektais, grina objekto parametr skaii

current()

Grina dabartinio masyvo elemento reikm

each()

Grina dabartinio masyvo elemento rakt (indeks) ir reikm i masyvo.


Rodykl (pointer) perkelia kit element

end()

Perkelia masyve esani rodykl (pointer) paskutin element

extract()

kelia kintamuosius i masyvo veikiamaj simboli lentel

in_array()

Patikrina, ar nurodyta reikm yra masyve

key()

Suranda rakto (indekso) viet masyve

krsort()

Irikiuoja masyv pagal rakt (indeks) atgaline tvarka

ksort()

Irikiuoja masyv pagal rakt (indeks) normalia tvarka

list()

Priskiria kintamiesiems tokias reikmes, kokios buvo masyvo element


reikms

natcasesort()

Grina masyv irikiavus pagal reikmes natralia tvarka, neatsivelgiant


didisias ar masias reikmes. A yra tapatu a, kaip ir Z z ar B b t. t.

natsort()

Grina masyv irikiavus pateiktj pagal reikmes natralia tvarka

next()

Perkelia masyvo rodykl (pointer) kit element

pos()

Tas pats kaip current()

prev()

Perkelia masyvo rodykl (pointer) prie tai buvus element

31

range()

Sukuria masyv pagal interval ir j upildo reikmmis

reset()

Perkelia masyvo rodykl (pointer) pirm masyvo reikm

rsort()

Rikiuoja masyv atbuline tvarka, rakt (indeks) tvarka ilieka ta pati


(atsiria nuo perrikiuot reikmi)

shuffle()

Sumaio masyvo elementus

sizeof()

Tas pats kaip count()

sort()

Irikiuoja masyv, indeks tvarka ilieka tokia kaip buvo (atsiria nuo
perrikiuot reikmi)

uasort()

Irikiuoja masyv pagal reikmes ir vartotojo funkcij, raktai (indeksai)


lieka pririti prie reikmi

uksort()

Irikiuoja masyv pagal raktus (indeksus) ir vartotojo funkcij, raktai


(indeksai) lieka pririti prie reikmi

usort()

Irikiuoja masyv pagal reikmes ir vartotojo funkcij, raktai (indeksai)


atsiria nuo reikmi

2.9.

Specialieji PHP masyvai

$_GET GET bdas, t. y kartu su adresu perduodam kintamj masyvas.


$_POST POST bdas, t. y HTTP uklausos duomenyse perduodam kintamj masyvas.
$_SERVER serverio aplinkos kintamj masyvas.
$_SERVER['PHP_SELF'] puslapio URL adresas.
$_SERVER['PATH'] kelias iki vykdomj komand.
$_ENV OS aplinkos kintamj masyvas.
$_SESSION sesijos klientas-serveris kinamj masyvas, kuris saugomas serveryje.
$_COOKIES sesijos klientas-serveris kinamj masyvas, kuris saugomas vartotojo
kompiuteryje. Gali bti panaudotas kitam klientas-serveris seansui, tai svetainei ar tam
puslapiui.
2.9.1.

$_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.

PHP $_POST masyvas

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.

PHP $_REQUEST masyvas

$_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.9.3.1 pav. Forma duomenims apie svetains lankytojus rinkti

Interneto serveryje PHP intarpo formuojamas tinklalapio apraymas, kuriame svetains


lankytojui praneama apie formoje vestus duomenis, atrodo taip (r. 2.9.3.2 pav.):
<html>
<body>
34

Sveiki <?php echo $_POST["fname"]; ?>!<br />


Jus esat <?php echo $_POST["age"]; ?> met.
</body>
</html>

2.9.3.2 pav. Vaizdas naryklje

2.10.

Form duomen patikrinimas

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

Logins funkcijos, naudojamos kontrolei, pateiktos 2.10.1 lentelje.


2.10.1 lentel. Logins funkcijos
Kreipinys
is_numeric(arg)
is_real(arg)
isjnteger(arg)
isset(arg)

Reikms true slyga


Argumento reikm yra skaiius
Argumento reikm yra sveikasis skaiius
Argumento reikm yra realusis skaiius
Argumento reikm yra apibrta

Funkcijos is_numeric, is_real ir is_integer vedimo kontrolei naudojamos tada, kai


formos laukeliuose vestas reikmes numatoma naudoti skaiiavimuose. Kai formose duomenims
vesti naudojami ymimieji langeliai, server siuniamos vis paymt langeli reikms, o
kit langeli reikms lieka neapibrtos. Neapibrtoms reikmms patikrinti naudojama login
funkcija isset. Pavyzdiui, tarkime, kad server perduodami parodytos formos duomenys, kurios
apraymas toks:
<html>
<head></head><body>
<form name="Prekyba">
<p>Vardas: <input type="text" name="vard" size="15">
Pavard: <input type= "text" name= "pav" size= "20"></p>
<p style= "font-weight: bold">
Paymkite pageidaujamas programas:</p>
<input type= "checkbox" name= "win" value= "ON">Windows XP
<input type= "checkbox" name= "office" value= "ON">MS Office XP
<input type= "checkbox" name= "acrobat" value= "0N">
Adobe Acrobat 5.5 <br><br>
<input type= "submit" value= "Usakyti">&nbsp;
<input type= "reset" value= "Trinti"x/p></form>
</body></html>
Formoje parengtas preki usakymas gali bti priimtas tiktai tada, kai paymtas bent
vienas langelis checkbox:
if ((!isset($_GET['win'])>&& (! isset ($_GET ['office']) ) && (!isset($_GET['acrobat']
)))(
echo "Js turite pasirinkti bent vien program";
$rezultatas = false;
}
Kitaip tikrinamas parinkimo akui (radio buttons) ymjimas, nes j grupje leidiama
paymti tiktai vien akut ir visos akuts turi t pat vard, pavyzdiui:
<form name="emlapiai">
<p><b>Pasirinkite miest: </br><br><br>
<input type="radio" name="miestas" value="Kaunas">Kaunas
<input type="radio" name="miestas " value="Klaipda">Klaipda
<input type="radio" name="miestas " value="Vilnius">Vilnius<br><br>
36

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

Duomen isaugojimas serveryje

Kai programiniai intarpai naudojami tiktai formose vestiems duomenims apdoroti ir


gautiems rezultatams narykls lange parodyti, geriau naudoti narykls kompiuteryje vykdom
program intarpus (skriptus). Tada nereikia duomen sisti server ir atgal narykl, taupomas
brangus serveri ir ryio kanal darbo laikas. Serveriuose vykdom program privalumai
irykja tada, kai reikia kaupti vairiose naryklse vestus duomenis, juos isaugoti, kad bt
galima vliau apdoroti arba papildyti i iorini altini parinktais duomenimis.
Kaupiant duomenis diskinje serverio atmintinje ir parengiant juos vliau apdoroti,
naudojami du bdai: raymas tekstinius failus ir raymas duomen bazes. Pagrindinis yra
antrasis bdas, kuris leidia raytiems duomenims taikyti sudtingas duomen bazi analizs ir
ataskait rengimo priemones, taiau raymas tekstinius failus gerokai paprastesnis. Be to, tai
universalus duomen isaugojimo bdas, nes tekstinius failus gali apdoroti dauguma taikomj
program. Taip pat nesunku parengti ir originalias toki fail apdorojimo programas.
Prie vedant duomenis fail, j reikia atverti, parengti rayti, o jeigu atveriamo failo
paskirtame serverio kataloge nra, j reikia sukurti. Kiekvienam programoje tvarkomam failui
sukuriamas specialus failo kintamasis, kur su konkreiu failu susieja funkcija fopen:
Failo kintamasis = fopen("Failo vardas", "Atidarymo bdas");
Funkcija fopen turi du privalomus parametrus. Pirmasis parametras nurodo paprast arba
iplst atveriamo failo vard, o antrasis jo atidarymo bd. Paprastas failo vardas naudojamas
tada, kai jis bna tame paiame kataloge, kaip ir j apdorojanti PHP programa. Realiose
duomen rinkimo interneto svetainse rayti duomenis fail, kuris kartu su kitais interneto
dokumentais yra atvirame kataloge, nepatartina, nes tokie failai internetu lengvai pasiekiami,
todl j duomenys nra saugs. Geriau duomenis rayti special katalog, kuris internetui nra
atviras. Tada naudojamas iplstas failo vardas, kurio struktra tokia:
Kelias loginje serverio fail struktroje/Paprastas vardas

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

specialus palaikymas, nei labai daug PHP ini.


Pvz. Informacijos perskaitymas i tekstinio failo:
<?php
$failas="duomenys.txt";
$duomenys = fopen($failas, "r");
$informacija = fread($duomenys, filesize($failas));
fclose($duomenys);
echo $informacija;
?>
Pvz. Naujas raymas itrinant visus senus duomenis:
<?php
$informacija="Tekstas, raomas fail";
$failas="duomenys.txt";
$duomenys=fopen($failas, "w");
fwrite($duomenys, "$informacija");
fclose($duomenys);
?>
Pvz. raymas neitrinant sen duomen, o tsiant sra toliau:
<?php
$informacija="Tekstas, raomas fail";
$failas="duomenys.txt";
$duomenys=fopen($failas, "a");
fwrite($duomenys, "$informacija\n");
fclose($duomenys);
?>

39

2.12.

Form apdorojimas Formos atsakymo siuntimas el. patu


2.12.1. Formos atsakymo siuntimas el. patu

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

2.12.3. El. pato adreso teisingumo tikrinimas


Danai formoje praoma nurodyti, kam isisti atsakomj laik. Todl svarbu, kad
pildantis form vartotojas teisingai nurodyt savo pato adres. Patikrinti, ar pato adresas yra
teisingas, nemanoma. Taiau, ar teisingu formatu vestas, galima. El. pato adreso formato
tikrinimo pavyzdys:
if (eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]$", $pastas))
echo "'$pastas' yra teisingas!";
else
echo "Klaida, '$pastas' yra neteisingai vestas adresas";
2.12.4. El. laiko siuntimas, panaudojant formos duomenis
Norint isisti laik i formos, pirmiausia reikia j sukurti. Sukuriama forma, kurioje
bt vedamas vardas, el. pato adresas ir vartotojo pasirinkimas (r. 2.12.4.1 pav.):
<form action="mail.php" method="post">
Vardas: <input type="text" name="vardas"><br>
E-mail: <input type="text" name="email"><br><br>
Komentaras<br>
<textarea name="komentaras"></textarea><br><br>
< input type="submit" value="Sisti">
</form>
Rezultatas

2.12.4.1 pav. Formos vaizdas

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.

2.13. Formos duomen raymas failus


Danai norima formos rezultatus isaugoti ar juos kaupti. Tam praveria duomen bazs,
taiau ne kiekvienas turi server su duomen bazi palaikymu ar moka programuoti SQL kalba.
Tokiu atveju tenka bandyti isiversti failais. Paprastoms formoms failai gali pakeisti duomen
bazes. Pateikiama keletas pavyzdi, kurie turt padti dirbant su failais.
2.13.1. Skaitymas ir raymas failus
Informacijos perskaitymas i tekstinio failo. Pritaikymas: itisinio teksto nuskaitymas:
<?
$failas="duomenys.txt";
$duomenys = fopen($failas, "r");
$informacija = fread($duomenys, filesize($failas));
44

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.

PHP slapukai (Cookies)

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:

slapuko krimas. Slapukui sukurti naudojama funkcija setcookie();

slapuko informacijos igavimas. Uraas $_COOKIE leidia igauti informacij


apie slapuk;

slapuko trynimas. Slapukui itrinti naudojama ta pati funkcija setcookie().

2.15. PHP sesijos


Kompiuteryje galima nustatyti, kada konkretus vartotojas pradjo darb ir kada j baig.
Serveris indentifikuoti vartotojo negali, kadangi HTTP protokolas nepalaiko bsen. iai
problemai sprsti ir skirtos PHP sesijos: jos leidia isaugoti vartotojo informacij serveryje
vlesniam naudojimui. Sesij informacija yra laikina ir yra sunaikinama tuomet, kai vartotojas
palieka interneto savetain. Sesij veikimo principas paremtas unikalaus identifikacinio numerio
sukrimu ir suteikimu kiekvienam vartotojui. Tas numeris yra saugomas slapuke arba interneto
adrese.

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

3. JAVASCRIPT KALBOS PASKIRTIS


Internetiniams puslapiams kurti vartojant vien tik standartin HTML kalb, tinklalapiai
yra statiniai vartotojas negali turti takos informacijos idstymui tinklalapyje. Norint sukurti
tikrai interaktyv tinklalap, reikalinga dar viena kalba, kuri bt vartojama narykls kontekste,
tai intarpo (skripto) kalba.
Programavimo kalba JavaScript leidia naudoti vairius tekstins ir grafins informacijos
vaizdavimo bdus, tinklalap terpti vairius objektus, suteikia dizaineriams daugiau galimybi
kurti, neukraunant serveriui atsakomybs u veiksmus.
i kalba skirta interaktyviems tinklalapiams kurti ir turi priemoni naryklei valdyti.
JavaScript turi palyginti maai galimybi darbui su failais ar grafikai valdyti. Programos,
sukurtos skripto kalba, negali veikti savarankikai, jos vykdomos tik narykls, suprantanios i
kalb, kontekste. Programos, sukurtos JavaScript kalba, dar vadinamos skriptais, arba
scenarijais, ir traukiamos Web tinklalap, kuriame atpastamos ir vykdomos kartu su likusiu
HTML kodu.
Naudojant skripto programas galima igauti vairius efektus, kuriuos riboja tik
programavimo kalbos galimybs ir narykls elementai. Daniausiai skripto kalbos vartojamos:

vairiems dialogo langams bei praneimams narykls informacinje eilutje


vaizduoti;

dinamikam tinklalapio turiniui kurti, kai tinklalapis skaitomas ar jau perskaitytas;

tinklalapio turiniui keisti;

formos elementuose vartotojo raytos informacijos teisingumui patikrinti;

navigacijai po kitus puslapius;

terptiems Java-apletams ir ActiveX elementams valdyti;

aismingiems elementams kurti (skraidanios snaigs ar panaiai).

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.

3.1. Pagrindiniai JavaScript elementai


JavaScript kalbos element terpimo taisykls HTML program:
<script language=JavaScript>
<!//skripto programa
//->
</script>
48

JavaScript kalboje vartojami du komentar tipai. Pirmasis vienos eiluts komentarai,


prasidedantys simboliu //. Antrasis komentar tipas keleto eilui komentaras. Prasideda
simboliu /* ir baigiasi simboliu */.
Kintamieji apraomi, naudojant var iraik. Jeigu kintamasis apraytas funkcijoje, jis yra
lokalus (reikm ilieka funkcijos ribose, inyksta, kai pasibaigia funkcijos veikimas), jeigu u
funkcijos rib globalus dokumentui (reikm ilieka dokumento ribose, inyksta j udarius).
Duomen tipas priskiriamas automatikai, priskyrus reikm.
Praneimams spausdinti naudojamos komandos alert ir document.write.
Pvz.:
<script language=Java Script>
alert(Informacijos ivedimo dialogo lange pavyzdys)
</script>
<script language=Java Script>
document.write(Informacijos ivedimo narykls lange pavyzdys)
</script>
Informacijai rayti naudojami operatoriai: alert ir prompt.
Pvz.:
<script language=JavaScript>
if (confirm(Ar norite perirti kit puslap ?))
document.write(Perira)
else
document.write(Tas pats puslapis)
</script>
<script language=JavaScript>
var s
s=prompt(veskite savo vard,Jonas)
document.write(s)

</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

3.2.2 lentel. Priskyrimo operandais vykdomos operacijos


Operatorius
Kint+=d
Kint=d
Kint*=d
Kint/=d
Kint%=d

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

3.2.4 lentel. Palyginimo operatoriai


Operatorius
Dydis1=dydis2
Dydis1<>dydis2
Dydis1>dydis2
Dydis1>=dydis2
Dydis1<dydis2
Dydis1<=dydis2
Dydis1&&dydis2
Dydis1||dydis2
!dydis

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

3.2.6 lentel. Operatori atlikimo eilikumas


Eil. Nr.
1
2
3
4
5
6
7
8
9
10
11
12
13

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)

3.3. Slygos tikrinimo operatoriai


Operatorius If (loginis_sakinys). Sakinio loginis_sakinys rezultatas visada turi reikm
true arba false. Jei blokuose if ir else tik po vien sakin, tai naudojama tokia konstrukcija:
If (slyga)
Sakinys;
Else
Sakinys;
Jei blokuose daugiau negu vienas sakinys, naudojami figriniai skliaustai {}:
If (slyga){
1sakinys;
2sakinys;
}
Else {
1sakinys;
2sakinys;
}
Operatorius Switch naudojamas, kai sakinys gali gyti kelet reikmi. Priklausomai nuo
to, atliekami tam tikri veiksmai. Jo sintaks:
Switch (sakinys) {
Case label1:
{
//veiksmai atliekami tada, kai sakinys gyja reikm, lygi label1
}
case label2:
{
//veiksmai atliekami tada, kai sakinys gyja reikm, lygi label2
}
51


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)
}

3.4. Ciklo operatoriai


Operatorius For naudojamas, kai inoma, kiek kart reiks kartoti cikl:
For (kint=prad_reiksm;slyga;ciklo_ingsnis)
{cikle vykdom veiksm seka}
Pvz. Spausdins narykls savybes:
<html>
<head><title>Java Script pavyzdys</title>
<script language=JavaScript >
function Test()
{for (i in navigator)
{document.write(i+=+navigator[i]+<BR>);}
}
</script>
</head>
<body>
<script language=JavaScript>
Test()
</script>
</body>
</html>
Operatorius While naudojamas, kai neinoma, kiek kart reiks kartoti cikl:
While (slyga) {
ciklo sakiniai

Elementas break naudojamas koki nors veiksm nutraukimui. Daniausiai naudojamas


blokuose for, for...in, while, kai reikia nutraukti ciklo vykdym, t. y. ieiti i ciklo jo nevykdius
iki pabaigos.
52

Elementas Continue taip pat naudojamas cikluose for, for...in, while. is elementas
nurodo, kad iteracija stabdoma ir pereinama prie kitos iteracijos.

3.5. JavaScript objektai


Objektas savybi, metod, vyki ir kolekcij rinkinys, naudojamas objektiniame
narykls modelyje. iuos objektus kreipiamasi taip:
objektas.metodas|savyb|kolekcija|savyb
Savyb kintamasis objekto ribose, kuris gali bti naudojamas kokioms nors reikmms
gauti ar naujoms reikmms nustatyti. Dalis savybi naudojamos tik vieniems ar kitiems
duomenims nuskaityti.
Metodas procedra ar funkcija, priklausanti objektui, ir skirta tam tikriems veiksmams
vykdyti arba objekt savybms valdyti.
vykis koks nors vartotojo veiksmas arba narykls darbo momentas.
Kolekcija savybi rinkinys, kuriame kintamieji idstyti panaia tvarka kaip masyve.
3.5.1.

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:

konstruktoriumi new sukuriamas masyvas, po to nurodomas jo dydis bei j sudarantys


elementai;

kuriant masyv galima i karto aprayti jo reikmes.


3.5.1.1 lentel. Objekto Array metodai
Metodas

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.

Objektinis narykls modelis. JavaScript objekt hierarchija

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

document.forms[0].elements[0]. Norint suinoti, k vartotojas para, reikia inoti, kad teksto


vedimo laukelis turi savyb value, kuri kaip tik yra vartotojo vesta reikm. Tam, kad bt
galima perskaityti i reikm, reikt rayti itaip:
name =document.forms[0].elements[0].value,
Kintamasis name gis iame laukelyje rayt reikm, kuri galima panaudoti
programoje. Pavyzdiui, paraius eilut
alert(Labas+name),
atrodys, lyg programa pasisveikino su vartotoj pagalba. raius vard Aldona, ekrane
atsiras praneimas Labas Aldona. Jeigu kuriamas tinklalapis yra labai didelis, tokia hierarchija
tampa pernelyg sudtinga, tokiais atvejais objektams galima priskirti unikalius vardus. Pvz., kai
formos vardas yra Duomenys, o pirmojo tekstinio lauko pavadinimas vardas, tada vietoj urao:
name= document.forms[0].elements[0].value,
galima rayti:
name= document.Duomenys.vardas.value;
is uraas reikia, kad objektas forms[0] gauna nauj vard Duomenys. Lygiai taip pat
vietoj elements[0] galima urayti vardas (tai rodo uraas bloko <input> atribute vardas). Tai
supaprastina programavim JavaScript kalba, kuriant didels apimties tinklalapius. Dabar galima
ne tik perskaityti, kas parayta lauke, bet ir rayti jame naujas reikmes. Pavyzdiui, jei form
vietoj value bus raytas bazinis vykis onClick:
onClick="documentDuomenys.vardas.value= 'Dabar is laukas aktyvus'; ">,
tai perklus ymekl laukel vardas, jame bus urayta: Dabar is laukas aktyvus.
3.5.3.

Objektas Date

Objektas Date ir jo metodai naudojami atlikti vairiems veiksmams su datomis ir laiku.


is objektas turi daug metod datoms nustatyti, j reikmms gauti, taiau neturi savybi. Data
JavaScript kalboje skaiiuojama milisekundmis nuo 1970 met sausio pirmos dienos. Vadinasi,
viena diena yra sudaryta i 86400000 milisekundi. JavaScript kalboje galimas skaii
intervalas nuo -9007199254740991 iki 9007199254740991, vadinasi, galima operuoti 285616
metais.

55

Sintaks:
MyDate=new Date ([parametrai])
Galimi tokie parametr variantai:
joki parametr, kintamajam bus priskirta data, kurios formatas Mnuo, diena, metai,

valandos: minuts: sekunds, pvz., someDate=new Date (Birelis 15,1996); Jeigu


valandos, minuts ar sekunds nenurodomos, j reikm 0;
skaii, kurie sudaro piln rinkin: metus, mnes ir dien, pvz., otherDay=new

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 nustatymas (set);

laiko gavimas;

laiko ir datos vertimas i eiluts;

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

Keiia lokal laik pagal Grinvio laik ir grina eiluts pavidalu


Keiia Grinvio laik lokal laik ir grina eiluts pavidalu
Grina skaii milisekundmis tarp 1970 met sausio 1 dienos ir datos,
nurodytos parametru

Lentelje 3.5.3.1 ivardinti datos nustatymo metodai ir apribojami skaitiniais intervalais.


J galiojimo ribos apraytos 3.5.3.2 lentelje.
3.5.3.2 lentel. Skaitini interval galiojimo ribos
Reikm
Sekunds ir minuts
Valandos
Savaits dienos
Mnesio diena
Mnuo
Metai

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

Objektas Math turi vis rinkin savybi (matematins konstantos) ir metod


(trigonometrins ir matematins funkcijos). Kaip ir kiti objektai, jis gali bti panaudojamas
atskirai ir kartu su kitais metodais. Objekto savybs:
E Oilerio konstanta (apie 2.718),
LN2 skaiiaus 2 natralusis logaritmas (apie 0.693),
LOG2E skaiiaus E logaritmas, kai pagrindas 2 (apie 1.442),
LOG10E skaiiaus E logaritmas pagrindu 10 (apie 1.434),
PI skaiiaus reikm (apie 3.1415),
SQRT1_2 skaiiaus 0.5 kvadratin aknis (apie 0.707),
SQRT2 skaiiaus 2 kvadratin aknis (apie 1.414).
Objekto Math metodo argumentas raomas paprastuose skliaustuose.
57

3.5.5.1 lentel. Objekto Math metodai


Metodas

Apraymas

sin, cos, tan

Standartins trigonometrins funkcijos, argumentas radianais

abs

Absoliuti reikm modulis

acos, asin, atan

Arksinusas, arksinusas, arktangentas

exp, log

Eksponent ir natrinis logaritmas (pagrindas e)

ceil

Sveikoji skaiiaus dalis, didesn arba lygi skaiiui

floor

Sveikoji skaiiaus dalis, maesn arba lygi skaiiui

min, max

Maesnis (didesnis i dviej) argument

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

is objektas pasirenkamas, kai reikia suinti informacij apie naudojamos narykls


model ir kitas savybes.

58

3.5.7.1 lentel. Objekto Navigator savybs


Savybs
AppCodeName
AppName
AppVersion
UserAgent
JavaEnabled
CookieEnabled
TaintEnabled

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

Persuka tinklalapio turin horizontaliai ir vertikaliai


Nustato funkcijos vykdymo interval
Nustato laiko interval, po kurio atliekami kokie nors veiksmai
Ataukia metodo SetInterval vykdym
Ataukia metodo Set Time Out vykdym
Vykdo skripto program

Naujam langui atidaryti naudojami metodai open ir close. Pavyzdiui, komanda


Window.open(bandymas.html) atidarys lang, kuriame bus HTML failo bandymas.html turinys.
Metodas open turi daug papildom argument, kurie leidia nusakyti lango padt, jo
dyd ir tip. Taip pat nurodo, ar langas turi turti persukimo liniuot, komandini mygtuk
liniuot ir t. t. Be to, galima nurodyti ir lango vard. Jo sintaks atrodo taip:
Newwind=window.open(URL, name, features, replace),
ia: URL failo adresas, kuris rodomas naujame lange; jeigu adresas nenurodomas,
rodomas tuias langas;
name eilut, nurodanti lango vard;
features eilut, nurodanti naujo lango parametrus;
replace nurodo, ar naujas langas raomas history sra.
Antrasis argumentas lango vardas gali bti naudojamas kaip target parametras. Taigi,
jei inomas lango vardas, tai jame galima atverti tinklalap, kurio uraas atrodo taip:
<a href="tinklalapis.html" target="displayWindow">
Lango vardas (iuo atveju displayWindow) yra unikalus identifikatorius, kuriuo galima
naudotis i bet kurio narykls lango. Naujo lango parametrai, naudojami features eilutje,
pateikti 3.5.8.3 lentelje, naujos lang savybs 3.5.8.4 lentelje.
3.5.8.3 lentel. Naujo lango parametrai
Parametras

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

3.5.8.4 lentel. Lang naujos savybs


Parametras
alwaysLowered
AlwaysRaised
Dependent
Hotkeys
InnerWidth
InnerHeight
OuterWidth
OuterHeight
ScreenX
ScreenY
Titlebar
z-lock

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

Objektui window priklauso ir metodai: alert, prompt, confirm.


Laikmaiai taip pat naudojami objekte window. Objektas window turi ir du metodus
setTimeOut ir setInterval naudojamus taimeriams valdyti. Funkcijos setTimeout pagalba galima
parayti toki program, kuri atlikt tam tikrus veiksmus prajus nurodytam laikui.
Pavyzdyje (r. 3.5.8.1) pateikiama programa, kuri tinklalapyje pateiks tik vien mygtuk
Laikas, kur spusteljus praneimas funkcijos laikas() pagalba ikvieiamas ne i karto, o
prajus trims sekundms. Pirmasis setTimeout argumentas nurodo, k reikia padaryti, iuo atveju
ikviesti funkcij alert. Btina sidmti, kad is argumentas raomas kabutse. Antrasis
argumentas laikas milisekundmis.
Pvz. Funkcija setTimeout:
<html>
<head>
<title>Pavyzdys</title>
<script language="JavaScript">
//Funkcija timer lauks 3000 milisekundi
function laikas() {
setTimeout("alert('Js laikas prajo!')", 3000);
}
</script>
</head>
<body>
<form>
<input type="button" value="Laikas" onClick="laikas()">
</form>
</body>
</html>

61

3.5.8.1 pav. Vaizdas naryklje

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>

3.5.8.2 pav. Skaitliukas su funkcija clearTimeout

63

Objekto window vykiai pateikti 3.5.8.5 lentelje.


3.5.8.5 lentel Objekto window vykiai
vykis
OnBeforeUnload
OnBlur
OnError
OnFocus
OnHelp
OnLoad
OnResize
onScroll
OnUnload

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

3.5.9. Objektas Location


is objektas pateikia informacij apie aktyvaus tinklalapio URL adres. Jo savybs
ivardintos 3.5.9.1 lentelje.
3.5.9.1 lentel. Objekto Location savybs
Savyb

Apraymas

Href
Hash
Host
Hostname
Pathname
Port
Protocol
Search

Pilnas tinklalapio URL adresas


Eilut einanti po simbolio #
Adreso hostname dalis: port
Adreso hostname dalis
Failo pavadinimas
Porto numeris
Protokolo vardas
Eilut einanti po simbolio ?

Paprastai objektas location naudojamas kitiems tinklalapiams nuskaityti. Tam tikslui


savybei href priskiriama nauja reikm. i operacija ekvivalenti objekto window metodui
navigate.

Pavyzdiui,

komanda

Window.location.href=http://www.naujas.lt/naujas.html

ikvieia tinklalap naujas.html.


3.5.9.2 lentel. Objekto Location metodai
Metodas
Assign
Reload
Replace

64

Apraymas
Nuskaito kit tinklalap. Veiksmas ekvivalentus: Window.location.href
I naujo nuskaito aktyv tinklalap
Nuskaito tinklalap ir paymi j history srae

3.5.10. Objektas Event


Jis leidia skripto programai suinoti detali informacij apie prajusius vykius ir
vykdyti atitinkamus veiksmus. Pavyzdyje pateikta programa parodo, kaip naudotis savybe
event.type:
<html>
<head>
<title>Pavyzdys</title>
</head>
<body>
<script language="JavaScript">
function vykdyk(){
alert("event.type="+window.event.type)
}
</script>
<a href="tinklalapis.html" onMouseOver="vykdyk();">Pereiti kit tinklalap</a>
<form>
<input type="button" value="OK" onClick="vykdyk();">
</form>
</body>
</html>
Kai perkeliamas ymeklis ant urao Pereiti kit tinklalap, ikviesta funkcija vykdyk()
ispausdins praneim event.type=mouseover. Paspaudus mygtuk OK, bus kitas vykis onClick
ir vl ikviesta funkcija vykdyk(), o ekrane atsiras praneimas event.type=click.
3.5.11. Objektas Screen
Jis skirtas informacijai apie narykl pateikti.
3.5.11.1 lentel. Objekto Screen savybs

Savybs
AvailHeight
AvailWidth
BufferDepth
ColorDepth
Height
UpdateInterva
l
Width

Apraymas

Skaitymas/Raymas

Pasiekiamos ekrano srities auktis


pikseliais
Pasiekiamas ekrano plotis pikseliais
Buferio dydis
Maksimalus spalv skaiius
Ekrano auktis pikseliais
Ekrano atnaujinimo intervalas

Skaitymas
Skaitymas
Skaitymas/Raymas
Skaitymas
Skaitymas
Skaitymas/Raymas

Ekrano plotis pikseliais

Skaitymas

65

3.5.12. Objektas Document


is objektas naudojamas, kai reikia suinoti informacij apie HTML dokument (r.
3.5.12.1 pav.).
document

anchors

links

applets

embeds

filters

all

images

selection

plugins

styleSheets

scripts

3.5.12.1 Pav. Objekto Document savybs

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

vyksta, kai nuspaudiamas pels klavias


vyksta, kai pels ymeklis ieina i kokio nors elemento srities
vyksta, kai juda pels ymeklis
vyksta, kai pels ymeklis ieina i elemento srities
vyksta, kai atleidiamas anksiau nuspaustas pels klavias
vyksta, kai pertempiamas koks nors elementas
vyksta, kai paymimas koks nors elementas
vyksta, kai paspaudiamas klavias
vyksta, kai klavias nuspaustas ir laikomas
vyksta, kai atleidiamas anksiau nuspaustas klavias
vyksta, kai nuspaudiamas F1 klavias

Objekto document kolekcija naudojama, kai reikia atlikti veiksmus su informacija,


pateikta tinklalapyje. Pilnas apraas pateikiamas 3.5.12.3 lentelje.
3.5.12.3 lentel Objekto Document kolekcija
Kolekcija
All
Anchors
Applets
Embeds
Filters
Frames
Forms
Images
Links
Plugins
Scripts
styleSheets

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.

3.6. Baziniai JavaScript vykiai


vykiai suprantami kaip veiksmai, kuriuos vartotojas gali atlikti tinklalapyje. Tai gali bti
kokio nors objekto paspaudimas pels klaviu, teksto ar jo dalies pasirinkimas ir t. t. vyki
rinkinys naudojamas kuriant interaktyvias, dinamikas programas ir sudaro Dynamic HTML
technologijos baz. Baziniai JavaScript vykiai pateikti 3.6.1 lentelje.
3.6.1 lentel. Baziniai JavaScript vykiai
vykis
OnAbort
OnBlur
OnChange
OnClick
OnError
OnFocus
OnLoad
OnMouseOver
OnMouseOut
OnReset
OnSelect
OnSubmit
OnUnload

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

Pvz. Isiskleidianiame formos srae pateikiami horoskopo enkl pavadinimai


(3.6.3.1 pav.):

3.6.3.1 pav. Isiskleidiantis formos sraas

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

vykdomas, kai baigiamas persisti puslapis arba grafinis objektas. Daniausiai


naudojamas, kai reikia jungti laikrod arba ikviesti koki nors funkcij, ir t. t. Pavyzdyje, kol
bus siuniamas puslapis, vartotojas matys praneim: Minutl, siuniama puslapio mediaga...:
<html>
<head><title>Pavyzdys su onLoad</title><script language = "JavaScript"> function
doLoad() {
alert("Minutl, siuniama puslapio mediaga... " }
</script></head>
<body onLoad= "doLoad() "></body></html>
3.6.8. vykiai OnMouseOver ir OnMouseOut
vykdomi, kai pels ymeklis patenka nurodyto objekto srit. Pavyzdio bloke <a>
aprayti du vykiai: onMouseOver ir onMouseOut. Patekus ymekliui ant nuorodos, narykls
informacinje eilutje pasirodo praneimas, paaikinantis nuorodos paskirt. Tam naudojama
funkcijos onMouseOver savyb window.status. Panaudojant funkcij onMouseOut, spausdinama
tuia eilut, kuri itrina ankstesn ura:
<html>
<head>
< title > Pavyzdys </title >
<script language= "JavaScript">
function doMouseOver()
window.status="Pereisite Hotmail'o tinklap"
function doMouseOut()
window.status ="
</script>
</head>
<body>
<a href= "http://www.hotmail.com " onMouseOver
="doMouseOver() " onMouseOut= " doMouseOut()">
Pereikite Hotmail 'a</a>
</body>
</html>

3.7. Iskleidiamieji sraai


Program teikiamoms paslaugoms parinkti naudojama dar viena populiari priemon
iskleidiami sraai, kurie dar vadinami parinkimo meniu. Pagrindinis j privalumas yra tas,
kad jie ekrane uima maai vietos. Visos srao savybs apraomos konteinerio select pradinje
gairje, kurioje galima nurodyti srao vard (name), identifikatori (id), dyd (size) ir reikmi
parinkimo bd pavien arba grupin. Tipinis yra pavienis srao element parinkimo bdas,
73

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.

3.7.1 pav. Iskleidiamasis sraas

Atskir meniu element paskirtys apraomos konteineriuose option, o pels


spragteljimu parinkus element j server siuniama pradinje jo konteinerio gairelje option
nurodyta parametro value reikm. Pradinis srao element parinkimas apraomas parametru
selected.
Pavyzdiui, 3.7.1 pav. rodomas program parinkimo sraas apraomas taip:
<html>
<head/head>
<body>
<form name="Prekyba">
<p style= "font-weight: bold">
Paymkite pageidaujamas programas:</p>
<select size="1" name="Parinkta" multiple>
<option value="WinXP" selected>Windows XP</option>
<option value="Office">MS Office XP</option>
<option value="Adobe"> Adobe Acrobat 5.5</option>
</select>&nbsp;
<input type="submit" value="Usakyti">&nbsp;
<input type="reset" value="Atsisakyti"&nbsp >
Paymint kelet meniu element, reikia laikyti nuspaust klavi
74

<span style= "font-style:italic">Ctrl</span><br>


</form>
</body></html>
Tinklalapio lankytojo parinkto srao elemento indeks nurodo meniu objekto savyb
selectedlndex. Visiems konteineryje select apraytiems elementams suteikiamos nuosekliai
didjanios indeks reikms, pradedant nuo nulio. Kai parinkt element nra, savybs
selectedlndex reikm yra 1. Tai galima naudoti privalomo meniu element parinkimo
kontrols funkcijoje, kurios reikm true pranea, kad parinktas bent vienas elementas, o reikm
false nurodo, kad toki element nra:
function Tikrinti(){
if (Prekyba.Parinkta.selectedlndex<0){
// Ar yra parinkt element?
alert("Parinkite bent vien program");
Prekyba.Parinkta.focus();
// Srao objekto aktyvavimas
return alse; f
// eikm,
R kai parinkimo nra
}
else return return true;
// Reikm, kai yra parinkt
element
}

3.7.2 pav. Iskleidiamasis sraas su dviem element grupmis

Ilgus parinkimo sraus naudoti patogiau, kai j elementai sugrupuojami ir tokioms


grupms suteikiamos antrats, kurios atspindi bendras grups savybes. Grupms sudaryti
naudojami konteineriai optgroup, o j antrates nurodo parametro, label reikms. Pavyzdiui,
3.7.2 pav. parodytas sraas su dviem element grupmis apraomas taip:
<select size="1" name="Parinkta">
<optgroup label="Operacij sistemos">
<option value="WinXP">Windows XP</option>
<option value="Linux">Linux</option></optgroup>
<optgroup label="Taikomosios programos">
<option value="Adobe"> Adobe Acrobat 5.5</option>
<option value="Word"> MS Office XP</option></optgroup>
</select>
Danai tinklalapiuose pateikiami parinkimo sraai, kuriuose rodomi duomenys priklauso
nuo lankytojo vest duomen arba atlikt veiksm. Pavyzdiui, toks tinklalapis parodytas 3.7.3
pav.
75

3.7.3 pav. Parinkimo sraas

Parinkus jo srae Miestai konkret miesto pavadinim, gretimame srae Pavadinimai


pateikiamas tame mieste esani moni sraas. io tinklalapio apraymas yra toks:
<html>
<head>
<script language="JavaScript">
var masl = new Array ('Liteksas', 'Drob','Audimas');
var mas2 = new Array ('Bur', 'Gija');
var mas3 = new Array ('Gaja', 'Vilma', 'Goda');
var y = new Array (masl, mas2, mas3);
var k = 0;
function Rodyti(vardas){
Prekyba. Pavadinimai.length= vardas.length;
for (i=0; i< vardas.length; i++)
Prekyba.Pavadinimai.options[i]=new Option(vardas[i], vardas[i], 0, 0);}
function Keisti() {
k= Prekyba.Miestai.selectedlndex; Rodyti(y[k]);]}
</script></head>
<body onLoad = "Rodyti(y[k])" >
<form name="Prekyba" >
<p style= "font-weight: bold">
Parinkite miest ir mons pavadinim:</p>
Miestai: &nbsp;
<select size="1" name="Miestai" onChange="Keisti()">
<option value="Kn" selected>Kaunas</option>
<option value="Kl">Klaipda</option>
<option value="Vl"> Vilnius</option>
</select>&nbsp;
Pavadinimai: &nbsp;
<select size="1" name="Pavadinimai">
</select><br><br>
<input type="submit" value="Tsti">&nbsp;
<input type="reset" value="Atsisakyti">
</form>
</body></html>

76

Apraant io tinklalapio parinkimo meniu tvarkym, naudojama keletas anksiau


neaptart programavimo element. moni pavadinimams saugoti ia sudarytas dvimatis
masyvas y. Tiesiogiai tokio masyvo JavaScript kalba aprayti neleidiama. Todl masyvas y
apraytas kaip masyvas, kurio elementai taip pat yra masyvai: masl, mas2 ir mas3. iems
pavadinim masyvams indeksai parinkti taip, kad jie atitikt miest srao indeksus: Kaunas 0,
Klaipda 1, Vilnius 2. Tinklalapio konteineryje body apraytas tuias sraas Pavadinimai,
kuriame nra parenkam element. sra upildo funkcija Rodyti, kurios argumentas
perduoda jame raom pavadinim masyv. I pradi srao upildym organizuoja tinklalapio
atvrimo vykis onLoad, kuris apraytas gairelje <body> ir nukreipia pavadinim sra
Kauno miesto moni pavadinimus. Pakeitus miest srae parinkt reikm gairelje select
apraytas vykis onChange ikvieia funkcij Keisti, kuri pakeiia kintamojo k saugomo
aktyvaus miest srao elemento indeks ir perduoda funkcijai Rodyti kito miesto moni
pavadinim masyv. Srao papildym nauju elementu aprao tokia sintaksin struktra:
Srao vardas.options[Indeksas] =
new Option(Tekstas, Reikm, Aktyvumas, Aktyvumas papildant);

3.8. Intarp funkcij derinimas


Parengiant bent kiek sudtingesnes intarp funkcijas, sunku ivengti klaid. Todl, raant
tokias funkcijas, reikia mokti naudoti j derinimo priemones. Funkcij (program) derinimu
vadinamas jose esani klaid paiekos ir itaisymo procesas. Jei skriptams derinti norima
naudoti narykl, vis pirma reikia sitikinti, kad joje diegtos derinimo priemons. Pavyzdiui,
naryklje MS Explorer tai galima suinoti atvrus pagrindinio jos meniu komandos rankiai
Interneto parinktys lango kortel Isamiau, kuri parodyta 3.8.1 pav. Derinant skriptus btina, kad
bt paymtas langelis Rodyti perspjim apie kiekvien scenarijaus klaid ir kad nebt
yms langelyje Drausti taisyti scenarij(Internet Explorer).

3.8.1 pav. Derinimo priemoni diegimas

77

Intarp funkcij apraymuose daromos klaidos bna trij tip: sintakss, vykdymo ir

logins. Sintakss klaid atsiranda dl to, kad neteisingai apraomos programavimo kalbos

3.8.1 pav. Derinimo priemoni diegimas

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.):

3.8.2 pav. Informavimas apie klaid

Jeigu iame praneime pateiktos informacijos pakanka, parinkus narykls komand


galima atverti tinklalapio apraym HTML kalba tekst rengykls Notepad lange, j pataisyti ir
vl bandyti atverti narykls lange. Norint pasinaudoti specialiomis skript derinimo
priemonmis ir gauti isamesn informacij apie klaidas, praneimo apie klaid lange reikia
paspausti mygtuk Taip ir bus atvertas derinimo program pasirinkimo langas (3.8.3 pav.):

3.8.3 pav. Program pasirinkimo langas

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

Praktin uduotis. HTML pagrindai

Darbo tikslas: pagilinti darbo su HTML kalba pagrindus.


HTML dokumento struktra:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN)">
<!-- Naudojamo HTML standarto apraymas -->
<HTML><!-- Dokumento tipas-->
<HEAD><!-- Dokumento antrat -->
<TITLE>Pavadinimas</TITLE>
...kiti antrats elementai:
</HEAD>
<BODY>...dokumentas </BODY>
</HTML>
Daniausiai naudojami komand atributai:
ALIGN elemento idstymo orientacija kit HTML dokumento element atvilgiu arba HTML
dokumente.
HREF nuoroda fail.
SRC failas, kuriame yra informacija, reikalinga elementui sukurti.
TARGET nuoroda rmeli dal.
BORDER rmeli aplink objekt storis.
WIDTH elemento plotis.
HEIGTH elemento auktis.
HSPACE horizontalus tarpas tarp elemento ir kit HTML dokumento element.
VSPACE vertikalus tarpas tarp elemento ir kit HTML dokumento element.
ALT tekstas, rodomas vietoje arba alia elemento.
BGCOLOR elemento fono spalva.
Antrats elementai:
<TITLE>Pavadinimas</TITLE>Dokumento pavadinimas
<SCRIPT LANGUAGE="language" SRC="url"></SCRIPT>
Skriptai, hierarchins stili lentels ir t. t. Atributai:
LANGUAGE nurodo skripte naudojam programavimo kalb.
SRC nurodo fail, kuriame yra naudojamas skriptas.
<STYLE TYPE="text/css" TITLE="BrightColours"></STYLE>
Naudojam stili lentel. Atributai:
TITLE pavadinimas.
TYPE informacijos tipas.
<BASE HREF="http://www.myhost.com/" TARGET="default_target">

80

Bazin nuoroda ir rmeli dalis.


<META HTTPEQUIV="type" NAME="name" CONTENT="info">
Svarbi informacija apie HTML dokument, neperduodama kitu bdu. Atributai:
NAME informacijos pavadinimas, tipas.
HTTP-EQUIV informacijos tipas, naudojamas perduodant informacij HTTP
protokolu, gali pakeisti NAME.
CONTENT pati perduodama informacija.
<LINK REL="relation" TYPE="doctype" HREF="url" TITLE="name">
Nurodo ry tarp dokument. Atributai:
REL nurodo, kokio tipo yra ryys.
TYPE nurodo, kokio tipo yra dokumentas.
Dokumento formavimo elementai:
<BODY BACKGROUND="image" BGCOLOR="#rrggbb|colour name"
TEXT="#rrggbb|colour name" LINK="#rrggbb|colour name" VLINK="#rrggbb|colour name"
ALINK="#rrggbb|colour name"></BODY>
Dokumento turin gaubianti komanda. Atributai:
BACKGROUND foninio grafinio vaizdo URL.
TEXT teksto spalva dokumente, jei nra nurodyta kita.
LINK, VLINK, ALINK atitinkamai nelankyt, lankyt ir aktyvi nuorod spalvos.
<H? ALIGN="left|center|right"></H?>
Pavadinimai, ?=(1-6).
<P ALIGN="left|center|right"></P>
Pastraipa.
<DIV ALIGN="left|right|center"></DIV>
Teksto orientavimas horizontaliai.
<CENTER></CENTER>
Centruojamas tekstas.
<BR CLEAR="left|right|all">
Perjimas nauj eilut. Atributai:
CLEAR naujos eiluts pradios atskaitos takas.
<NOBR>...</NOBR>
Neperkeliamas tekstas
<WBR>
Teksto galimo perklimo vieta.
<A HREF="URL" TARGET="name|_self|_perent|_top|_blank " NAME="name"
TITTLE="name"></A>
Nuoroda. Atributai:
TARGET nuorodos rmeli patalpinimo langas: nurodytasis, tas pats, kuriame yra
dokumentas, motininio dokumento langas, visas periros programos langas, naujas
langas.
NAME galimos nuorodos vardas.
<IMG SRC="url" SRC="url" ALT="name"
ALIGN="left|right|texttopabsmiddle|baseline|absbottom" BORDER="pixels" WIDTH="pixels"
HEIGHT="pixels" HSPACE="pixels" VSPACE="pixels" LOWSRC="url" USEMAP="url"
ISMAP>
81

Grafinis vaizdas. Atributai:


USEMAP nuoroda emlap.
ISMAP grafinis vaizdas yra emlapis.
LOWSRC nuoroda prastesns kokybs paveiksliuko kopij.
<PRE WIDTH="simbcount">... </PRE>
Neformatuotinas tekstas.
<BLOCKQUOTE></BLOCKQUOTE>
Citata.
<ADDRESS></ADDRESS>
Kontaktin informacija apie autori ir tinklalap.
<HR ALIGN="left|right|center" SIZE="pixels" WIDTH="pixels|%" NOSHADE
COLOR="#rrggbb|colour name">
Linija. Atributai:
NOSHADE nespausta linija, be elio.
<COMMENT></COMMENT>, <!-- ... -->
Komentarai.
Loginis teksto formatas:
<EM></EM>
Poligrafinis kursyvas.
</STRONG></STRONG>
Parykintas poligrafinis kursyvas.
<SAMP></SAMP>
Programos ivedimai, skriptai.
<VAR></VAR>
Kintamieji, komand argumentai.
<CITE></CITE>
Citata, nuoroda literatr.
<DFN></DFN>
Apibrimas.
Fizinis teksto formatas:
<TT></TT>
Teletaipo (monospace) tekstas.
<I></I>
Pasvirs tekstas (italic).
<B></B>
Parykintas testas.
<U></U>
Pabrauktas tekstas.
<STRIKE></STRIKE>
Perbrauktas tekstas.
<BIG></BIG>
Didesnis u aplinkin tekstas.
<SMALL></SMALL>
82

Maesnis u aplinkin tekstas.


<SUB></SUB>
Apatinis indeksas (subscript).
<SUP></SUP>
Virutinis indeksas (superscript).
<BLINK></BLINK>
Mirksintis tekstas.
<FONT SIZE="[+|]value" COLOR="#rrggbb|colour name"
FACE="name[,name]"></FONT>
riftas. Atributai:
SIZE rifto dydis, gali bti matuojamas reliatyviai esamo rifto atvilgiu.
FACE rifto pavadinimas. Naudojamas pirmas srae esantis riftas.
<BASEFONT SIZE="value" COLOR="#rrggbb|colour name" FACE="name[,name]">
Bazinis riftas, kuris naudojamas viso HTML dokumento ribose. Dydis naudojamas kaip
pagrindas reliatyviam kit rift dydiui skaiiuoti.
Struktriniai HTML elementai:
<MAP NAME="name">
< AREA SHAPE="rect|circle|poly" COORDS="x1,y1,x2,y2,"
TARGET="name|_self|_perent|_top|_blankHREF="url"|NOHREF">
Kitos AREA komandos.
</MAP>
Grafinis emlapis. AREA sritys su skirtingomis nuorodomis. Atributai:
SHAPE srities tipas: staiakampis, apskritimas, daugiakampis.
COORDS srit apibrianios koordinats. Atskaitos takas: grafinio paveiksliuko virutinis
deinysis kampas. Reikia apibrti: staiakampiui keturi virni koordinates, apskritimui
centro tako koordinates ir spindulio ilg, daugiakampiui virni koordinates.
NOHREF srityje neveikia jokia nuoroda.
<BGSOUD SRC="url" LOOP="n">
Garsas, skambantis fone. Fail formatai WAV, AU arba MIDI. Atributai:
LOOP failo kartojim skaiius. 1 arba infinite reikia amin kartojim.
<EMBED SRC="url" BORDER="pixels" WIDTH="pixels" HEIGHT="pixels"
HSPACE="pixels" VSPACE="pixels">
Tiesioginis objekt (pvz.: audio ir video fail) terpimas HTML dokument. Reikalingi priedai
ar programos, suprantanios nurodyto failo format.
<MARQUEE ALIGN="left|right|top|middle|bottom" BEHAVIOR="scroll|slide|alternate"
BGCOLOR="#rrggbb|colour name" DIRECTION="left|right" HEIGHT="value|value%"
WIDTH="value|value%" HSPACE="value" VSPACE="value" LOOP="value|
1|infinite"SCROLLAMOUNT="value" SCROLLDELAY="value"></MARQUEE>
Judantis tekstas. Atributai:
BEHAVIOR judjimo pobdis. Tekstas gali judti nuo vieno periros lango krato iki kito,
judti sujungus prieingus teksto galus, judti tik nuo vienos marguee lango krato iki kito.
DIRECTION judjimo kryptis.
LOOP judjimo cikl kiekis. Pagal nutyljim begalinis.
SCROLLAMOUNT tak kiekis, per kur pasislenka tekstas.
SCROLLDELAY sustojimo laikas milisekundmos tarp kiekvieno teksto pasislinkimo.
83

<APPLET CODEBASE="url" CODE="appletFile" ALT="alternateText"


NAME="appletInstanceName" WIDTH="pixels" HEIGHT="pixels"
ALIGN="left|right|texttopabsmiddle|baseline|absbottom" VSPACE="pixelsHSPACE="pixels"
ARCHIVE="url" MAYSCRIPT>
<PARAM NAME="appletAttribute1" VALUE="value">
Kitos PARAM komandos
Alternatyvus HTML komand rinkinys
</APPLET>
Java programl. Atributai:
CODEBASE katalogas, kuriame yra programos kodas. Pagal nutyljim sutampa su
dokumento katalogu.
CODE failas, kuriame yra sukompiliuotas programos poklasis.
ARCHIVE papildom reikaling fail vieta.
MAYSCRIPT programa, pasiekiama naudojant JavaScript.
<UL TYPE=DISC|CIRCLE|SQUARE COMPACT>;
<LI TYPE=DISC|CIRCLE|SQUARE>
Kitos LI komandos
</UL>
Nenumeruojamas sraas. Atributai:
TYPE srao elemento ymeklio tipas: skritulys, apskritimas, kvadratas.
COMPACT pateikti sra kompaktikai.
<OL TYPE="A|a|I|i|1" VALUE="startingnumber" COMPACT>
<LI TYPE="A|a|I|i|1" VALUE="startingnumber">... Kitos LI komandos
</OL>
Numeruojamas sraas. Atributai:
TYPE sara numeri tipas: didiosios raids, maosios raids, didieji romniki skaitmenys,
maieji romniki skaitmenys, arabiki skaitmenys (pagal nutyljim).
COMPACT pateikti sra kompaktikai.
<DL COMPACT>
<DT><DD>
Kitos DT ir DD poros
</DL>
Apibrim sraas. DT apibriamas terminas. DD apibrimas.
COMPACT pateikti sra kompaktikai.
<TABLE BORDER="value" CELLSPACING="value" CELLPADDING="value"
WIDTH="value|%" HEIGHT="value|%" ALIGN="left|right" VALIGN="top|bottom"
BGCOLOR="#rrggbb|colour name" BORDERCOLOR="#rrggbb|colour name"
BACKGROUND="URL">
<CAPTION ALIGN="top|bottom">...</CAPTION>
<TR ALIGN="left|right|center" VALIGN="top|middle|bottom|baseline"
BGCOLOR="#rrggbb|colour name" BORDERCOLOR="#rrggbb|colour name">
<TH|TD WIDTH="value|%" HEIGHT="value|%" ALIGN="left|center|right"
VALIGN="top|middle|bottom|baseline" NOWRAP COLSPAN="value" ROWSPAN="value"
BGCOLOR="#rrggbb|colour name" BORDERCOLOR="#rrggbb|colour name"
BACKGROUND="URL"></TH|TD>
Kitos TH ar TD komandos
</TR>

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

SIZE matom opcij kiekis.


MULTIPLE galimyb pasirinkti ne vien, o kelet opcij.
VALUE serveriui perduodama reikm pasirinkimo atveju.
SELECTED nurodyta opcija bus pasirinkta pagal nutyljim.
<TEXTAREA ROWS="value" COLS="value" NAME="name" WRAP="off|virtual|physical">
Tekstas:
</TEXTAREA> Formos elementas, skirtas didels apimties tekstui. Atributai:
NAME elemento vardas, perduodamas kaip informacijos pavadinimas server.
ROWS matom eilui kiekis.
COLS matom stulpeli kiekis.
WARP odi perklimo kitas eilutes tipas: eiluts perduodamos tiksliai taip, kaip buvo
paraytos, prie perdavim eiluts visada sujungiamos vien, perklimas vykdomas
automatikai.
Rmeliai:
<FRAMESET ROWS="pixels|%|*" COLS="pixels|%|*" BORDER="pixels"
FRAMEBORDER="yes|no|0" BORDERCOLOR="#rrggbb|colour name">
<FRAME SRC="url" NAME="frame_name" SCROLLING="yes|no|auto" NORESIZE
FRAMEBORDER="yes|no|0" BORDERCOLOR="#rrggbb|colour name">
Alternatyvus HTML element rinkinys
</NOFRAME>
</FRAMESET>
Rmeliai. FRAME komanda formuoja vien j dal, NOFRAME dalis skirta rmeli
neatpastanioms periros programoms. Atributai:
ROWS periros lango dalijimas kelet horizontali dali. * enklas reikia likut.
COLS periros lango dalijimas kelet vertikali dali.
FRAMEBORDER matomi ar nematomi rmeliai.
BORDERCOLOR rmeli spalva.
NAME rmeli dalies vardas.
SCROLLING liniuot deiniame rmelio one: visada yra, niekada nra, pagal situacij.
NORESIZE udraudimas keisti rmeli dalies dyd.
Uduotis
Sukurkite internetin svetain, vadovaudamiesi iais reikalavimais:
1. Svetain turi sudaryti ne maiau kaip 2 tinklalapiai.
2. Tinklalapiai tarpusavyje turt bti sujungti saitais (nuorodomis).
3. Svetainje turi bti:
a) terpti bent du paveikslai ir kelios horizontalios linijos;
b) bent keli objektai (pavyzdiui, paveikslai) su paaikinimais (atributas title);

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.

Praktin uduotis. PHP pradmenys, PHP kintamieji

Darbo tikslas: gyti PHP kalbos pradmenis, susipainti su pagrindinmis struktromis,


susipainti su PHP kalbos kintamaisiais, juos aprayti ir naudoti.
Uduotis. Kintamieji naudojami informacijai saugoti: pavyzdiui, teksto eilutms, skaiiams ar
matricoms. Jei kintamasis yra deklaruojamas, j galite kaskart naudoti savo scenarijuje. PHP
kintamieji pradedami $ enklu/simboliu.
Pirmoji programl:
<?php
$kintamasis = reikm;
?>
Inagrinkite ir praktikai pritaikykite pavyzdius:
Pvz. 1. Pirmoji programl (4.2.1 pav.):
<?php // PHP failo pradia.
echo "Sveikas pasauli!"; //Leidimas rayti tekst, bei tekstas "Sveikas pasauli!" galite
rayti ir kitok tekst.
?>

4.2.1 pav. Pirmoji programl

Pvz. 2. Kintamj priskyrimas:


<?php
$kint = 5; // kintamasis $kint priskiriamas skaiiui 5
$kitas_kint = 6; // kintamasis $kitas_kint priskiriamas skaiiui 6
87

/*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.2.2 pav. Sryio operatorius

Pvz. 4. Matematiniai operatoriai:


?php
//1
echo mano ; $a="1"; echo "yra $a mas<br>"; echo "yra $amas <br>"; echo " yra
{$a}mas<br>";
//2
echo $b="100"."<br>" ;
echo $b[0]." <br>";
echo $b[strlen($b)2];
//3
$a = 10;
$b = 2;
$c = 3;
$sum = $a + $b * $c;
echo($sum);
echo $a + $b * $c ;
echo 10 + 2 * 3;
?>
Pvz. 5. Slygos sakinys (4.2.3 pav.):
<?php
$date = date("D");
if ($date == "Fri")
echo "Juk Penktadienis. Palkime!";
else
88

echo "Ir vl nuobodu.";

?>

4.2.1 pav. Slygos sakinys

Naudodamiesi pateiktais pavyzdiais, sukurkite programas:


1. Paraykite kod, kuris ivest ekran js pavard ir vard.
2. Paraykite kod, kuris sujungt dvi duotas eilutes.
3. Paraykite kod, kuris i dviej duot skaii irinkt ir ivest ekran
didiausi.
4. Paraykite kod, kuris ivest ekran einamj dat lietuvikai.

4.3.

Praktin uduotis. PHP masyvai. PHP ciklai, eiluts

Darbo tikslas: gyti darbo su PHP masyvais ir ciklais gdi.


PHP masyvas yra trij ri:

skaitmeninis masyvas (NumericArray) masyvas su numeruotais indeksais;

asociatyvus masyvas (AssociativeArray) masyve, kur ID raktas yra asociatyvus


su reikme;

daugiamatis masyvas (MultidimensionalArray) tarp masyvo reikms gali bti


dar vienas masyvas, kuris sudaro ilg med.

Ciklo sakiniai PHP kalboje gali bti:

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
{

kodas, kuris yra vykdomas;


}
while (slyga);
for ciklo sintaks iek tiek sudtingesn, nei while. Bet kartais naudoti for daug
naudingiau. Sintaks:

for (ciklo_parametras; slyga; parametro_didinimas/mainimas)


{
kodas, kuris bus vykdomas;
}
foreach ciklo kodas naudojamas kiekvieno masyvo elementams apimti.
Sintaks:
foreach ($masyvas as $reiksme)
{
kodas, kuris bus vykdomas;
}

Uduotis. Inagrinkite pavyzdius ir juos ibandykite:


Pvz. 1. Skaitmeninis masyvas (4.3.1 pav.):
<?php
$auto[0] = "Saab";
$auto[1] = "Volvo";
$auto[2] = "BMW";
$auto[3] = "Wollswagen";
echo $auto[0] . " ir " . $auto[1] . " yra ved gamybos automobiliai.";
?>

4.3.1 pav. Skaitmeninis masyvas

Pvz. 2. Asociatyvus masyvas (5.3.2 pav.):


<?php
$metai["Jonas"] = "25";
$metai["Petras"] = "27";
$metai["Antanas"] = "36";
echo "Jonui dabar " . $metai["Jonas"] . " metai.";
?>
90

4.3.2 pav. Asociatyvus masyvas

Pvz. 3. Daugiamatis masyvas (4.3.3 pav.):


<?php
$seima = array(
"Jonaiiai" => array ("Jonas", "Janina", "Janyt"),
"Petraiiai" => array ("Petras"),
"Antanaiiai" => array ("Antanas", "Antanina"));
echo "Ar yra " . $seima["Jonaiiai"][2] . " Jonaii eimoje ?";
?>

4.3.3 pav. Daugiamatis masyvas

Pvz. 4. Ciklas While (4.3.4 pav.):


<?php
$i = 1;
while ( $i <= 5 )
{
echo "Skaiius : " . $i . "<br />";
$i++;
}
?>

91

4.3.4 pav. Ciklas While

Pvz. 5. Ciklas For (rezultatas bus tas pats):


<?php
for($i=0; $i <= 5; ++$i){
echo $i . "<br />";
}
?>
Pvz. 6. Ciklas Foreach (4.3.5 pav.):
<?php
$duomenys = array("Jonas", "Petras", "Antanas");
foreach ($duomenys as $vardas){
echo $vardas . "<br>";
}
?>

4.3.5 pav. Ciklas Foreach

Pvz. 7. Eiluts. Pavyzdiai su eilutmis:


<?php
echo substr('abcdef', 1);
// grazinabcdef
echo substr('abcdef', 1, 3); // grazinabcd
echo substr('abcdef', 0, 4); // grazinaabcd
echo substr('abcdef', 0, 8); // grazinaabcdef
echo substr('abcdef', -1, 1); //grazina f
// galim is eilutes pasiimti koki nors elementa kaip is masyvo:
$string = 'abcdef';
92

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.3.6 pav. Masyvas

Pvz. 9. I eiluts panaikinama viskas, iskyrus raides ir skaiius (4.3.7 pav.):


<?php
$string = "Eilute su skaiciais 156464 ir simboliais !@#$%^";
$new_string = preg_replace("/[^a-zA-Z0-9\s]/", "", $string);
echo $new_string;
$new_string2 = preg_replace("/[^a-zA-Z0-9]/", "", $string);
echo $new_string2;
?>

4.3.7 pav. Vaizdas naryklje

Naudodamiesi pateiktais pavyzdiais, atlikite uduotis:


93

1. Duotas masyvas A, kuriame surayti student egzamin paymiai. Suskaiiuokite


studento paymi vidurk ir iveskite tik tuos paymius kurie didesni u 7.
2. Duotas masyvas, kuriame surayti krepinink giai. Paalinkite i masyvo tas
skaitines reikmes, kurios maesns nei 1,75.
3. Duotas masyvas, kuriame surayti student vardai. Surikiuokite vardus didjimo
tvarka.
4. Duota simboli eilut. Suskaiiuokite, kiek joje yra simboli, ir raides pakeiskite
didisias. Rezultat iveskite ekran.
5. Klaviatra vedama simboli eilut, kur odiai skiriami bent vienu tarpu. Reikia
ivesti eiluts odius po vien ekrane, nurodant odio pradios ir pabaigos
indeksus.
6. Paraykite program, kuri atskirt klaviatra vestos eiluts odius ir paskirstyt
du masyvus: skaii ir kitoki odi. Abiej masyv elementai ir skaii
masyvo suma turi bti parodomi ekrane.

4.4.

Praktin uduotis. PHP skaitymas ir raymas /i failus

Darbo tikslas: gyti skaitymo ir raymo /i failus gdi.


Uduotis. Sukurti tekstin fail duom.txt. raykite fail kelet teksto eilui. Jei pirma ir
paskutin odio raid sutampa, jis pakeiiamas simboliais #. Rezultat raykite fail rez.txt
ir iveskite ekran (4.4.1 pav.).
Programos kodas:
<?php
functionpakeist($zodis){
$raide=preg_split('//', $zodis, 1, PREG_SPLIT_NO_EMPTY);
$kiek_r=count($raide); //suskaiiuojam kiek raidi yra odyje
if($raide[0]==$raide[$kiek_r1]){ //jei pirma raid tokia kaip paskutin
for($i=0; $i<$kiek_r; $i++) //generuojam eilut su tiek pat # simboli
$raide[$i]="#";
returnimplode('', $raide);
}
else //prieingu atveju, paprasiausiai grinam od
return $zodis;
}
$eilute=file('duom.txt');
//nuskaitom dokumento turin masyv
foreach($eiluteas $i=>$zodziai){
$zodziai=explode(" ", $zodziai);
//kiekvien eilut suskaldom po od
foreach($zodziaias $j=>$zodis)
$zodziai[$j]=pakeist($zodis); //kiekvien od tikrinam su funkcija pakeist()
$eilute[$i]=implode(" ", $zodziai); //odius vl sujungiam eilut
94

}
$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.4.1 pav. Vaizdas naryklje

Naudodamiesi pavyzdiu, sukurkite programas:


1. Tekstiniame faile surayti: studento vardas, gis ir svoris, sukurkite rezultat fail
ir j raykite studento vard ir apskaiiuot kno mass indeks.
2. Duomen faile surayti skaiiai. Reikia duomenis i failo surayti masyv ir
ivesti ekran. Suskaiiuokite masyvo element sum ir iveskite ekran.
3. Duomen faile surayti skaiiai. Reikia duomenis i failo surayti masyv.
Masyvo element reikms raomos rezultat fail.

4.5.

Praktin uduotis. Loterija

Darbo tikslas: pagilinti darbo su PHP kalba gdius.

95

Uduotis. Sakykime, vyksta loterija, kurios metu iridenami 6 skaiiai, kiekvienas i j


yra vienaenklis nuo 0 iki 9. Skaiiai gali kartotis ir tarpusavyje nesusij. Lojas viename
biliete bando spti vis eetuk. Jeigu atspja visus eis skaiius (pagal j pozicijas), tada laimi
didj priz. Kad jis laimt, minimaliai utenka atspti 2 skaiius. Sukurkite PHP skript,
kuriam i narykls adreso eiluts pateikiami parametrai ei skaiiai, kuriuos spja lojas.
Skriptas sugeneruoja loim eis skaiius atsitiktine tvarka ir parodo ekrane visus skaiius,
kiek i j atspta bei koks yra laimjimas.
Padarykite prielaid, kad adresas bus formuojamas programai pateikiant parametrus x1,
x2, x3, x4, x5 ir x6, kuriuos ir reikia nuskaityti. raykite ias skaii reikmes masyv. Tai
galima padaryti atliekant veiksmus su vienintele kodo eilute:
$spejimas = array($_GET['x1'], $_GET['x2'], $_GET['x3'], $_GET['x4'],
$_GET['x5'],$_GET['x6']);
Taiau nepamirkite patikrinti, ar adreso eilut vesti reikiami skaiiai ir ar tikrai nra
klaid. Dl to kiekvien kintamj reikia patikslinti, ar tai skaiius nuo 0 iki 9. Panaudokite
funkcij is_int(), kuri nustato, ar kintamasis yra sveikasis skaiius:
$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'];
}
Loimo generavimas. Reikia sukurti tui masyv, o tada eis kartus vykdyti cikl,
kuriame bus generuojamas atsitiktinis skaiius. Kiekvien i j raykite masyv bei
patikrinkite su spjimo masyvo elementu jeigu sutampa, tai padidinkite teising skaii
kintamj vienetu:
$atspeta = 0;
$losimas = array();
for ($i=0; $i <= 5; $i++) {
96

$skaicius = rand(0,9); // rand() atsitiktinis skaiius tarp 0 ir 9


$losimas[] = $skaicius;
if ($skaicius == $spejimas[$i]) { $atspeta++; }
}

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.

Praktin uduotis. Formos ir j apdorojimas

Darbo tikslas: pagilinti gebjimus kurti ir apdoroti formas.


Uduotis. Sukurti form ir apdoroti duomenis. Naudodamiesi HTML kalba, sukurkite
toki form:

4.6.1 pav. Forma

Formos kodas HTML kalba (4.6.1 pav.):


<formaction="rezultatas.php" method="post">
Vardas: <inputtype="text" name="vardas" />
<br /><br />
98

El.pato adresas: <inputtype="text" name="pastas" />


<br /><br />
Gimimo metai:
<selectname="metai">
<option value="2011">2011</option>
<option value="2010">2010</option>
<option value="2009">2009</option>
<option value="2008">2008</option>
<option value="2007">2007</option>
<option value="2006">2006</option>
</select>
<br /><br />
Ar norite gauti naujienas el. patu:
<inputtype="checkbox" name="naujienos" />
<br /><br />
<inputtype="submit" name="submit" value=" Registruotis " />
</form>
Turdami PHP skripte upildyt form, apdorokite jos duomenis, t. y. iveskite ekran
ir patikrinkite teisingum. 4.6.1 pav. pavaizduotos formos upildymo skriptas rezultatas.php:
echo "Js vestas vardas: " . $_POST['vardas'] . "<br />";
echo "Js vestas el. pato adresas: " . $_POST['pastas'] . "<br />";
echo "Js gimimo metai: " . $_POST['metai'] . "<br />";
echo "Ar norite usisakyti naujienas: ";
if ($_POST['naujienos'] && $_POST['naujienos'] == 'on') {
echo 'taip';
} else {
echo 'ne';
}
Upildykite form (4.6.2 pav.):

4.6.2 pav. Formos pildymas

Pagal anksiau sukurt PHP kod turite gauti rezultat (4.6.3 pav.).

99

4.6.3 pav. Formos patikrinimo rezultatas

Analogikai duotajam pavyzdiui sukurkite ir apdorokite form (4.6.4 pav.).

4.6.4 pav. Formos pavyzdys

4.7.

Praktin uduotis. PHP funkcij raymas

Darbo tikslas: gyti gebjimus rayti funkcijas PHP kalba.


Uduotis. Parayti funkcij, kuri suskaiiuot mokinio paymi aritmetin vidurk ir
ivest tik tuos paymius, kurie auktesni u 8:
functionPirmunai($pazymiu_masyvas) {
$suma = 0;
for ($i=0; $i <count($pazymiu_masyvas); $i++) {
if ($pazymiu_masyvas[$i] > 8) {
echo $pazymiu_masyvas[$i] . " ";
}
$suma = $suma + $pazymiu_masyvas[$i];
}
// tikriname, ar masyvas ne tuias, nes i 0 dalinti negalima
if (count($pazymiu_masyvas) > 0) {
$vidurkis = $suma / count($pazymiu_masyvas);
} else {
$vidurkis = 0;
}
100

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.

Praktin uduotis. Vartotoj sesijos

Darbo tikslas: sukurti vartotoj prisijungim ir registracijos sistem.


Uduotis. Sukurti prisijungim ir registracijos sistem, kad galtumte autorizuoti
vartotojus.
I esms yra du bdai, kaip saugoti vartotoj prisijungimo sesijas: tai sausainiukai
(cookies) bei paprastos PHP sesijos. Kadangi labiau paplits antrasis bdas, btent j ir
naudosime.
Sesijos sukrimas ir panaudojimas
Darbas kuriant vartotoj sesijas susideda i keturi etap:

sesijos sukrimas;

sesijos kintamj upildymas;

sesijos kintamj panaudojimas;

sesijos ubaigimas.

Kad inaudotumte su sesijomis susijusias galimybes, paioje skripto pildymo pradioje


turite pradti sesij:
session_start();
Sesija ikviesta, ir galima j naudoti. Kiekvienai vartotojo sesijai serveryje sukuriamas
kintamj masyvas, kuris saugomas tik tos sesijos gyvavimo metu. Dl to, lankytojui pereinant
nuo puslapio prie puslapio, galima atsekti, koks vartotojas, kokios jo teiss, kokius puslapius jis
jau aplanks ir t. t.
Visa tai atliekama, raant duomenis special sesijos masyv $_SESSION, masyvo
elementams priskiriant reikmes:
] $_SESSION['vartotojo_role'] = "1";
// paymi, kad vartotojo rol yra pirma (pvz., administratorius)
$_SESSION['puslapiai']++;
101

// paymi, kad lankytojas aplank dar vien puslap (+1)


Masyvas $_SESSION su isaugotomis reikmmis yra prieinamas visiems PHP
skriptams, kol tas vartotojas neatsijungia nuo sistemos ir neubaigia sesijos.
Kai vartotojas atsijungia nuo sistemos, reikia jo sesij btinai panaikinti. Kitaip gali kilti
problem: prie to paties kompiuterio atsisds kitas mogus prieis prie to vartotojo sesijos be
slaptaodio. Panaikinimas atliekamas su funkcija session_destroy() be parametr.
Sesijos panaudojimo pavyzdys autorizacijos mechanizmas. Pvz. Sakykime, js turite
savo nedidel turinio valdymo sistem ir jums reikia, kad prie jos prisijungt tik administratorius
su tam tikru vartotoju ir slaptaodiu. Prisijungimo forma atrodyt taip:

4.8.1 pav. Prisijungimo forma

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.

Praktin uduotis. JavaScript pradmenys, JavaScript kintamieji

Darbo tikslas: gyti JavaScript kalbos pradmenis, susipainti su pagrindinmis struktromis, su


JavaScript kalbos kintamaisiais, juos aprayti ir imokti naudoti.
JavaScript kalbos elementai terpiami HTML kod:
<scriptlanguage="JavaScript">
<!...
//skripto programa
...
//->
</script>
Uduotis. Inagrinkite pavyzdius ir ibandykite praktikai:
Pvz. 1. Praneimams spausdinti naudojamos komandos alert ir document.write:
<scriptlanguage="JavaScript">
alert(Informacijos ivedimo dialogo lange pavyzdys)
</script>
<scriptlanguage="JavaScript">
document.write(Informacijos ivedimo narykls lange pavyzdys)
</script>
Informacijai rayti naudojami operatoriai alert ir prompt.
Pvz. 2. Informacijos ivedimas:
<scriptlanguage="JavaScript">
if (confirm(Ar norite perirti kit puslap ?))
document.write(Perira)
else
document.write(Tas pats puslapis)
</script>
Pvz. 3. Informacijos ivedimas (4.9.1 pav.):
<scriptlanguage=JavaScript>
var s
s=prompt(veskite savo vard,Jonas)
document.write(s)
</script>

4.9.1 pav. Informacijos ivedimas

103

Pvz. 4. Matematiniai operatoriai (4.9.2 pav.):


<html>
<body>
<scripttype="text/javascript">
var x;
x=5+5;
document.write(x);
document.write("<br />");
x="5"+"5";
document.write(x);
document.write("<br />");
x=5+"5";
document.write(x);
document.write("<br />");
x="5"+5;
document.write(x);
document.write("<br />");
</script>
<p>Taisykl: Jei Js sudsite skaii ir eilut, rezultatas bus eilut.</p>
</body>
</html>

4.9.2 pav. Matematiniai operatoriai

Naudodamiesi pateiktais pavyzdiais, sukurkite skriptus:


1. Paraykite skriptus, kuriuose bt panaudojamos daugybos, dalybos, atimties operacijos.
2. Iveskite ekran savo vard ir pavard (naudokite operatori Prompt).

4.10. Praktin uduotis. JavaScript operacijos


Darbo tikslas: susipainti su

JavaScript kalbos operacijomis, sukurti skriptus, naudojant

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>

4.10.1 pav. Slygos sakinys

Pvz. 2. Irinkimo sakinys (4.10.2 pav.):


<html>
<body>
<scripttype="text/javascript">
vard=newDate();
vartheDay=d.getDay();
switch (theDay)
{
case 5:
document.write("<b>pagaliau penktadienis</b>");
break;
case 6:
document.write("<b>puiku etadienis</b>");
break;
case 0:
document.write("<b>mieguistas sekmadienis</b>");
break;
default:
document.write("<b>A tikiuosi gero savaitgalio!</b>");
}
</script>
</body>
</html>
105

4.10.2 pav. Irinkimo sakinys

Pvz. 3. Didesnio skaiiaus i dviej duot radimas (4.10.3):


<html>
<body>
<scripttype="text/javascript">
var a = 5;
var b = 2;
if (a > b) {document.write("max yra " + a);}
else {document.write("max yra " + b);}
</script>
</body>
</html>

4.10.3 pav. Maksimalaus skaiiaus paieka

Naudodamiesi pavyzdiais, sukurkite skriptus:


1. Pakeiskite 1 pavyzd: jei laikas js naryklje didesnis nei 10 (t. y. prieingu atveju),
bt parayta Laba diena.
2. Papildykite 3 pavyzd, kad i trij duot skaii bt surastas ir ivestas didiausias.
3. Paraykite skriptus (naudokite ciklo operatorius for ir while): kintamasis i ciklo metu
kinta nuo 0 iki 5. Ciklo metu ivedamos visos kintamojo reikms (4.10.4 pav.):
106

4.10.4 pav. Kintamasis kinta nuo 0 iki 5

4.11. Praktin uduotis. JavaScript funkcijos


Darbo tikslas: gyti darbo su JavaScript funkcijomis gdi, parayti funkcijas.
Funkcijos sintaks:
functionFunkcijos_pavadinimas(parametras1, parametras2...){
Funkcij sudarantys operatoriai...
return reikm;
}
parametras1, parametras2 funkcijai perduodami argumentai arba parametrai. Return
funkcijos grinama reikm. Funkcija parametr ir grinam reikmi gali ir neturti.
Uduotis. Inagrinkite ir praktikai ibandykite pavyzdius:
Pvz. 1. Funkcija be argument:
<html>
<head>
<scripttype="text/javascript">
functiondisplaymessage()
{
alert("Sveikas pasauli!");
}
</script>
</head>
<body>
<form>
<inputtype="button" value="Click me!" onclick="displaymessage()" />
</form>
</body>
</html>
Pvz. 2. Funkcijos kvietimas su nuoroda (4.11.1 pav.):
<html>
<head><title>Functions</title>
<scripttype="text/javascript">
107

functiongreetings(){ // Function defined within<head>tags


document.bgColor="lightblue";
alert("Linkjimai tau!");
}
</script>
</head>
<bodybgcolor="silver">
<divalign="center">
<a href="JavaScript:greetings()"><big>Paspausk ia pasisveikinimui</big>
</a><br />
</div>
</body>
</html>

4.11.1 pav. Vaizdas naryklje

Pvz. 3. Funkcijos kvietimas i vykio:


<html>
<head><title>FunctionsandEvents</title>
<scripttype="text/javascript">
functiongreetings(you){ // Functiondefinition
document.bgColor="lavender";
alert("Sveikininimai ir linkjimai! " + you);
}
</script>
</head>
<body>
<divalign="center">
<form>
<inputtype="button"
value="Welcomebutton"
onClick="greetings('Danai');"
/>
</form>
</div>
</body>
</html>
108

Pvz. 4. Funkcija su argumentais (4.11.2 pav.):


<html>
<head><title>ReturnValue</title>
<scripttype="text/javascript">
functionmileage(miles, gas){
returnmiles/gas; // grina dalybos rezultat
}
</script>
</head>
<bodybgcolor="lightgreen">
<fontface="arial" size="+1">
<divalign="center">
<imgsrc="car-wave.gif">
<scripttype="text/javascript">
vardistance=eval(prompt("Kiek kilometr js nuvaiavote?", ""));
varamount=eval(prompt("Kiek litr benzino js sunaudojote?", ""));
var rate = mileage(distance, amount);
// Returnvalueassigned to rate
alert("Js rida"+ rate +" kilometr 1 litrui benzino");
</script>
</div>
</font>
</body>
</html>

4.11.2 pav. Vaizdas naryklje

Naudodamiesi pavyzdiais, sukurkite skriptus:


1. Sukurkite funkcij, kuri sujungia 3 kintamuosius ir grina reikm t kintamj
sjung. Rezultat iveskite ekran.
2. Sukurkite funkcij, kuri apskaiiuot kno mass indeks (argumentai: kno mass ir
gio reikms). Rezultat iveskite ekran.
109

4.12. Praktin uduotis. JavaScript masyvai


Darbo tikslas: gyti darbo su JavaScript masyvais gdi.
Uduotis. Sukurti objekt masyv myCars.
Masyvas tai specialus kintamasis, kuris tuo paiu metu gali turti kelet reikmi. Sukurti
masyv galima trimis bdais:
1 bdas:
varmyCars=newArray(); // sukuriamas objekt masyvas
myCars[0]="Saab";
//
myCars[1]="Volvo";
myCars[2]="BMW";
2 bdas:
varmyCars=newArray("Saab","Volvo","BMW");
3 bdas:
varmyCars=["Saab","Volvo","BMW"];
Inagrinkite ir praktikai ibandykite pavyzdius:
Pvz. 1. Masyvo element ivedimas ekran (4.12.1 pav.):
<html>
<body>
<scripttype="text/javascript">
var i;
varmycars = newArray();
mycars[0] = "Saab";
mycars[1] = "Volvo";
mycars[2] = "BMW";
for (i=0;i<mycars.length;i++)
{
document.write(mycars[i] + "<br />");
}
</script>
</body>
</html>

110

4.12.1 pav. Masyvo element ivedimas

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

2. Duoti du masyvai A(n) ir B(m). Masyv didiausius elementus sukeisti vietomis, o t


element aritmetin vidurk urayti abiej masyv gale. Spausdinti masyvus prie ir po
veiksm.
3. Duotas masyvas A(10). Gauti masyvo teigiam element sandaug, apskaiiuoti
neigiam element sum ir nulini kiek.
4. Duotas masyvas A(n). Irikiuoti masyvo elementus didjimo tvarka ir maiausi i j
paalinti.

4.13. Praktin uduotis. JavaScript datos ir laiko objektai, vykiai


Darbo tikslas: gyti darbo su JavaScript datos ir laiko objektais gdi.
Objektas Date naudojamas vairiems veiksmams su laiku ir datomis atlikti. Objektas turi
daug metod datai nustatyti, reikmms gauti.
Date objektai yra kuriami panaudojant Date() konstruktori.
newDate() // currentdateandtime
newDate(milliseconds) //millisecondssince 1970/01/01
newDate(dateString)
newDate(year, month, day, hours, minutes, seconds, milliseconds)
Datos iniciavimo pavyzdiai:

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>

4.13.1 pav. Laikrodio nustatymas

Pvz. 5. Savaits dienos rodymas puslapyje (4.13.2 pav.):


<html>
<body>
<scripttype="text/javascript">
vard=newDate();
varweekday=new Array(7);
weekday[0]="sekmadienis";
weekday[1]="pirmadienis";
weekday[2]="antradienis";
weekday[3]="treiadienis";
weekday[4]="ketvirtadienis";
weekday[5]="penktadienis";
weekday[6]="etadienis";
document.write("iandien yra " + weekday[d.getDay()]);
</script>
</body>
</html>

115

4.13.2 pav. Savaits dienos nustatymas

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

4.13.3 pav. Vaizdas naryklje

Naudodamiesi pavyzdiais, atlikite uduotis:


1. Paraykite kod, kuris, paspaudus mygtuk, terpt puslap einamj dat, laik, savaits
dien ir metus lietuvikai.
2. Sukurkite program, kuri parodyt, kiek dien liko iki js gimtadienio.
3. Sukurkite program, kuri reaguot pele atliekamus veiksmus.

4.14. Praktin uduotis. JavaScript narykls, langai


Darbo tikslas: gyti darbo su JavaScript naryklmis gdi.
Uduotis. Inagrinkite ir praktikai ibandykite pavyzdius:
Pvz. 1. Kodas parodo narykls pavadinim (4.14.1 pav.):
<head>
<scriptlanguage="javascript">
<!-varbrowserName=navigator.appName;
if (browserName=="Netscape")
{
alert("Labas Netscape vartotojau!");
}
else
{
if (browserName=="Microsoft Internet Explorer")
{
alert("Labas, Explorer vartotojau!");
}
else
{
alert("Kokia ia narykl??");
}
}
//-->
</script>
</head>
117

4.14.1 pav. Narykls pavadinimas

Pvz. 2. Kodas parodo narykls versijos numer:


<head>
<scriptlanguage="javascript">
<!-varbrowserVer=parseInt(navigator.appVersion);
if (browserVer>= 4)
{
alert("Yourbrowserisnewenoughformysite.");
}
else
{
alert("Ithinkyouneed a newbrowser!");
}
//-->
</script>
</head>
Pvz. 3. Paspaudus mygtuk Atidaryti, naujame lange atveria tinklalap www.marko.lt:
<html>
<head>
</head>
<body>
<scripttype="text/javascript">
function Atidaryti() {
window.open("http://www.marko.lt")
}
</script>
</head>
<body>
<inputtype=buttonvalue="Atidaryti lang" onclick="Atidaryti()" />
</body>
</html>
118

Naudodamiesi pavyzdiais, sukurkite skriptus:


1. Paraykite kod, kuris parodyt js narykls pavadinim, versij, naudojam kalb ir
kt. informacij.
2. Parenkite tinklalap, su kuriuo kartu atsivert pagalbinis pasisveikinimo langas. Po 5
sekundi pagalbinis langas turi bti udaromas.

4.15. Praktin uduotis. JavaScript formos


Darbo tikslas: gyti darbo su JavaScript formomis gdi.
Uduotis. Inagrinkite ir praktikai pritaikykite pateiktus pavyzdius:
Pvz. 1. Naudojant form elementus, interneto svetaini lankytoj registravimo tinklalapis
apraomas (4.15.1 pav.):
<html>
<head>
</head>
<body>
<formaction ="http://puslapis.lt/prog/forma1" method="post">
Vardas: &nbsp;&nbsp;<inputtype="text" name="vardas">&nbsp;&nbsp;
Pavard: <inputtype="text" name="pav"><br>
E-Patas: <inputtype="text" name="adresas"><br><br>
<center><inputtype="submit" value="Registruotis">&nbsp
<inputtype="reset" value="Trinti"></center></form>
</body>
</html>

4.15.1 pav. Formos pavyzdys

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

<formname=Siuntimas e-patu" action="mailto:Tavomail@Mail.LT"


method="POST" title="Test" entype="text/plain">
Pvz. 2. Parinkimo akuts ir ymimieji langeliai (4.15.2 pav.):
<html>
<head>
</head>
<body>
<formname="Prekyba">
<p>Vardas: <inputtype="text" name="vard" size="15">
Pavard: <inputtype="text" name="pav" size="20"><br>
<p><b>Paymkite jums patinkanius puslapius:</b><br><br>
<inputtype="checkbox" name="dlf" value="ON">Delfi.LT
<inputtype="checkbox" name"alf" value="ON">Alfa.LT
<inputtype="checkbox" name"one" value="ON">One.LT
<br><br>
<inputtype="submit" value="Usakyti">&nbsp;
<inputtype="reset" value="Trinti"></p>
<form>
</body>
</html>

4.15.2 pav. Parinkimo akuts ir ymimieji langeliai

Uduotys
1. Naudodamiesi lenteli ir eilui apraymo priemonmis, pakeiskite 1 pvz. pateikto
tinklalapio apraym, kad jo ivaizda bt kaip 4.15.3 paveiksllyje:

120

4.15.3 pav. Formos pavyzdys

2. Sukurkite form, kurios ivaizda bt kaip 4.15.4 pav.:

4.15.4 pav. Formos pavyzdys

3. Sukurkite registracijos form, kurios ivaizda bt kaip 4.15.5 pav.:

4.15.5 pav. Formos pavyzdys

4.16. Praktin uduotis. JavaScript objekt masyvo krimas


Darbo tikslas: gyti darbo su JavaScript objekt masyvais gdi.
JavaScript objektai tai vardo ir reikms sraai. Vardai yra simboli sekos, o reikms
gali bti skaiiai, simboli sekos, logins reikms bei objektai (taip pat masyvai ir funkcijos).
JavaScript objektai gyvendinami naudojantis sraais, kad reikms galt bti grinamos kuo
greiiau. Jeigu reikm vardo-reikms srae yra funkcija, galima laikyti, kad tai metodas. Kai
ikvieiamas objekto metodas, metodo kintamasis this laiko nuorod objekt. Per kintamj
metodas turi prijim prie kit j ikvietusio objekto metod.
121

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

Naudodamiesi pateiktais pavyzdiais, atlikite uduotis:


1. Duotas objekt masyvas (student sraas), kuriame yra tokie laukai: pavard, vardas,
grups ifras, vis egzamin vertinimai. Ivesti ekran pirmn (paymi vidurkis > 8)
ir atsiliekanij (paymi vidurkis < 6) sraus.
2. Duotas objekt masyvas (student sraas), kuriame yra tokie laukai: pavard, vardas,
kursas, vis egzamin paymiai. Ivesti ekran duomenis: pavard, vard, kurs,
atuntuk, devintuk, deimtuk kiekius.
3. Parayti program, kai duotas n ra masyvas, kuriame yra informacija apie krepininkus
(rao struktra: krepsininkas.vardas; krepsininkas.pavarde; krepsininkas.ugis). Programa
i ra masyvo turt paalinti visus duomenis apie krepininkus, kuri gis maesnis
nei 2 metrai. Ivesti pradin ir pakeist ra masyvus.

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

Leidinys skirtas Marijampols kolegijos Verslo ir technologij fakulteto ir kit auktj


mokykl studentams, studijuojantiems objektin programavim. is mokymosi rinkinys gali bti
naudingas visiems, norintiems imokti objektinio programavimo pagrind.

VILMA RIKEVIIEN

OBJEKTINIS
P R O G R A M AV I M A S
Mokymo(si) rinkinys

Redagavo Nijol Bagdonien


Maketavo Neringa Palubinskait

Tiraas 40 egz. Usakymas 313

Leidykla Piko valanda, emaits g. 59, LT-68303 Marijampol


Tel./faks. (8 343) 54 216, el. p. leidyba@pikovalanda.lt, www.pikovalanda.lt
126

You might also like