You are on page 1of 171

Kozmajer Viktor

PHP s MySQL
az alapoktl

Kozmajer Viktor

PHP s MySQL
az alapoktl

BBS-INFO Kiad, 2011.

PHP s MySQL az alapoktl

Minden jog fenntartva! A knyv vagy annak oldalainak


m{sol{sa, sokszorost{sa csak a kiad r{sbeli hozz{j{rul{s{val trtnhet.
Ksznet Hegeds G{bornak, aki nlkl ez a knyv nem
jhetett volna ltre
A knyv nagyobb mennyisgben megrendelhet a kiadn{l: BBS-INFO Kiad, 1630 Bp. Pf. 21. Tel.: 407-17-07
A knyv megr{sakor a szerz s a kiad a lehet legnagyobb gondoss{ggal j{rt el. Ennek ellenre, mint minden knyvben, ebben is elfordulhatnak hib{k. Az ezen hib{kbl ered esetleges k{rokrt sem a
szerz, sem a kiad semmifle felelssggel nem tartozik, de a kiad
szvesen fogadja, ha ezen hib{kra felhvj{k figyelmt.

ISBN 978-963-9425-74-3
Kiadja a BBS-INFO Kft.
1630 Budapest, Pf. 21.
Felels kiad: a BBS-INFO Kft. gyvezetje
Nyomdai munk{k: Bir Family nyomda
Felels vezet: Bir Kriszti{n

Tartalomjegyzk

TARTALOMJEGYZK
1. Bevezet ............................................................................ 9
2. APACHE, MySQL, PHP ............................................... 11
2.1. Alapfogalmak ......................................................... 11
2.2. Szerveroldali szkriptek s mkdsk ............... 13
2.3. Az APACHE2TRIAD teleptse ........................... 15
3. A PHP program szerkezete .......................................... 19
3.1. Els PHP programunk .......................................... 20
3.2. PHP kd blokkjainak kijellsre szolg{l
elemek ..................................................................... 22
4. Fggvnyek .................................................................... 23
4.1. A print fggvny ................................................... 23
4.2. A date fggvny..................................................... 26
4.3. Matematikai fggvnyek ...................................... 27
5. V{ltozk .......................................................................... 30
5.1. V{ltoz tpus{nak lekrdezse a
gettype() fggvny ................................................ 34
5.2. V{ltoz tpus{nak mdost{sa
a settype() fggvny .............................................. 37
6. Oper{torok s kifejezsek PHP-ben .......................... 39
7. Vezrlsi szerkezetek ................................................... 46
7.1. El{gaz{s Az IF utast{s ...................................... 46

PHP s MySQL az alapoktl

7.1.1. Pldaprogram az IF utast{s


bemutat{s{ra .............................................. 50
7.2. SWITCH szerkezet ................................................. 54
7.2.1. Pldaprogram az SWITCH
szerkezet bemutat{s{ra: ........................... 55
8. CIKLUSOK ..................................................................... 58
8.1. A WHILE() ciklus................................................... 59
8.2. A DO<WHILE() ciklus ........................................ 61
8.3. A FOR() ciklus ........................................................ 63
8.3.1. Pldaprogram a FOR ()
ciklus bemutat{s{ra .................................. 64
8.4. Egym{sba {gyazott ciklusok ................................ 65
8.4.1. Pldaprogram az egym{sba {gyazott
ciklusokhoz ................................................ 65
9. rlapok ........................................................................... 68
9.1. rlap elemek: ......................................................... 70
9.2. rlap: az action TAG s a paramter {tad{s ...... 73
10. rlapok haszn{lata a gyakorlatban ......................... 76
10.1. Regisztr{cis rlap ksztse............................. 76
10.2. Tglalap kerlete s terlete rlap
segtsgvel .......................................................... 88
11. SQL adatb{zisok ......................................................... 96
11.1. Bevezet, alapfogalmak ..................................... 96
11.2. MySQL adatb{zisok ........................................... 97
11.3. Egy t{bla felptse MySQL bell ..................... 98
12. PHP MyAdmin .......................................................... 101
12.1. Legfontosabb adattpusok a
MySQL-en bell ................................................ 102
12.2. A MySQL mkdse ........................................ 106
12.3. j adatb{zis ltrehoz{sa
phpMyAdmin-ban ............................................ 106
12.4. Adatb{zis, adatt{bla ksztse ........................ 109

Tartalomjegyzk

13. SQL parancsok ........................................................... 115


13.1. Belps a DOS-os (konzolos) felletre: .......... 115
13.2. Lekrdezs SQL parancsokkal: ....................... 117
13.3. Kapcsolat ltrehoz{sa MySQL-ben................. 120
14. DML adatmdost parancsok ............................. 122
15. PHP s MySQL sszekapcsol{sa ............................ 124
15.1. Pldaprogram PHP s MySQL
sszekapcsol{s{ra ............................................. 126
16. CMS rendszerek ........................................................ 132
16.1. A CMS-ek elnyei ............................................. 133
16.2. Magyar nyelven is elrhet
CMS rendszerek ................................................ 135
16.3. CMS-ek teleptse {ltal{noss{gban ................ 136
17. Megvalst{sok PHP-vel .......................................... 139
17.1. Kpgalria PHP-ben 1.0 ................................... 139
17.2. Kpgalria PHP-ben 2.0 ................................... 143
17.3. Adatb{zisok kimentse DUMP-ol{s............ 146
17.4. Linkaj{nl ksztse.......................................... 151
17.4.1. Linkek adatt{bla ltrehoz{sa ........... 152
17.4.2. Linkek.php elksztse ...................... 154
17.5. Admin fellet elksztse ................................. 157
17.5.1. Admin.php elksztse ..................... 158
17.5.2. Torol.php elksztse......................... 162
17.5.3. Linkfelvitel.php elksztse .............. 164
17.5.4. Felvisz.php elksztse...................... 168

PHP s MySQL az alapoktl

Bevezet

1. Bevezet
Ez a zsebknyv aj{nlott mindazok sz{m{ra,
akik m{r rendelkeznek minim{lis ismeretekkel a
HTML nyelvvel kapcsolatban, megtanult{k a weboldalszerkeszts alapjait, de szeretnnek tov{bb
lpni, a dinamikus weblapok ir{ny{ba. Szintn
hasznos lehet azon olvasknak is, akik m{r megismerkedtek m{s programnyelvekkel s most betekintst szeretnnek nyerni, hogyan is mkdik
mindez webes krnyezetben. Sz{mukra (is) a legide{lisabb v{laszt{s a vil{g egyik legkedveltebb
webprogramozi nyelve, a PHP s a szintn elterjedt MySQL webes adatb{zis-kezel rendszer,
melynek sz{mos elnye van. Segtsgkkel professzion{lis honlapokat programozhatunk le, szszekthetjk ket az {ltalunk ksztett, webes
adatb{zisokkal, amelyeket a vil{gon b{rhonnan
elrhetnk az internet segtsgvel. Weboldalainkat dinamikuss{ tve, ak{r m{sodpercenknt frissl inform{cikkal l{thatjuk el, az adatok felvtelt, mdost{s{t s trlst elvgezhetjk p{r

10

PHP s MySQL az alapoktl

kattint{ssal, a saj{t kszts admin felletnkn


s adatb{zisunkban. s b{rmennyire is hihetetlen,
mindkt fenti komponens teljesen ingyenes!
A knyv egym{sra pl fejezetein vgighaladva, az olvas megismerkedhet a PHP nyelv alapjaival, kpes lesz n{llan is kisebb PHP programok
megr{s{ra, a MySQL adatb{zis-kezels alapjait is
megtanulhatja, gy webes adatb{zist is kszthet,
amelyet az ismeretei alapj{n kpes lesz PHP weboldalakkal sszektni. Megtanulja az rlapksztst, gy ak{r saj{t adminisztr{cis fellettel rendelkez, dinamikusan frissthet honlapot is kpes
lesz elkszteni. Megismerkedhet a CMS (tartalomkezel) rendszerekkel, gy minim{lis programozi tud{ssal is kpes lesz n{llan honlapokat
telepteni, majd azokat klsleg testre szabni s
tartalommal feltlteni.
A PHP kdrszletek s az illusztr{l kpernykpek nagyban segtenek, hogy a lertakat saj{t
maguk is meg tudj{k valstani (Macromedia/Adobe Dreamweaver, illetve PHP MyAdmin)
segtsgvel.

11

PHP s MySQL az alapoktl

2. APACHE, MySQL, PHP


2.1.

Alapfogalmak

Mieltt b{rmibe is belekezdennk, ismerjk


meg a legfontosabb alapfogalmakat.
APACHE: webszerver alkalmaz{s, ami lehetv
teszi PHP programunk saj{t gpnkn trtn
futtat{s{t.
MySQL: adatb{zis-kezel krnyezet.
PHP: programoz{si nyelv webes felleten (a
Personal Home Page rvidtse). A PHP
szerveroldali szkript nyelv, amivel egyszeren
tudunk aktv weboldalakat kszteni. Ltezik
kliensoldali (pl.: Java) s szerveroldali
kiszolg{l{s (pl.: PHP).
Az Apache-ba pl be a PHP nyelv, ezt alapj{raton nem ismeri fel a bngsz. A HTML oldal
kdj{ban a PHP kdot: <?php s ?> tag-ek kz
kell rni. Ezek a hagyom{nyos, PHP kdblokk kijellsre szolg{l elemek.

12

PHP s MySQL az alapoktl

A knnyebb {tl{thats{g s a programhib{k


knnyebb szlelse rdekben clszer weblapszerkeszt programot haszn{lnunk (pl. Adobe
Dreamweaver), mivel ezek tartalmaznak kdnzet
funkcit is, amiben m{s-m{s sznnel jelli a program a klnbz PHP-s kdrszleteket, fggvnyeket. Ha valamit elrunk a program begpelse
sor{n, akkor a kdsznezete is megv{ltozik majd,
szrevehetbbek a szintaktikai hib{k, gy knnyen
szlelhet, hogy elrontottunk valamit, s azt is,
hogy hol. Ez jelentsen megknnyti a munk{nkat!
A PHP kezdetben csak egy makrgyjtemnynek indult, ami a szemlyes honlapok programoz{s{t hivatott t{mogatni. Neve is innen ered:
Personal Home Page (egy m{sik forr{s szerint
Personal Homepage Programming).
A PHP azonban tlntt kezdeti feladat{n, s
m{ra m{r egy komplett web-programozi nyelvv
alakult. Legtbbszr ezt alkalmazz{k, mert nylt
forr{skd s ez{ltal ingyenes, az Internetrl CMS
(Content Management System) rendszereket tudunk letlteni, amik elre elksztett, komplett
PHP oldalak s hozz{juk tartoz design-ok (tm{k, kinzetsm{k a honlaphoz), kiegsztsek,
plugin-ok.

13

2.2.

PHP s MySQL az alapoktl

Szerveroldali szkriptek
s mkdsk

A HTML nyelv eszkzeivel egytt haszn{lva


interaktvv{ tehetjk weboldalainkat. A PHP
tulajdonkppen egy szerveroldali szkript nyelv.
A szerveroldali szkriptek a kvetkezkpp
mkdnek:
1. A bngszbe berjuk a PHP program nevt
(elrsi tvonal{val egytt).
2. A szerver, ahol a PHP oldal tal{lhat, megkeresi a PHP f{jlt, s egy rtelmez program
segtsgvel lefuttatja azt.
3. Futtat{s kzben egy n. eredmny HTML
oldalt kszt, melyet miut{n a PHP kd
vgre rt visszakld a felhaszn{li oldalra
a bngsznek.
4. A felhaszn{l m{r csak ezt a PHP kd alapj{n kszlt HTML oldalt l{tja.
A Windows oper{cis rendszer al{ tbb olyan
programcsomag is ltezik, amely minden szksges sszetevt feltelept sz{munkra a programoz{s
elksztshez.
Ilyenek pl.:
PHP HOME
APP SERVER
APACHE2TRIAD
(Mindh{rom ingyenes.)

14

PHP s MySQL az alapoktl

SZERVER pl.: Apache webszerver: adatb{zis-kezel


rendszer (MySQL) s bepl PHP modul is
megtal{lhat benne

Apache, MySQL, PHP

2.3.

15

Az APACHE2TRIAD teleptse

Az Apache webszerver segtsgvel PHP


f{jlokat futtathatunk az otthoni sz{mtgpnkn.
APACHE2TRIAD-n{l a HTDOCS mappa a weben
elrhet oldalakat tartalmazza. Ebbe a mapp{ba
kell helyeznnk azokat a f{jlokat, amik PHP
kdblokkot tartalmaznak.
A f{jlokat gy tekinthetjk meg, hogy
begpeljk
a
bngsznk
cmsor{ba
a
http://localhost cmet (a http:// nem szksges).
Ezt az oldalt rdemes be{lltani kezdoldalknt a
bngsznkben, ha sokat programozunk PHP-ben!
A cm begpelse ut{n megjelenik a webszerver
kezdoldala s innen tudunk belpni azokba a
mapp{kba, ahova PHP oldalainkat elhelyeztk.
Innen tudjuk elrni a webszerver MySQL adatb{zis-kezel modulj{t, a grafikus kezelfellettel rendelkez phpMyAdmint.
Az Apache teleptse semmivel sem nehezebb,
mint b{rmely m{s program. A knyvben az 1.5.4es verzi teleptst mutatjuk be ebben a rszben.
A telepts ut{n m{r rendelkezni fog a gpnk
beptett PHP fordtval, illetve MySQL adatb{ziskezel modullal (mindkett 5-s verzi lesz a
1.5.4-es Apache-n{l), gy ezeket nem kell kln
teleptennk, rgtn neki is {llhatunk a PHP
programoz{snak!
Nzzk a telepts lpseit:

16

PHP s MySQL az alapoktl

1., Tltsk le az Apache teleptjt a


http://apache2triad.netrl s indtsuk el!
A megjelen kpernyn be{llthatjuk, milyen
komponenseket teleptsen a program (hagyjuk,
hogy mindent teleptsen!). Ezek ut{n kattintsunk a
Next felirat gombra a kvetkez lpshez.

2., A kvetkez lpsben megadjuk, melyik


meghajtra szeretnnk telepteni a webszervert. Ha
ezt megtettk, kattintsunk a Next gombra!
3., A harmadik lpsben meg kell adnunk egy
jelszt, amit az Apache webszerver haszn{latakor
fogunk alkalmazni (pl.: adatb{zishoz kapcsoldunk, ami a helyi gpen van ezekrl bvebben
ksbb). A jelsz minimum 8, maximum 32
karakter hossz lehet! Egybknt a hozz{ tartoz

Apache, MySQL, PHP

17

felhaszn{lnevnk a root lesz, legal{bbis a


localhost esetben.

4., Ezen lpsek ut{n m{r csak el kell fogadjuk a


licenc-szerzdst s indulhat is a telepts! Miut{n
a telept feltette gpnkre a megadott mapp{ba az
Apache-ot, a kpernyn mg egyszer krni fogja a
jelszavunkat egy DOS-os ablakban. Gpeljk be a
3. pontban megadott jelszavunkat s nyomjunk
Enter-t! Ezek ut{n m{r csak jra kell indtanunk a
sz{mtgpnket s m{r haszn{lhatjuk is az
APACHE2TRIAD-ot!
Fontos! Ha nem tal{ljuk az apache2triad nev
mapp{t a megadott helyen, ne lepdjnk meg, a
mappa alapbe{llt{sknt rejtett attribtumot kap.

18

PHP s MySQL az alapoktl

Ha f{jlkezel programot haszn{lunk (pl.: Total


Commander) {lltsuk be, hogy mutassa a rejtett
f{jlokat is (Commander-nl: Be{llt{sok
[ltal{nos Be{llt{sok Kperny L{tszik a
rejtett/system f{jl)!

19

PHP s MySQL az alapoktl

3. A PHP program
szerkezete
Egy PHP program nem m{s, mint szokv{nyos
HTML kd, melybe a PHP kd a <?php s a ?>
jelek kz kerl. Tbbsoros kd esetn a sorok
vgre pontosvesszt kell tennnk, ezzel z{rjuk
PHP-ben a parancsokat.
Figyelem! A tapasztalat szerint ezeknek a
pontosvesszknek a lefelejtse az egyik leggyakoribb kdol{si hiba. Szintaktikailag hib{s kd
esetn a PHP rtelmez hibazenetet jelent meg a
kpernyn, rtelemzavar hiba esetn a tov{bbi
vgrehajt{st befejezi. Nagy segtsg, hogy a
hibazenetben az rtelmez kirja a hiba helyt is.
A PHP rtelmez program az al{bbi szab{lyokat veszi figyelembe a PHP kd rtelmezse
kzben:
Ha HTML kdot tal{l, azt v{ltoztat{s
nlkl {tm{solja az eredmny oldalra.

20

PHP s MySQL az alapoktl

Ha PHP kdot tal{l, azt lefuttatja Ha azt a


parancsot kapja pld{ul, hogy rd ki!,
akkor a kirand szveget az eredmnyoldalra rja ki, mgpedig az aktu{lis
pozciba.
Ha b{rmilyen m{s parancsot kap, azt
vgrehajtja s nem nyl az eredmny
oldalhoz.

3.1.

Els PHP programunk

Amikor PHP oldalt runk, tudatnunk kell a


feldolgozval, mely rszeket hajtsa vgre. Ha nem
adjuk meg, hogy a f{jl mely rszei tartalmaznak
PHP blokkokat, akkor mindent HTML-nek tekint
s v{ltoztat{s nlkl tov{bbkldi a bngsz
sz{m{ra.
A PHP blokk kijellsnek elhalaszt{sa s
ennek kvetkezmnye egy pld{val jl szemlltethet:
1. Ez esetben nem jelljk ki a PHP blokkot.
Ekkor a bngsz, az elbb lertak szerint HTMLnek nz mindent. A mi esetnkben a print
fggvnyt (bvebben rla a kvetkez fejezetben)
egyszer szvegknt rtelmezi s a bngsznk a
print (Hell vil{g!); szveget jelenti meg. Vastag
betvel jelltk a kt forr{skd azon rszeit,
amelyekben azok klnbznek egym{stl:

A PHP program szerkezete

21

<html>
<head>
<title>Els PHP programunk</title>
</head>
<body>
print (Hell vilg!);
</body>
</html>
2. Ez esetben m{r kijelljk a PHP blokkot a
kvetkez t{bl{zatban l{that hagyom{nyos <?php
?> jellssel. Ekkor a PHP feldolgoz szleli, hogy
mi a print fggvnyt haszn{ljuk a blokkban s e
szerint vgre is hajtja a parancsot. Bngsznkben
m{r csak a Hell vil{g! szveg jelenik meg:
<html>
<head>
<title>Els PHP programunk</title>
</head>
<body>
<?php
print (Hell vilg!);
?>
</body>
</html>

22

PHP s MySQL az alapoktl

3.2.

PHP kd blokkjainak
kijellsre szolgl elemek

Elnevezs

Kezd elem

Z{r elem

<?php

?>

Rvid

<?

?>

ASP stlus

<%

%>

Hagyom{nyos

Megjegyzs: A PHP blokkon bell fzhetnk


megjegyzseket a programunkhoz! Ezt esetnkben
fontos megemlteni, mert a ksbbi fejezetek
pldaknt bemutatott forr{skdokban szintn
fogok haszn{lni ilyeket. Az egyszer HTML
oldalak szerkesztsnl ilyen esetben a
<!-- Ide rjuk a megjegyzst --> tag-et haszn{ljuk.
A PHP-n{l a kvetkez megjegyzsi form{k
{llnak a rendelkezsnkre:
// egysoros megjegyzs
# ez is egy egysoros megjegyzs
/* ezt a fajta megjegyzst mr nem egy,
hanem tbb soros megjegyzsnl hasznljuk */
Ezek kzl b{rmelyikkel is runk megjegyzst,
az nem fog l{tszani az eredmny oldalon, csup{n a
PHP oldalunk kdnzetben.

23

PHP s MySQL az alapoktl

4. Fggvnyek
A fggvnyek olyan parancsok, amelyek
valamilyen mveletet vgeznek, tbbnyire attl
fggen, hogy milyen adatokat kapnak. A
fggvnynek {tadott adatokat mindig z{rjelbe
kell tennnk a fggvny neve ut{n. Esetenknt ezt
elhagyhatjuk. A PHP-ban tbb sz{z beptett
fggvnyt tudunk meghvni, ezek teljes list{j{t
(valamint
ler{s{t
s
haszn{lat{t)
a
http://www.php.net oldalon tal{lhatjuk meg. Ezek
sokszor kiegszlnek, jabb fggvnyeket rnak a
m{r meglvk mell. A kvetkezkben megnznk a beptett fggvnyek kzl nh{nyat
(amelyet a ksbbi pldaprogramokban, forr{skdokban is bemutatunk) a jobb megrts rdekben.

4.1.

A print fggvny

Az elssorban szvegmegjelentsre szolg{l


print fggvny esetben a z{rjeleket elhagyhatjuk:

24

PHP s MySQL az alapoktl

print (szveg, amit ki szeretnnk rni);


print szveg, amit ki szeretnnk rni;
A print fggvnynek egy karakterl{ncot adtunk
{t. A karakterl{ncokat mindig (egyes vagy ketts)
idzjelbe kell tenni.
A print(); helyett haszn{lhatjuk a <?=
?>
szkriptet is szvegmegad{sra. Ezen kvl mg az
echo (); fggvnyt szokt{k haszn{lni ugyanerre
a clra. Az utast{sokat pontosvesszvel fejezzk
be, ezzel tudatjuk a fordtval, hogy befejeztk az
utast{st (nem mindig szksges kitenni a
pontosvesszt, pld{ul az utols sor vgn).
A PHP-val nemcsak l{that szveget rhatunk
ki az eredmnyoldalra, de HTML kdot is:
a.,
<html>
<head>
<title>A print fggvny</title>
</head>
<body>
<?=valami ?>
</body>
</html>

Fggvnyek

25

b.,
<html>
<head>
<title>A print fggvny</title>
</head>
<?php
print '<body>';
print ('valami');
print '</body>';
?>
</html>
L{that, hogy HTML kd beptse a PHP
oldalakba
egyszeren
HTML
tartalom
begpelsbl {ll. A PHP feldolgoz figyelmen
kvl hagy mindent a PHP nyit s z{r elemeken
kvl. Egy dokumentumban a HTML elemek kz
tetszleges sz{m PHP kdblokk rhat. A fenti
plda mindkt esetben a valami szt rja ki a
bngsz ablak{ba, csup{n annyi a klnbsg,
hogy a 2. esetben a <body> s </body> tag-eket a
print fggvnnyel rattuk ki.
B{r tbb kdblokkot helyezhetnk el egy
dokumentumon bell, ezek egyttesen alkotnak
egy programot. B{rmi, amit egy megelz
blokkban hat{roztunk meg (v{ltozk, fggvnyek
vagy oszt{lyok), a dokumentumon bell elrhet
lesz a ksbbi blokkban is.

26

PHP s MySQL az alapoktl

A tbb egyttmkd, sszessgben egy nagyobb programot megvalst PHP f{jlt nevezzk
PHP alkalmaz{snak.

4.2.

A date fggvny

Ez a fggvny a szervergp idejt kri le.


Szintaktik{ja:
date(Y-m-d, H:i:s);
Els paramter: Y v, mhnap, dnap
M{sodik paramter: Hra, i perc, sm{sodperc (aktu{lis id, frisstsre v{ltozik).
Fontos tudni, hogy klnbz idform{tumot
kapunk, ha a klnbz paramterek kis- ill.
nagybetvel rjuk!
Pl.: A fenti szintaktika a kvetkez d{tum- s id
form{tummal jelenik meg: 2011-02-18 18:30:25.
Ha pld{ul az Y mellett a hnapokat s a napokat
jell paramtereket is nagybetvel rjuk, akkor a
kvetkezt kapjuk: 2010-Feb-Fri 18:30:25.
A date fggvnynek ezeken kvl vannak m{s
paramterei is. Pld{ul:
date("t"); Ezzel a paramterrel a date
fggvny azt mutatja meg, hogy h{ny napbl {ll az
aktu{lis hnap.

Fggvnyek

27

date("w"); Az aktu{lis nap sz{mbeli


megfelelje, sz{mreprezent{cija: rthetbben: a 0
a vas{rnap, 1 a htf<egszen a 6-osig, ami a
szombat. Ezt a paramtert mg fogjuk haszn{lni a
SWITCH szerkezet bemutat{s{ra!
Ezen
kvl
mg
rengeteg
paramtert
sorolhatn{nk fel, de ez sz{munkra most nem
fontos, egyelre ennyi neknk elg.
Mg egy fontos tudnival, hogy a paramterek
kz elhelyezett r{sjel fog megjelenni a d{tumform{tumban is. Pld{ul, ha jelek helyett .-ot
tesznk akkor a 2011.02.18.-as d{tumot kapjuk.
rdekessgkpen a date fggvnyhez megemltend, hogy a
time fggvny: idblyeg, internetid, az 1970.
v a 0. v.
Szintaktik{ja: time()

4.3.

Matematikai fggvnyek

Most pedig nzznk nh{ny beptett matematikai fggvnyt. Ezek mindegyikt nem biztos,
hogy haszn{ljuk majd a ksbbi fejezetekben,
viszont hasznosak lehetnek a tov{bbiakban egyes
felhaszn{lk sz{m{ra.

28

PHP s MySQL az alapoktl

a. pi ()
A pi rtkt adja vissza 13 sz{mjegy pontoss{ggal.
A fggvny eredmnye: 3,1415<
b. sqrt ($szam)
A $szam v{ltozban (bvebben: kvetkez
fejezet) elt{rolt sz{mnak adja vissza a ngyzetgykt.
Pl.: sqrt (64)
A fggvny eredmnye: 8
c. abs (sz{m)
Egy sz{m (ez lehet egsz vagy lebegpontos) 0tl val t{vols{g{t adja vissza (vagyis az
abszolt rtkt).
Pl.: abs (-34.56)
A fggvny eredmnye: 34.56
Mint azt m{r a Fggvnyek fejezet bevezetjben is rtuk, a PHP nyelvben megtal{lhat
fggvnyek teljes list{ja, ler{sa, bemutat{sa s
szintaktik{ja megtal{lhat a http://www.php.net
weboldalon.
Fontos mg megemlteni, hogy ugyanitt
megtal{lhatjuk a v{ltozk, konstansok, oper{torok,
el{gaz{sok, ciklusok stb. list{j{t PHP-ben, egy
teljes kr ismertetkkel a nyelv referencia
oldal{n:

Fggvnyek

29

http://www.php.net/manual/en/langref.php
A fenti weboldalon minden szksges inform{cit megtal{lhatunk a PHP teljes kr megismershez, gy annak, aki a jvben komolyabban el
akar mlylni eme programoz{si nyelv rejtelmeiben, aj{nlatos {tnzni s tanulm{nyozni ezen rszletes referenci{kat (csak rdekessg szintjn hoztuk
most fel a PHP hivatalos honlapj{t, a kvetkez
fejezeteknl nem fogunk mindig kln kitrni erre
a weboldalra, de m{r az elejn fontosnak tartottuk
ezt megemlteni.)

Vltozk

30

5. Vltozk
A v{ltoz nvvel ell{tott memriaterlet a
webszerver memri{j{ban. Ezekben adatokat
t{rolunk, mellyel a PHP programunkban
mveleteket vgezhetnk. Jellse: $v{ltoz neve.
A v{ltozknak van neve, tpusa s rtke. A
v{ltoz nevnek megad{sakor figyeljnk arra,
hogy a PHP megklnbzteti a kis s nagybetket!
Pl.: a $szam nem ugyanaz, mint a $Szam!
A nv megad{sakor figyeljnk arra is, hogy ne
haszn{ljunk kezetes betket. Ezenkvl nem
tartalmazhat mg szkzt, valamint speci{lis karaktereket sem. Haszn{lhatjuk viszont az angol abc
betit, az al{hz{s _ karaktert s a sz{mokat is.
Figyelem! A v{ltozk nevnek megad{sakor
figyeljnk arra is, hogy a nv beszdes s
lehetleg rvid legyen. Ez azrt fontos, mert ha a
program r{sa sor{n vagy a ksbbiekben
haszn{lni akarjuk a v{ltozt, akkor gy a nevrl

Vltozk

31

knnyebben felismerhetjk, hogy a v{ltoz milyen


adatot rejt:
Pld{ul: $nev=Gabi; string-es v{ltoz
Pld{ul: $szam=32; egsz (integer) v{ltoz
Most pedig nzzk milyen tpus v{ltozkat
haszn{lhatunk PHP-ben:
1. V{ltoz neve (angolul): integer
Magyarul: egsz sz{m
Ler{sa: rtke csak pozitv, vagy negatv egsz
sz{m lehet.
Plda: $szam = 21;
2. V{ltoz neve (angolul): float (vagy double)
Magyarul: lebegpontos sz{m
Ler{sa: tizedes sz{mokat rhatunk le vele.
Tizedesjelknt mindig pontot kell haszn{lni!
Plda: $szam = 21.65;
3. V{ltoz neve (angolul): boolean
Magyarul: logikai rtk
Ler{sa: rtke lehet igaz (TRUE), vagy hamis
(FALSE)
Plda: $igaze = TRUE;
4. V{ltoz neve (angolul): array
Magyarul: tmb

32

PHP s MySQL az alapoktl

Ler{sa: egy egym{shoz rendelt adatcsomag


kzs neve.
Plda: $a = array(21, 32, "szveg");
5. V{ltoz neve (angolul): string
Magyarul: karakterl{nc, szveg
Ler{sa: szvegek kir{s{ra haszn{ljuk,
tartalmazhat b{rmilyen karaktert - bett,
sz{mot, r{sjelet. A szveget mindig egyszeres,
vagy dupla idzjelek kz kell tenni!
Plda: $pelda = "Ez egy szveg, amit string-es
v{ltozban t{roltunk el!";
B{r a PHP nyelvtana nem rja el, a v{ltozkkal
vgzett mveletek eltt azokat aj{nlott defini{lni,
azaz megadni a kiindul rtkt s tpus{t.
Ha m{r megismerkedtnk a legfontosabb
v{ltoz tpusokkal, l{ssuk, hogyan is adhatunk
nekik rtket. Termszetesen ezt tbbflekppen is
megtehetjk:

Fggvny meghv{s{val. Pl.: $negyzetgyok


= sqrt(64);
sszead{si mvelettel. Pl.: $osszeg = 2 + 6;
Felhaszn{ltl adat bekrsvel (ezt az
rlapok c. fejezetben rszletezzk).
Pl.: $aoldal = $_GET['aoldal'];
Adatb{zisbl
val
lekrdezssel.
Pl.:$tulajneve = $sor[nev];

Vltozk

33

Egy kls eszkzrl val beolvas{ssal. Pl.:


adatb{zis s PHP program sszekapcsol{sakor ilyen az n. include-ol{s
(bvebben ksbb foglalkozunk vele)
M{sik v{ltozbl {tvett rtkkel. Pl:
$szam1 = 32; $szam2 = $szam1;

Az adatok tpus{t azok defini{l{sakor a programoz hat{rozza meg. A PHP az adattpusokat


rugalmasan haszn{lja, azaz fut{sidben {talaktja a
krnyezettl fggen szksges tpusra.
Adatunk rvnyes tpus{t a gettype() beptett
fggvny segtsgvel krdezhetjk le s a
settype() fggvnnyel mdosthatjuk. Adatainkat
az al{bbi mdon is meghat{rozhatjuk/mdosthatjuk:
(int), vagy (integer) - egssz konvert{l
(bool), (boolean) - logikai rtkk konvert{l
(real), (double), (float) - lebegpontos
sz{mm{ konvert{l
(array) - tmbb konvert{l
(object) - objektumm{ konvert{l
Most nzznk erre a kt fggvnyre is pld{t (a
forr{skdokban ezek ut{n ki fogjuk hagyni a
html, body stb. tag-eket s csak a sz{munkra fontos
PHP kdblokkot rjuk le)!

34

5.1.

PHP s MySQL az alapoktl

Vltoz tpusnak lekrdezse


a gettype() fggvny

A gettype() szintaktik{ja egyszer:


gettype($valtozoneve)
Z{rjelekben megadjuk annak a v{ltoznak a
nevt, aminek a tpus{t meg szeretnnk vizsg{ltatni a fggvnnyel.
Most pedig nzznk r{ egy pldaprogramot:
<?php
$szam=32;
print ("A 'szam' vltoz rtke: $szam <br
/>"); //beszrtunk egy sortrs TAG-et a vltoz
kiratsa utn
print ("tpusa: ".gettype ($szam)."<br /><br
/>");
//gy a vltoz tpusnak kirsa mr egy
j sorba kerlt.
/*
Egy sorban klnll szvegek sszefzsre PHPben a pont (.) szolgl. Jelen esetben a msodik
print fggvnynl megfigyelhet, hogy a szveghez
hozzfztk a gettype() fggvny eredmnyt is,
majd ehhez jtt mg a kt sortrs TAG.
*/
$tizedesszam=32.5;
print ("A 'tizedesszam' vltoz rtke:
$tizedesszam <br />");
print ("tpusa: ".gettype ($tizedesszam)."<br
/><br />");

Vltozk

35

$szoveg="Ez egy szveg!";


print ("A 'szoveg' vltoz rtke:
".$szoveg."<br />");
print ("tpusa: ".gettype ($szoveg)."<br
/><br />");
//a string-es vltozknl mindenflekppen oda
kell figyelni a szvegek sszefzsre, klnben
hibazenetet kaphatunk!
$igaze= true;
print ("Az 'igaze' vltoz rtke: ".$igaze."<br
/>");
print ("tpusa: ".gettype ($igaze)."<br /><br />");
?>
Figyelem! Ahogy a kdrszletben is l{thatjuk
megjegyzsknt, az egy sorban kln{ll szvegek
sszefzsre PHP-ben a pont (.) szolg{l. Erre klnsen oda kell figyelnnk, mert knnyen szintaktikai hib{t okozhatunk, ha nem, illetve ha roszszul haszn{ljuk!
Ha az elbbi pldaprogramot megnzzk egy
bngszvel, akkor a kvetkezt l{thatjuk majd:

36

PHP s MySQL az alapoktl

Jl l{that, hogy a klnbz v{ltozk rtkeit


megvizsg{lva a gettype() fggvny visszaadta azok
tpus{t!

Vltozk

5.2.

37

Vltoz tpusnak mdostsa


a settype() fggvny

A settype() szintaktik{ja a kvetkez:


settype($valtozoneve, 'tpus, amire konvert{lni
akarunk');
<?php
$szam=32.5;
print ("A 'szam' vltoz rtke: $szam <br />");
print ("tpusa: ".gettype ($szam)."<br /><br
/>");
settype($szam, 'integer');
print ("A 'szam' vltoz rtke konvertls utn:
$szam <br />");
print ("tpusa: ".gettype ($szam)."<br /><br
/>");
print ("Most szvegg alaktjuk az integer tpus
'szam' vltozt:<br />");
settype($szam, 'string');
print ("A 'szam' vltoz rtke konvertls utn:
$szam <br />");
print ("tpusa: ".gettype ($szam)."<br /><br
/>");
?>
A kdrszlet jl szemllteti, hogyan is
haszn{lhatjuk a settype() fggvnyt kor{bban

38

PHP s MySQL az alapoktl

deklar{lt v{ltozink tpus{nak megv{ltoztat{s{ra.


Ahogy a megjegyzsben is l{tszik, a settype()
szintaktik{ja a kvetkezkppen pl fel: a
fggvny els paramterben megadjuk a v{ltoz
nevt, majd a m{sodik paramterben, hogy milyen
tpusv{ szeretnnk konvert{lni azt.
A bngsznkben ez fog megjelenni,
futtatjuk a pldaprogramot:

ha

39

PHP s MySQL az alapoktl

6. Opertorok s
kifejezsek PHP-ben
Miut{n megismerkedtnk a v{ltozk deklar{l{s{val s tpusaival, nzzk meg, milyen mveleteket tudunk velk vgezni. Ahhoz, hogy mveleteket (legyen az aritmetikai vagy m{s) vgezhessnk
PHP-ban, m{s programoz{si nyelvekhez hasonlan itt is szksgnk lesz az oper{torok haszn{lat{ra. Mieltt azonban belemlylnnk, nzzk meg
mi is az az oper{tor:
Az oper{tor jel, az operandusok kztt helyezkedik el: pl.: 12 + 32. Ebben az esetben az szszead{s + jel az oper{tor, a 12 s a 32 pedig az
operandusok. Ez a 3 alkotelem gy egy kifejezst
alkot. [ltal{ban az oper{tor jelet mindkt oldalrl
egy operandus z{rja be, persze vannak kivtelek:
++i, --i (l{sd a Vezrlsi szerkezeteknl!).
Az elz fejezetekben m{r haszn{ltunnk is egy
oper{tort a v{ltozk deklar{l{s{n{l, ez pedig az

40

PHP s MySQL az alapoktl

rtkad = jel oper{tor volt. Ezen kvl persze az


oper{toroknak is rengeteg csoportja van:
Aritmetikai oper{torok: ezek a hagyom{nyos
oper{torok, amelyeket a matematik{ban is
haszn{lunk: sszead{s (+), kivon{s (-), szorz{s
(*), oszt{s (/), neg{ci (-$szam) illetve a maradkoszt{s (%). Ez utbbi kett lehet, hogy nem
mindenki sz{m{ra ismers, ezrt nzznk r{juk
pld{t: a neg{ci a kapott rtket neg{lja, vagyis, ha $szam = 12, akkor a v{ltoz a neg{l{s
ut{n -$szam = -12. A maradkoszt{s sem annyira rdngs: a maradkoszt{s eredmnye a bal
oldalon lv sz{m, jobb oldalon lv sz{mmal
trtn eloszt{s{nak maradka.
Pld{ul: 13%4 = 1 (mivel 3*4 = 12-vel, maradk
az egy)
20%3 = 2 (mivel 6*3 = 18, maradk a kett)
11%4 = 3 (mivel 2*4 = 8, maradk a h{rom) stb.
sszefz oper{tor: ennek haszn{lat{t m{r
megemltettk az egyik forr{skdban. Ezt kln{ll szvegek sszefzsre haszn{ljuk a
PHP-ben. Ennek oper{tora a pont (.). Figyelem,
a mvelet szkzt nem rak az sszefztt tagok
kz, azt neknk kell a szvegbe begpelnnk:

Opertorok s kifejezsek PHP-ben

<?php
$szoveg1 = "Hell ";
sz utn raktunk egy szkzt is!!!
$szoveg2 = "vilg!";
print ($szoveg1.$szoveg2);
?>

41

//a Hell

Ha ezt a kettt sszefzzk s kiratjuk a kpernyre, akkor azt kapjuk, hogy Hell vil{g!
sszetett rtkad oper{torok: Ezek lnyeg,
hogy kt oper{tort kapcsolhatunk velk ssze.
Mindegyik ilyen oper{tornak kt alakja van. A
rvidebbeket elg gyakran haszn{lj{k PHP-ben,
mivel egyszerbben rhatunk le velk egy-egy
kifejezst, s ezzel idt sprolhatunk a gpelskor s persze kevesebb karaktert kell felhaszn{lnunk hozz{juk. Persze haszn{lhatjuk a hoszszabb alakot is, az eredmny mindkt esetben
ugyanaz lesz. Mindez a kezdk sz{m{ra kicsit
bonyolult lehet, de nem kell aggdni, knnyen
megszokja az ember ezeket a rvidtett form{kat is:

42

PHP s MySQL az alapoktl

Hagyom{nyos forma

Rvidtett forma

$a = $a + 3

$a += 3

$a = $a - 3

$a -= 3

$a = $a * 3

$a *= 3

$a = $a / 3

$a /= 3

$a = $a % 3

$a %= 3

$a = $a . egy szveg.

$a .= egy szveg.

Ide tartoznak mg az ut- s elnvekmnyes


oper{torok, ezekrl bvebben a Vezrlsi szerkezetek cm rsznl.
sszehasonlt oper{torok: Ezek feladata,
hogy a bal s jobb oldalon lv operandust szszehasonlts{k. Az sszehasonlt{snak kt
eredmnye lehet: igaz (true, 1) vagy hamis
(false, 0):

Opertorok s kifejezsek PHP-ben

Oper{tor

Megnevezs

Igaz, ha:

43

Plda

egyenl

A bal oldal
egyenl a jobb
oldallal.

$a = = 12

===

azonos

A kt oldal
nemcsak rtk
szerint, hanem
tpus{t tekintve
is megegyezik.

$a = = = 12

!=

nem
egyenl

A bal s a jobb
oldal nem
egyenl.

$a ! = 12

!==

nem
azonos

A bal s a jobb
oldal nem azonos.

$a ! = = 12

>

nagyobb,
mint

A bal oldal nagyobb a jobbn{l.

$a > 12

<

kisebb,
mint

A bal oldal kisebb, mint a


jobb.

$a < 12

>=

nagyobb
egyenl

A bal oldal nagyobb vagy


egyenl a jobb
oldallal.

$a > = 12

==

44

PHP s MySQL az alapoktl

<=

kisebb
egyenl

A bal oldal kisebb vagy


egyenl a jobb
oldallal.

$a < = 12

Ezekkel az oper{torokkal sokszor fogunk tal{lkozni mg programjaink sor{n, klnsen, ha el{gaz{st vagy pld{ul ciklust ksztnk.
Logikai oper{torok: Ezen oper{torok is fontos
szerepet tltenek be a PHP programoz{sban.
Segtsgkkel kp operandust vagy kt sszehasonlt felttel {ltal keletkezett logikai rtket
hasonlthatunk ssze (ezek ismersek lehetnek
a Boole-algebr{bl):
Oper{tor

Megnevezs

Igaz, ha:

Plda

And

Mind $a mind
$b igaz.

$a and $b

Or

vagy

$a s $b kztt
van igaz.

$a or $b

Xor

kiz{r
vagy

$a s $b kzl
pontosan egy
igaz.

$a xor $b

tagad{s

$a nem igaz.

! $a

Opertorok s kifejezsek PHP-ben

45

&&

Mind $a mind
$b igaz.

$a && $b

||

vagy

$a s $b kztt
van igaz.

$a | | $b

Ezek a felsorolt csoportok a legfontosabb oper{torok, amelyeket haszn{lni fogunk programjainkban. A pld{kban is sokszor fel fognak tnni (pl.: a
kvetkez fejezetben) s felttlenl fontos, hogy
megrtsk ezek haszn{lat{t, mert jform{n semmire sem megynk a PHP-val, ha ezeket nem ismerjk.

Vezrlsi szerkezetek

46

7. Vezrlsi szerkezetek
Ez az anyagrsz a kezdk sz{m{ra kicsit bonyolult lehet, {m akik m{r haszn{lt{k a vezrlsi szerkezeteket m{s programoz{si nyelvekben, azoknak
knnyebben rthetik meg ezeket a PHP-n bell.
Mindenesetre jl rthet pld{kon keresztl fogjuk
bemutatni ket, mivel ezek is ltfontoss{gak lehetnek a ksbbi, sszetettebb programok ksztse
sor{n.

7.1.

Elgazs Az IF utasts

A program fut{sa kzben klnbz esetek


kvetkezhetnek be. Az el{gaz{s feltteltl fggen
igaz vagy hamis {gba tereli a programot. Azaz a
szerver kirtkeli a felttelt s dnt arrl, hogy hol
folytatdjon a program.

47

PHP s MySQL az alapoktl

Az IF utast{s szintaktik{ja:
if ($t>100)
{ igaz g kezdete

A kapcsos zrjelek kztti utastsok akkor


hajtdnak vgre, ha a felttel igaz.
} igaz g vge

else
{ hamis g kezdete

A kapcsos zrjelek kztti utastsok akkor


hajtdnak vgre, ha a felttel hamis.
} hamis g vge

Az IF kulcssz ut{n megadjuk a vizsg{lni kv{nt v{ltozt s a felttelt (a fenti pld{ban $t>10).
Ha a felttel igaz, akkor az igaz, {g, ha hamis, akkor a hamis {g fog vgrehajtdni.
Fontos! Az rtk ad{s = jellel, a vizsg{lat = = jelekkel trtnik (mint pld{ul a C#-ban).
a., Az IF szerkezete ettl eltr is lehet, pld{ul
megadhatjuk, hogy a program csak akkor hajtson
vgre valamilyen mveletet, ha a felttel igaz (vagyis nem adunk meg hamis {gat):
if ($t>100)
{
print (A $t nagyobb, mint szz.);
}

Vezrlsi szerkezetek

48

b., Olyan v{ltozat is lehetsges, hogy a fent lert


IF < ELSE szintaktik{t kibvtjk az IF < ELSEIF
< ELSE szintaktik{ra. Ekkor kvetkezkppen
pl fel a program szerkezete:
<?php
$igaze = nem;
if ($igaze == igen)
{
print (Az igaze vltoz tnyleg igaz! );
}
elseif ($igaze == nem) //az ELSEIF
gban j felttelt vizsglunk meg
{
print (Az igaze vltoz nem igaz! );
}
else
{
print (Nem tudom, hogy igaz-e);
}
?>
Ebben az esetben az ELSEIF {g hajtdik vgre,
mivel a felttel vizsg{lat rtke hamis lesz. Ha az
$igaze v{ltoznak igen rtket adtunk volna,
akkor a legels {g hajtdott volna vgre. Az ELSE
{g akkor hajtdott volna vgre esetnkben, ha a
$igaze v{ltoznak nem azt adtuk volna rtkl,
hogy igen vagy nem, hanem valami (elg,
hacsak egyetlen egy karakterrel is) eltr szveget.

Vezrlsi szerkezetek

49

Ha ezt a kt egy plda programba beillesztjk s


lefuttatjuk, akkor a kvetkez lesz az eredmny:

A fenti kt plda alapj{n bel{thatjuk, hogy az IF


utast{s nem tl bonyolult, viszont ann{l fontosabb
szerepe van a PHP programokban. Mindkt plda
jl szemllteti, hogy az el{gaz{sokat milyen
szintaktik{val valsthatjuk meg a PHP nyelvben.
Ez az egyik legegyszerbb vezrlsi szerkezet, de
most bonyoltjuk egy kicsit a kvetkez pld{ban
(itt m{r nh{ny fontosabb oper{tor haszn{lat{t is
bemutatjuk, hogy azok haszn{lat{t is gyakoroljuk!).

50

PHP s MySQL az alapoktl

7.1.1. Pldaprogram az IF utasts bemutatsra


<?php
$szam1 = 237;
//Deklarrunk 3 szmot,
amelyeket majd megvizsglunk az IF utastssal.
$szam2 = 144;
$szam3 = -51;
print ("A 'szam1' vltoz rtke: $szam1 <br />");
print ("A 'szam2' vltoz rtke: $szam2 <br />");
print ("A 'szam3' vltoz rtke: $szam3 <br />");
print ("<br />");
if ($szam1>0 and $szam1%2==0)
/*Azt vizsgljuk meg, hogy a $szam1 vltoz nagyobb-e, mint 0 s oszthat-e kettvel. Lthatjuk, hogy az oszthatssg
vizsglata a maradkoszts opertor segtsgvel trtnik!*/
{
print ("A $szam1 nagyobb, mint nulla s
oszthat kettvel!");
}
elseif ($szam1<0 and $szam1%2==0)
{
print ("A $szam1 kisebb, mint nulla, s
oszthat kettvel!");
}
else //Az ELSE gon bellre mg egy IF
elgazst helyeznk el.

Vezrlsi szerkezetek

51

if ($szam1>0)
/*Ez az egymsba gyazott elgazs
jelen esetben szksges, mert, ha a
program az ELSE gba tereldik, akkor nem osztaht a szm 2-vel. Ebben
az esetben viszont mg egy elgazssal ettl fggetlenl meg kell nznnk, hogy a 2-vel nem oszthat
szm negatv, vagy pozitv-e.*/
{
print ("A $szam1 nagyobb, mint nulla, viszont nem oszthat kettvel!");
}
else
{
print ("A $szam1 kisebb, mint nulla, s
nem oszthat kettvel!");
}

}
print ("<br />");
if ($szam2>0 and $szam2%2==0) //Most a
$szam2 vltozt vizsgljuk meg ugyangy!
{
print ("A $szam2 nagyobb, mint nulla s
oszthat kettvel!"); //Ebben az esetben az IGAZ g hajtdik vgre.
}
elseif ($szam2<0 and $szam2%2==0)
{

52

PHP s MySQL az alapoktl

print ("A $szam2 kisebb, mint nulla, s


oszthat kettvel!");

}
else
{
if ($szam2>0)
{
print ("A $szam3 nagyobb, mint nulla,
viszont nem oszthat kettvel!");
}
else
{
print ("A $szam3 kisebb, mint nulla, s
nem oszthat kettvel!");
}
}
print ("<br />");
if ($szam3>0 and $szam3%2==0) //A
$szam3 vltoz mr negatv szm, emellett oszthat 2-vel, gy az ELSEIF g hajtdik majd vgre!
{
print ("A $szam3 nagyobb, mint nulla s
oszthat kettvel!");
}
elseif ($szam3<0 and $szam3%2==0)
{
print ("A $szam3 kisebb, mint nulla, s
oszthat kettvel!");
}

Vezrlsi szerkezetek

?>

53

else
{
if ($szam3>0)
{
print ("A $szam3 nagyobb, mint nulla,
viszont nem oszthat kettvel!");
}
else
{
print ("A $szam3 kisebb, mint nulla, s
nem oszthat kettvel!");
}
}

A pldaprogram a fentiek alapj{n megrva a


kvetkezt fogja kirni a kpernynkre (l{thatjuk,
hogy a programunk helyesen lett megoldva, mert
mindh{rom sz{mhoz a megfelel ler{s t{rsul):

54

PHP s MySQL az alapoktl

7.2.

SWITCH szerkezet

Szintaktik{ja PHP-ben:
switch ($nap) { //Zrjelben a vltoz, amit
vizsglni akarunk.
case 0: print(Ma vasrnap van.); break;
case 1: print(Ma htf van.); break;
case 2: print(Ma kedd van.); break;
.
.
.
default: print(Nem tudom milyen nap
van!); //egy default gat is megadhatunk.
}
A switch utast{s segtsgvel tbbir{ny
el{gaz{st hozhatunk ltre. Az utast{s ut{n
z{rjelek kztt megadott v{ltoz rtke alapj{n
{gaztatunk el. Kapcsos z{rjelek kztt jn az
el{gaz{s kifejtse. Egyes {gakat a case paranccsal
rhatjuk le, mely ut{n jn az rtk (pl.: case 0:). Ha
a case kulcssz ut{n nem sz{mot, hanem szveget
vizsg{lunk, akkor azt termszetesen idz jelek
kz kell tennnk! A kettspont ut{n kifejtjk { }
jelek kztt (nem ktelez kirakni, anlkl is
mkdik), hogy mit csin{ljon adott rtk ut{n.
Fontos! Minden {gat break-kel z{runk le
(klnben, ha kimarad az el{gaz{s {gai tlcsor-

Vezrlsi szerkezetek

55

dulnak a kvetkez utast{sokra, s helytelen


program jn ltre).
Ha a v{ltoz rtkt az {gak kztt nem
defini{ltuk, a default {gon lv utast{sok fognak
vgrehajtdni.
Most nzzk meg, hogy a szintaktikai pldaknt lert program hogyan is nz ki teljes egszben! A programban a kor{bban m{r emltett date()
fggvnyt, annak is a w paramtert fogjuk elt{rolni a $nap v{ltozban, ami az aktu{lis nap sz{mbeli megfeleljt adja vissza (ez 0-tl ami a vas{rnap 6-ig terjed ami a szombat). A plda jl
szemllteti, hogy mire is tudjuk haszn{lni a
SWITCH szerkezetet. Ez mivel az IF utast{shoz
hasonlan a vezrlsi szerkezetekhez tartozik, a
programot m{s-m{s ir{nyba terelheti. Most pedig
nzzk az aktu{lis d{tum s nap kirat{s{t a
SWITCH-csel.
7.2.1. Pldaprogram az SWITCH szerkezet
bemutatsra:
<?php
$datum=date("Y.m.d.");
//A $datum vltozban eltroljuk az aktulis nap dtumt.
print ("Mai dtum: $datum ");
$nap=date("w");
//A $nap vltozban eltroljuk az aktulis nap szmbeli reprezentcijt.

56

PHP s MySQL az alapoktl

/*A SWITCH-el megvizsgljuk, hogy az adott szm


milyen szmrtket ad vissza s ahhoz rendeljk
hozz a nap nevt magyarul s ezt ki is ratjuk a
kpernyre a dtum utn!*/
switch ($nap)
{
case 0: print("Ma vasrnap van."); break;
case 1: print("Ma htf van."); break;
case 2: print("Ma kedd van."); break;
case 3: print("Ma szerda van."); break;
case 4: print("Ma cstrtk van."); break;
case 5: print("Ma pntek van."); break;
case 6: print("Ma szombat van."); break;
}
?>
A program ezzel a kddal mindig az aktu{lis
d{tumot
fogja
kirni
sz{mokkal,
ponttal
elv{lasztva, valamint az aktu{lis nap nevt. Pl.: Mai
d{tum: 2007.09.29. Ma szombat van.
Ezt a kis programot haszn{lhatjuk weboldalunkon, ha t{jkoztatni szeretnnk a l{togatinkat a d{tumrl. A program ugyan egyszer,
de jl szemllteti, hogy mit is jelent a dinamikus
weboldal kifejezs. Minden nap m{s d{tumot
fogunk a honlapunkon l{tni, anlkl, hogy mi
beleszerkesztennk az oldalba. Ugyangy a
SWITCH-csel ak{r egy nvnapkszntt is
csin{lhatunk. Igaz, ennek megr{s{hoz az v
minden napj{hoz hozz{ kell rendelnnk az

Vezrlsi szerkezetek

57

aktu{lis nvnapot. Ez persze nem kevs id, de ha


elsz{ntak vagyunk s gyakorolni is szeretnnk,
akkor nyugodtan nekilhetnk!

Ciklusok

58

8. CIKLUSOK
A ciklusok haszn{lata esetn egy vagy tbb
utast{s jra s jra vgrehajtdik. A ciklus egy
utast{sblokk tbbszri vgrehajt{s{ra alkalmazott
programozi eszkz. A PHP m{s programoz{si
nyelvekhez hasonlan lehetv teszi mind az
elltesztels, mind a h{tultesztels, mind pedig a
nvekmnyes (m{s nven sz{ml{l) ciklusok
haszn{lat{t.
Ahhoz, hogy megrtsk a pldaprogramokat
tiszt{ban kell lennnk az inkrement{l s
dekrement{l oper{torok szerepvel s jellsvel:
Inkrement{l mvelet, inkrement{l oper{tor:
Nveljk a v{ltoz rtkt 1-gyel.
$i++ $i=$i+1
Dekrement{l mvelet, dekrement{l oper{tor:
Cskkentjk a v{ltoz rtkt 1-gyel.
$i- - $i=$i-1

Ciklusok

8.1.

59

A WHILE() ciklus

A WHILE() egy elltesztel ciklus, amelynl a


ciklusmag egy adott felttel teljeslse esetn hajtdik vgre.
Szintaktik{ja PHP-ben:
<?php
$i=1;
print ("Szmok 1-tl 10-ig: <br />");
while ($i<=10)
//vgfelttel megadsa
{
print ("$i <br />");
//ciklusmagban
lv utastsblokk
$i++;
}
?>
A WHILE() a legegyszerbben haszn{lhat ciklusutast{s. A fenti plda fut{si eredmnyn is jl
rzkelhetjk (l{sd a kpernykpet), hogy ez a
ciklus addig hatja vgre a kapcsos z{rjelek kzt
lv utast{sblokkot, amg a while kulcssz ut{n
kvetkez, z{rjelben lv kifejezs (az az a vgfelttel) igaz. Ha a felttel hamiss{ v{lik, a ciklus
befejezdik. Olyan is elfordulhat persze, hogy a
vgfelttel mindig hamis marad, ilyenkor a ciklus
egyszer sem fog vgrehajtdni. A m{sik ellenttes esetben, ha a vgfelttel folyamatosan igaz
marad, knnyen az egyik legnagyobb programozi

60

PHP s MySQL az alapoktl

hib{ba, a vgtelen ciklusba eshetnk. Ez nem tl


szerencss, mert, ha lefuttatjuk a vgtelen ciklust
tartalmaz programunkat, akkor csak a bngsz
le{llt{s{val tudjuk ezt le{lltani.

L{that, hogy a fenti plda alapj{n elksztett


WHILE ciklus kirja a kpernyre a sz{mokat 1-tl
10-ig. A $i v{ltozt deklar{ltuk a program elejn, a
WHILE ciklusban z{rjelek kztt megadtuk azt a
vgfelttelt, hogy a ciklus addig hajtdjon vgre,
amg a $i v{ltoz rtke kisebb/egyenl nem lesz

Ciklusok

61

10-zel. A ciklusmagban egy print () fggvny segtsgvel kirattuk a $i aktu{lis rtkt, majd ezut{n beszrtunk egy inkrement{l oper{tort, amely
segtsgvel az $i rtkt minden kirat{s ut{n
eggyel nveltk ($i++). Ezek ut{n a ciklus az j
rtkre vonatkozan is megvizsg{lta a vgfelttelt,
s ha az igaznak bizonyult jra s jra vgrehajtotta a ciklusmagban lv utast{sblokkot. A ciklus
akkor fejezdtt be, amikor a $i rtke a 10-et. L{thatjuk, hogy ez nem volt nagy rdngssg, de a
kvetkezkben bonyoldnak a ciklusok.

8.2.

A DOWHILE() ciklus

A DO<WHILE () egy h{tultesztel ciklus,


amelynl elszr a ciklusmag hajtdik vgre, majd
ezut{n trtnik a felttel kirtkelse, ami eldnti,
hogy kilphetnk-e a ciklusbl vagy nem.
Szintaktik{ja PHP-ben:
<?php
$i=1;
print ("Szmok 1-tl 10-ig
(DO...WHILE-al): <br/>");
do
//A "do" kulcsszval kezddik a
ciklus

62

PHP s MySQL az alapoktl

?>

{
print ("$i <br />");
//A ciklusmagban
lv utaststmb mindenflekppen lefut
egyszer!
$i++;
}
while ($i<=10) //A ciklus vgn tallhat
a vgfelttel

Elfordulhat, hogy a ciklusba z{rt utast{snak


egyszer mindenkppen le kell futnia - akkor is, ha
a felttel mindig hamis. Ilyenkor haszn{ljuk a
h{tultesztel DO...WHILE() ciklust, ahol a felttel
teljeslst a ciklus vgn vizsg{ljuk. Az els lefut{snak teh{t a hamis felttel sem akad{lya.
Ha a pldaknt felhozott programot megtekintjk a bngsznkben, akkor az ugyanazt az eredmnyt adja, mint az elz pontban bemutatott
WHILE() ciklus pldaprogramja (vagyis ugyangy
kirja a sz{mokat 1-tl 10-ig s azt{n kilp a ciklusbl). Teh{t, ha azt szeretnnk, hogy a ciklus mindenflekppen egyszer vgrehajtdjon, haszn{ljuk
a DO<WHILE()-t, ha nem akkor nyugodtan maradhatunk a sima WHILE() ciklusn{l.

Ciklusok

8.3.

63

A FOR() ciklus

A FOR() ciklus egy nvekmnyes, elltesztel


ciklus. A ciklusmagot egy elre meghat{rozott
sz{mszor hajtjuk vgre. Szintaktik{ja PHP-ben:
for ($i=1; $i<=10; i=i+1) //kezdrtk,
vgfelttel, lps megadsa, pontosveszszvel elvlasztva
{
CIKLUSMAG: ide rjuk, milyen utastst hajtson vgre a ciklus, ameddig nem teljesl a
vgfelttel.
}
A FOR ciklusnak a z{rjelen bell 3 paramtere
van:
Kezdrtk (A fenti pld{ban $i=1, teh{t a
kezdrtk 1)
Vgfelttel, vgrtk (Ez vagy igaz vagy
hamis. A fenti pld{ban a $i<=10, teh{t a
ciklus addig tart, amg az i v{ltoz rtke
kisebb marad, mint 10 vagy egyenl nem
lesz 10-zel)
Lps (A ciklus a fenti pld{ban az i
rtkt nveli eggyel mindaddig, amg az
i nem lesz egyenl tzzel, teh{t a
vgrtkkel)

64

PHP s MySQL az alapoktl

A FOR () ciklus a WHILE () egy speci{lis esete,


sz{ml{l{sra,
illetve
lista
megjelentsre
knnyebben
haszn{lhat.
A
ciklusv{ltozt
{ltal{ban i-vel jelljk. Megtehetjk azt is, hogy a
z{rjelben lv paramterek kzl esetleg
kihagyunk valamit, ekkor egy m{s ut{n kveti
egym{st kt pontosvessz. Ez azonban knnyen
vgtelen ciklushoz vezet, gy rdemes ink{bb
mindegyik paramtert rendesen megadni.
Most nzzk, hogyan tudjuk a FOR ciklust
haszn{lni! Ksztsnk vele szorzt{bl{t!
8.3.1. Pldaprogram a FOR () ciklus
bemutatsra
<?php
print ("5-s szorztbla:<br />");
for ($i=1; $i<=10; $i++)
{
print ("5 * $i = ". 5*$i."<br />");
}
?>
A program a FOR ciklus segtsgvel kirja az
ts szorzt{bl{t, az egym{s al{ a szorz{s
eredmnyvel egytt.

Ciklusok

8.4.

65

Egymsba gyazott ciklusok

Most nzzk meg a ciklusok z{r{saknt, hogy


hogyan {gyazhatunk egym{sba kt ciklust. Sok
esetben elfordulhat PHP-n{l, hogy az adatokat
t{bl{zatba kell rendeznnk (pl.: adatb{zisbl val
lekrdezs esetben). Ezt egy ciklus esetben is
megtehetjk, ha a haszn{ljuk a HTML nyelvbl
ismert t{bl{zatkszt TAG utast{sokat.
A pldaprogramban tov{bbra is maradunk a
szorzt{bl{kn{l, de most az egym{sba {gyaz{st
haszn{lva egy olyan t{bl{zatot hozunk ltre, amely
tartalmazza a szorzt{bl{kat 1-tl 10-ig!
8.4.1. Pldaprogram az egymsba gyazott
ciklusokhoz
<table border="1">
<!-- Ltrehozzuk a tblzatot, mg a PHP kdblokk
eltt. -->
<?php
for ($i=1; $i<=10; $i++) //i mutatja a sorokat - A kls FOR ciklussal kszlnek a sorok!
{
print("<tr>"); //j sor ltrehozsa
for ($j=1;$j<=10;$j++)
//j mutatja
az oszlopokat - A bels FOR ciklus kszti
az oszlopokat!

66

PHP s MySQL az alapoktl

{
$s=$i*$j;
//Deklarljuk az 's'
vltoz, ami a szorzs eredmnye
print("<td>$s</td>");
//A bels
ciklus felel azrt is, hogy a szorzs eredmnye megjelenjen a kpernyn.
}
print("</tr>");
}

?>
</table>
<!-- Lezrjuk a tblzatot a PHP kdblokk utn.-->
A vgeredmnynk egy 10 oszlop szles s 10
sor magas t{bl{zat lesz, amely tartalmazza az 1-es
szorzt{bl{tl a 10-esig az sszes szorzat eredmnyt, melyet knnyedn leolvashatunk a t{bl{zatrl.
Els r{nzsre nehznek tnnek a ciklusok, legfkppen a legutbbi pld{ban, de megfelel szint gyakorl{s mellett gyerekj{tk lesz a haszn{latuk!
A kvetkez fejezetben m{r a dinamikusabb
PHP oldalak fel kacsingatunk. Megismerkednk
az rlapokkal s megtanuljunk, hogyan is kell ket
elkszteni, s mi mindenre is tudjuk haszn{lni!

Ciklusok

67

rlapok

68

9. rlapok
A PHP-ben tal{n az egyik legfontosabb szerepe
az rlapoknak van. Ezek segtsgvel tudjuk igaz{n dinamikuss{ tenni weboldalainkat az{ltal,
hogy admin felletet kialaktva tudjuk tartalommal
feltlteni oldalainkat. Ezek segtsgvel krhetnk
be adatot a felhaszn{lktl, amikkel PHP programunk dolgozni, fog. Az adminpanel segtsgvel
felvehetnk, mdosthatunk, trlhetnk tartalmat
oldalainkrl, anlkl, hogy HTML-t szerkesztennk. Ezek kialakt{sa termszetesen nem kis idt
vesz ignybe, azonban a ksbbiekben az erre
sz{nt id tbbszrst sprolhatjuk meg, s knyelmesebben szerkeszthetjk honlapunkat, ahonnan csak akarjuk, weblapszerkeszt program haszn{lata nlkl!
De ne rohanjunk ennyire elre, elszr is nzzk mik is az rlapok elemei s hogyan is kell felpteni egy rlapot!

rlapok

69

rlap: valamilyen adatbeviteli clbl elksztett


formanyomtatv{ny, amellyel segtjk a felhaszn{lt a kitltsben. (M{srszt pedig segti a
programoz dolg{t a berkez adatok feldolgoz{sa
sor{n.)
Dreamweaver-ben: Form (rlap) eszkzt{r. A
mensor alatt tal{lhat lenyl list{ban tal{ljuk ezt
(amelyen alapesetben a Common felirat l{that).
Miut{n kiv{lasztottuk a Form eszkzt{rat, a
kvetkez elemeket l{thatjuk majd:

Fontos! Az rlap elemeket mindig egy Form


belsejbe
rakjuk
(klnben
nem
tudjuk
feldolgozni)!!! Ltrehoz{s{shoz az eszkzt{ron a
legels, Form felirat ikonra kattintsunk:

Most pedig nzzk meg melyek a sz{munkra


legfontosabb rlap elemek a fenti eszkzt{rrl!

rlapok

9.1.

70

rlap elemek:

1. Text Filed

Tulajdons{gai:
a. Char width (karakter szlessg)
b. Max chars (h{ny karakter befogad{s{ra
alkalmas)
c. Type (Single line, Multi line, Password)
Single line: egysoros beviteli mez.
Multiline: tbbsoros beviteli mez. Meglehet
adni a sorok sz{m{t (Num lines) s a hossz
sorok trdelst (Wrap).
Password: jelszbevitelre haszn{lhat (a
bert szveget * csillag karakterrel rejti el).
d. Initial value (Init val): Alaprtelmezett rtk,
megjelenskor mi legyen benne.
e. Name: PHP szempontj{bl az egyik
legfontosabb
tulajdons{g,
mivel
a
feldolgoz{skor a nvvel tudunk hivatkozni a
mez rtkre (a benne lv adathoz
rdemes t{rstani a textfield nevt).

PHP s MySQL az alapoktl

71

2. Hidden Field: rejtett mez

3. Textarea: ugyanaz, mint a Multi line.

4. Checkbox: igen/nem eldntend krdsekhez

a. Name
b. Checked value: feldolgoz{sn{l ez jelzi, hogy
igaz az rtke
c. Initial state: kezd {llapot:
-

Checked: pip{s

Unchecked:
kipip{lva

alaprtelmezsknt

nincs

5. Radio button / radio group:

Akkor haszn{ljuk, ha tbb rtkbl egyet kell


kiv{lasztani.
a. Name
b. Label (ez a szveg jelenik meg)
c. Value (ezt az rtket adja tov{bb)

72

PHP s MySQL az alapoktl

6. List / Men:

Ugyanaz a funkcija, mint az elzleg


lertaknak, de a men kisebb helyet foglal (mert
legrdl lista)
A list{n{l (a lista tpus{n{l) meg lehet adni a:
a. magass{got (Height)
b. s, hogy lehetsg van-e tbb elem
kijellsre (SELECTions Allow multiple)
7. Button:

(alaprtelmezettknt Submit feldolgoz a


neve)
a. Value: gomb felirata
b. Action:
-

submit: feldolgoz

reset: kezd {llapotba helyez

none: semmit sem csin{l

rlapok

9.2.

73

rlap: az action TAG s a


paramter tads

Ha megnzzk az rlapot, amelyet a Form-ra


kattintva szrunk be a weblapszerkesztn kdnzetben, akkor l{thatjuk, hogy az al{bbi kdrszlettel kezddik az rlap:
< form id=form1 methods=post action=>
Nzzk meg pontosan mik is ezek a tag-ek:
form id: az rlap azonostja (neve), ezzel tudunk
r{ hivatkozni.
methods: metdusok, itt adhatjuk meg, hogy
milyen mdon adja {t az rlap a paramtereket a
feldolgoz oldalnak.
Az adatok {tad{s{nak az action paramterben
megadott weboldalnak val {tad{s{nak kt
mdja van:
POST: Ekkor a weboldal HEAD rszben
mennek {t az adatok (header form{ban
trtnnek).
GET: Ez a mdszer az URL cmben adja {t a
paramtereket, azaz b{rki l{thatja, st meg is
v{ltoztathatja (Pl.: keress a GOOGLE-ben).

74

PHP s MySQL az alapoktl

Folyamata: A form kezdetekor a method


nev tulajdons{got GET-re {lltjuk, gy az URL
cmben fogja {tadni a paramtereket.
Pl.: ellenoriz.php?nev=HG&auto=checkbox

Az oldal neve ut{n jn a ? (krdjel), amely


jelzi, hogy paramterek kvetkeznek. Azt{n jn a
paramter neve s az egyenlsg jel ut{n az rtke.
Ha tbb paramter van, akkor & jellel v{lasztjuk el
ket egym{stl! Ebben az esetben az {tvev
oldalon a $_GET*nev+-vel vesszk {t az adatot.
Header: header (Location: siker.php);
A location-t nagy L betvel kell rni!
Ezzel a paranccsal a bngszt {tir{nythatjuk
automatikusan egy m{sik oldalra. Mivel az oldal
nem is l{tszik, nem szabad semmit kirni az
eredmny oldalba! Azaz <? tag-gel kezdjk az
oldalt, nincs HTML kd! (Arra is figyelni kell,
hogy ne legyenek res sorok az oldal
forr{skdj{ban, mert akkor szintn nem fog
mkdni!)
action: Az action tag-be kell berni azt az oldalt,
ahova a Submit gomb megnyom{s{val lp az
oldal. Ez az rlap feldolgoz oldala.

rlapok

75

A POST-tal s GET-tel trtn paramter{tad{sra


pld{t tal{lunk a Megvalst{sok PHP-vel c.
fejezetben!
Miut{n megismerkedtnk a legfontosabb rlap
elemekkel, az action TAG-gal s a paramter{tad{s
lehetsges form{ival, nzzk hogyan is valsthat
meg ez a gyakorlatban. Ezek megrtse nagyon
fontos, mert a ksbbiekben pld{ul egy admin
panel kialakt{s{n{l egytt kell haszn{lnunk az
eddig lert ismereteinket, a ksbb bemutatott
adatb{zis kezelsi parancsokkal.
s most nzznk egy p{r pld{t rlapok ksztsre!

rlapok hasznlata a gyakorlatban

76

10. rlapok hasznlata a


gyakorlatban

10.1. Regisztrcis rlap ksztse


Elsknt egy regisztr{cis rlapot fogunk kszteni, amely elsre elg sszetettnek tnhet, {m
lpsrl lpsre haladva {tnzzk a kszts folyamat{t! Kezdjnk is bele!
0., Elre megtervezzk, milyen adatokat is szeretnnk az rlapon bekrni a felhaszn{ltl! A
pld{ban mi krni fogjuk a vezetk, illetve a keresztnevt, nemt, felhaszn{lnevt s jelszav{t,
valamint a mobilsz{m{t. Emellett megkrdezzk
tle, hogy van-e autja s, hogy doh{nyzik-e. A
pld{ban haszn{lni fogjuk a Form eszkzt{rrl a
Text Field-et, a Checkbox-t, a Radio Button-t, a
List/Menu-t s persze a Button-t is.

rlapok hasznlata a gyakorlatban

77

1., Az elz lps azrt volt 0., mert mieltt elkezdjk a munk{t fontos a tervezs (gy lesz ez majd
akkor is, ha adatb{zist terveznk s ksztnk).
Most l{ssunk hozz{ a tnyleges ksztshez! A
Dreamweaver-ben ksztsnk egy j PHP oldalt:
File New Dinamic page PHP. Mentsk el
index.php nven (persze nem ktelez ez a nv, de
a pld{ban gy fogunk r{ hivatkozni). Az oldalunk
amibe most az rlapot csin{lni fogjuk nem tartalmaz PHP blokkot. Fontos viszont, hogy az rlap
feldolgoz{s{hoz szksges Form belsejbe tegyk
az rlap elemeit, gy els lpsknt szrjuk ezt be
ikonj{ra kattintva (A
az eszkzt{r Form
Dremweaver design nzetben a Form hat{r{t egy
szaggatott piros vonal jelzi, l{sd: a kpen)! A title
TAG-et s a fenti szvegeket n rgtn a ments
ut{n begpeltk, de ezek sz{munkra nem fontosak,
csak azrt vannak feltntetve, hogy l{ssuk mit is
ksztnk. Miut{n elhelyeztk a Form-ot az olda-

78

PHP s MySQL az alapoktl

lon rgtn {t is v{lthatunk kdnzetbe s ahol az


rlap action s method TAG-j{t fogjuk be{lltani:
<form action="regisztracio.php" method="post">
A mi pld{nkban {lltsuk be, hogy az oldal a
gombra val kattint{ssal a regisztracio.php-ra
ugorjon s, hogy a paramtereket POST metdussal (vagyis, hogy titkostva, az oldal HEAD rszben) adja {t a feldolgoz oldalnak. Ezt persze ksbb is megadhatjuk, de jobb elbb tlesni rajta,
nehogy megfeledkezznk rla (a regisztracio.php-t
is ltrehozhatjuk most is, ha akarjuk, de elbb az
index.php-n ksztjk el az rlapot, azt{n ksztjk
el a feldolgoz oldalt.)!
2., Miut{n az elz pontban felsoroltakat elvgeztk, elhelyezhetjk a Formon bell az rlap
elmeket! Lehetleg ezeket a rendezettsg miatt egy
t{bl{zatba helyezzk el (ez legyen 9 soros s 2 oszlopos az egyikoszlopba megy, mit is kell rni az
adott mezbe, a m{sik oszlopba meg maga az rlap elem). Most a 0. pontban lertak szerint a felhaszn{ltl mi krni fogjuk a vezetk, illetve a
keresztnevt, nemt, felhaszn{lnevt s jelszav{t,
valamint a mobilsz{m{t. Emellett megkrdezzk
tle, hogy van-e autja s, hogy doh{nyzik-e. Eszerint tltsk ki rtelemszeren a t{bl{zat bal oszlop{nak sorait!

rlapok hasznlata a gyakorlatban

79

gy fog kinzni az rlapunk, ha felhelyeztk az


rlap elemeket! Nzzk ezeket sorj{ban!

3., rlap elemek elhelyezse


a.

Vezetknv, keresztnv: Ez a kt rlap


elem Text Field lesz. Az elsnek a vnev-et, a
m{sodiknak a knev-et adtok a Properties
fln. Ezekkel a nevekkel fogunk a feldolgoz oldalon hivatkozni a begpelt rtkekre, a
feldolgoz oldal PHP blokk{jban. Emellett mindkt esetben be{lltottuk, hogy a beviteli mez szlessge s a maximum karaktersz{m 20 karakternyi
legyen. Ez elg kell, hogy legyen mind egy ke-

80

PHP s MySQL az alapoktl

resztnv, mind egy vezetknv esetben, ha csak


nincs feltnen hossz neve valakinek. A mez
tpusa Single line, teh{t egysoros beviteli mez.

b.

Neme: Hogy a felhaszn{l nemt megkrdezzk szksgnk lesz 2 darab Radio


Button-ra. Mindkettnek ugyanaz lesz a
neve: neme. Az rtkeknl viszont felttlenl m{s rtket kell adnunk mind a N, mind a
Frfi Radio Buttonnak (ennek ok{t majd megl{tjuk
a feldolgoz oldalon). A N-nl a bepip{lt rtknek, azaz a Checked value-nak egyet adtunk, a
Frfin{l kettt. Utbbin{l azt is be{lltottuk, hogy
alapbl legyen bejellve, azaz, hogy a felhaszn{lhoz akkor is t{rsuljon egy nem, ha vletlenl nem
jellte volna be.

c. Felhaszn{lnv, jelsz: A felhaszn{lnvnl nincs semmi jdons{g, ugyangy Text Field


mint az els kett, csak kevesebbre {lltottuk a max
karaktersz{mot (16-ra, a mez nevt egybknt
user-re {lltottuk). Neknk most a jelsz mez

rlapok hasznlata a gyakorlatban

81

rdekes, ami b{r ugyangy Text Field, b{r tpus{t


tekintve nem Single line, hanem Password. Ennek
a nevn is l{tszik, hogy jelsz bevitelre haszn{ljuk, ugyanis csillagok jelzik a bert karaktereket,
teh{t azok rejtve maradnak. me a jelsz beviteli
mez be{llt{sai:

d. Mobilsz{m: A mobilsz{mot kt rlap


elemmel krjk be. Sz{munkra az els lehet jdons{g, ugyanis a mobilszolg{ltat krzetsz{m{t egy
elre megadott list{bl v{laszthatja ki a felhaszn{l. Ez az elem egy List/Menu. Mi a tpus{t tekintve
Menu-knt haszn{ljuk (ha List-et haszn{ln{nk nem
legrdl lista lenne az eredmny hanem esetnkben egy 3 sz{mot tartalmaz lista, ahonnan
szintn v{laszthatn{nk). Ha valakinek mgis a List
a szimpatikusabb v{lassza azt, csak gyeljen arra,
hogy a Selection be{llt{s{n{l ne engedlyezze az
Allow multiple-t, mert azzal elrhetv v{lna tbb
krzetsz{m bejellse persze ez itt felesleges,
mert csak egyet kell megadni! A List values-re
kattintva adhatjuk meg, hogy a list{n mi jelenjen
meg (Item label), illetve, hogy ahhoz milyen rtk
t{rsuljon (Value - a feldolgoz oldalnak ez utbbi a

82

PHP s MySQL az alapoktl

fontos, pl.: bet{rsthatn{nk az egyes krzetsz{mokhoz a mobilszolg{ltat nevt, de ez most neknk nem kell). A mobilsz{m m{sodik felt egy
sima Text Field-el krjk be, ebben nincs semmi
klns, csak azt kell megadni, hogy a mobilsz{m
max 7 karakter legyen (mivel jelenleg a mobilsz{mok ht sz{mjegybl {llnak). me a be{llt{sok:

e. Van-e autja?, Doh{nyzik-e?: Ezt a kt


adatot kt Checkbox (kipip{ls doboz) rlapelemmel krjk be a felhaszn{ltl. A pld{ban az
els elemnek auto, a m{sodiknak a dohanyzik a
neve. gy {lltottuk be ezeket, hogy alapbl ne
legyenek bepip{lva (Unchecked). A Checked
value-hez, vagyis a Bepip{lt rtkhez egyet
rtunk, gy a feldolgoz oldal fel kldtt rtk,
mindkt rlapelemnl egy lesz.

rlapok hasznlata a gyakorlatban

83

f.
Regisztr{lok! gomb: Mint az rlapok
elemeinek ler{s{n{l tiszt{ztuk, hogy a Button
elemmel tudunk arra a feldolgoz oldalra lpni,
amelyet a Form-unk action TAG-jbe be{lltottunk
(Esetnkben ez a regisztracio.php). A gomboknak
alapbl Submit (Feldolgoz) a neve, ezen nem v{ltoztattunk. A Value mezbe bert szveg fog a
gombon megjelenni feliratknt. Az Action checkbox-okn{l bejellhetjk, hogy milyen feladatot vgezzen a gomb:
Submit form a feldolgoz oldalra ugrik,
Reset form kirti az rlapot (minden trl a
mezkbl, mintha egy j rlapot krtnk volna),
None nem csin{l semmit.

Ezzel {t is vettk azon rlap elemeket, amelyeket a pldaprogramba beillesztettnk. Most nzzk
a feldolgoz oldal felptst!
4., A feldolgoz oldal (regisztracio.php) elksztse.
Az elz pontokban elksztettk az index.php-t,
ami egy komplett rlap, amelyet kitltve a feldolgoz oldalra, a regisztracio.php-ra ugrik a program. Most ezt az oldalt ksztjk el. Ebben m{r
szerepel PHP blokk, viszont rlap elem nem.

84

PHP s MySQL az alapoktl

A szok{sos mdon mutatjuk be az oldal felptst,


a HTML tag-eket kihagyjuk, csak a PHP kdot
illesztettk be. L{ssuk!
<?php
$vnev=$_POST['vnev'];
//A GET illetve a
POST tmbkben troldnak az rlap beviteli mezi s azok rtkei.
$knev=$_POST['knev'];
//Mi a POST metdust hasznljuk (teht a paramterek titkostva
addnak t).
$neme=$_POST['neme']; //Lthatjuk, hogy
PHP oldalon ltrehozott vltozknak rdemes
ugyanazt a nevet adni, mint az eredeti rlap elemnek.
$user=$_POST['user'];
//Az sszes rlap
elem adatt letroljuk ily mdon egy vltozba.
$pass=$_POST['pass'];
//gy tudunk a
deklarlsok utn mveleteket vgezni az tvett
adatokkal.
$mobil1=$_POST['mobil1'];
$mobil2=$_POST['mobil2'];
$auto=$_POST['auto'];
$dohanyzik=$_POST['dohanyzik'];
//Miutn
tvettk az sszes adatot, kiratjuk a regisztrci
eredmynt a kpernyre.
print ("Vezetknv: $vnev<br />"); //Az
els 2 print fggvnnyel kiratjuk a felhasznl
vezetk-, illetve keresztnevt.
print ("Keresztnv: $knev<br />");
print ("Neme: ");

rlapok hasznlata a gyakorlatban

85

if ($neme= =1)
//A nem kiratshoz mr
szksgnk lesz egy IF elgazsra.
{ //Ha a N Radio Button van bejellve,
akkor annak rtke 1 lesz a feldolgoz oldalon.
print ("N<br />"); //Teht,
ha
a
$neme vltoz rtke 1, akkor azt rja ki, hogy N,
ha nem akkor azt, hogy Frfi.
}
else
{
print ("Frfi<br />");
}
print ("Felhasznl neve: $user<br />");
print ("Jelszava: $pass<br />");
//Itt a jelsz mr lthat lesz!
print ("Mobilszm: +36 $mobil1 $mobil2
<br />");
//A telefonszmot ratjuk ki. Elbb jn a krzetszm, aztn a htjegy mobilszm.
if ($auto= =1)
//A kt Checkbox feldolgozsa is IF elgazssal
trtnik, akrcsak a Radio Button-ok esetben.
{
print ("Igen, van autm.<br />");
}
else
//Ha nem jelltk be a Checkbox-t,
akkor a hamis g fut le.
{
print ("Nem, nincs autm.<br />");
}

86

PHP s MySQL az alapoktl

if ($dohanyzik= =1) //Ugyanaz trtnik, mint az


$auto esetben.
{
print ("Igen, dohnyzom.<br />");
}
else
{
print ("Nem dohnyzom.<br />");
}
?>
Ezzel el is ksztettk a feldolgoz oldalunkat.
Mint l{that az rlap elemek elhelyezse, majd
azok rtkeinek {tvtele s feldolgoz{sa nem tl
bonyolult, mg ha elsre annak is tnhet! Fontos
mg megjegyezni a pldaprogrammal kapcsolatban, hogy ez valj{ban nem tov{bbt semmilyen
adatot a felhaszn{lrl az adatb{zisba, mivel nem
haszn{ltunk semmilyen adatb{zis kezel parancsot
a program sor{n. Erre most mg nem is volt szksgnk, mivel a plda lnyege az volt, hogy megtanuljuk az rlap elemek szerept, paramtereit s
ezek feldolgoz{s{nak folyamat{t. A ksbbiekben
ezeket ssze fogjuk ktni adatb{zis ismereteinkkel
s ltre fogunk hozni egy admin felletrl szerkeszthet kisebb PHP programot (ez egy linkadatb{zis, linkaj{nl lesz tulajdonkppen).

rlapok hasznlata a gyakorlatban

87

A regisztr{cis programunk a megr{s ut{n hasonlkppen kell, hogy mkdjn:

88

PHP s MySQL az alapoktl

10.2. Tglalap kerlete s terlete


rlap segtsgvel
Ennl a programn{l m{r knnyebb dolgunk
lesz, mivel m{r az eddig megismert rlap elemek
kzl csak a Text Field-el kell dolgoznunk. A
program tulajdonkppen sokkal egyszerbb, mint
az elz, de a klnbsg annyi, hogy itt nem csak
szimpla adatbekrst hajtunk vgre. Most egy
interaktv programot ksztnk, amellyel a felhaszn{l ki tudja sz{molni egy tglalap kerlett

rlapok hasznlata a gyakorlatban

89

s terlett azon sz{mokkal, amelyeket gpel a


beviteli mezbe (ezt fontos volt megemlteni, mert
az rlapok megismers eltt mi csak n. programba beptett v{ltozkat haszn{ltunk a pld{kban, vagyis a felhaszn{l semmiflekppen nem
tudott beleavatkozni a program fut{s{ba). Most
pedig l{ssuk az elksztst!
0., Mivel a tglalapnak 2 paramtert kell bekrnnk a felhaszn{ltl (ami az a s a b oldal
lesznek), ezrt a Form-on bell kt Text Field-re
lesz szksgnk. Ksztnk egy rlapot, amelyen
bekrjk a kt sz{mot (index.php) s egy feldolgoz PHP oldalt (eredmeny.php), amelyen {tvesszk
a kt sz{mot s elvgezzk a sz{mt{st, majd kiratjuk az eredmnyt a kpernyre.
1., Index.php elksztse, rlap elemek elhelyezs
a. Ltrehozzuk az index.php-t. Beszrunk egy Form-ot az eszkzt{rrl.
Ezut{n kitltjk az al{bbiak szerint az aciton s
method TAG-eket:
<form action="eredmeny.php" method="get">
L{thatjuk, hogy most a feldolgoz oldalunk az
eredmeny.php lesz, valamint, hogy a GET-es paramter {tad{st fogjuk haszn{lni. Utbbi azrt nem
POST, mert most nem kell az {tadott paramtereket titkostanunk, gy azok az oldal URL cmben
addnak {t a kvetkezkppen:

90

PHP s MySQL az alapoktl

http://localhost/oktatoanyag/urlap2/eredmeny.php
?aszam=4&bszam=6&Submit=Kisz%E1mol%21
A fenti paramterekben az aszam az oldalt takarja, a bszam a b oldalt a Submit pedig a gombra
utal. Fontos megemlteni, hogy a GET-tel trtn
paramter {tad{sn{l az oldal neve ut{n krdjel
jelzi, hogy paramterek kvetkeznek, majd ezeket
felsoroljuk & jellel elv{lasztva. Pld{ul:
http://www.domainnev.hu/oldalneve.php?parame
ter1=0&parameter2=43&parameter3=7
Szrjunk be egy t{bl{zatot a rendezettebb megjelens rdekben, ebben helyezzk el majd a szvegeket s rlap elemeket a kvetkezkppen:

b. Most m{r elhelyezhetjk az rlap elemeit!


A sz{mok bekrshez kt Text Field-et fogunk
haszn{lni. Karakter szlessgnek s max karakter-

rlapok hasznlata a gyakorlatban

91

nek n 10-et adtunk meg, tpusa Single line. Az


els neve aszam, a m{sodik- bszam:

c. Ha az els kt elemmel kszen vagyunk,


akkor m{r csak a gomb elhelyezsre van szksgnk az oldalon, amire kattintva az eredmeny.php-ra ugrunk. A be{llt{sokn{l a Value
(teh{t a gomb felirata) jelen esetben Kisz{mol!, az
Action pedig Submit form:

2., Az rlappal kszen is voln{nk, most jn a


lnyeg a feldolgoz oldal, vagyis az eredmeny.php! Nzzk most ennek a PHP kdj{t!
<?php
$aszam=$_GET['aszam']; //tvesszk a kt
rtket az rlaprl s letroljuk ket az azonos
nev vltozkba.
$bszam=$_GET['bszam'];
if (($aszam>0) and ($bszam>0))
/*A szmols megkezdshez szksgnk van
egy IF elgazsra, mert ugyebr nem engedhetjk, hogy a felhasznl 0-t vagy annl ki-

92

PHP s MySQL az alapoktl

sebb szmot rjon be oldal hossznak, mert ugye


olyan tglalap nem ltezik. A felttel teht gy
szl, hogy: ha az a szm s a b szm is nagyobb nullnl, akkor hajtsa vgre az igaz gat,
ha nem rjon ki hibazenetet! */
{
$kerulet=2*($aszam+$bszam);
//Ha a s b nagyobb, mint nulla elvgezzk
a kt mveletet.
$terulet=$aszam*$bszam;
//Mind a kerlet, mind a terlet kiszmtst egy vltozban adtuk meg,
print("A
tglalap
kerlete
(K):
$kerulet <br />");
//gy kiratskor mr csak a $kerulet s
$terulet vltozkat kell begpelni.
print("A tglalap terlete (T):
$terulet");
}
else
//Ha a hamis g fut le, akkor a
program nem ad vissza semmifle eredmnyt,
csak egy piros hibazenetet!
{
print ("<font color='red'>A tglalap
egyik oldala sem lehet kisebb vagy egyenl nullval!<br />Krem csak pozitv
szmot adjon meg!</font><br />");
}
?>

rlapok hasznlata a gyakorlatban

93

A PHP blokkon kvl szrjunk mg be egy linket, ami az index.php-ra vezet, hogy ha valaki
hib{s sz{mot rt be vagy jra akar sz{moltatni valamit, vissza tudjon lpni!
<p><a href="index.php">Vissza az oldalak megadshoz</a></p>
Amennyiben mindent jl csin{ltunk, akkor a
kvetkezkpen fog mkdni a programunk:
1. Els lpsben berjuk a kt rtket a kt beviteli mezbe:

94

PHP s MySQL az alapoktl

2. Ezek ut{n a Kisz{mol! gombra kattintva az


oldal kirja a tglalap kerlett s terlett:

Ha szeretnnk mg gyakorolni az rlapok ksztst, akkor nyugodtan ksztsnk magunknak a


pldaprogramokhoz hasonlakat! Pl.:
Kr kerlete, terlete
H{romszg terlete, kerlte
Kocka vagy tglatest felszne, trfogata
Gmb felszne, trfogata
jabb regisztr{cis rlapok ksztse stb.
Ezek segtenek abban, hogy megfelel rutint szerezznk az rlapok elksztsben s hozz{j{rulnak az elz programhoz hasonlan pld{ul a

rlapok hasznlata a gyakorlatban

95

vezrlsi szerkezetek gyakorl{s{hoz is. Ez fontos,


mert a kvetkez anyagrszben megismerkednk
az adatb{zis kezelsvel MySQL-ben, majd azt a
tud{st vegytve rlap ismereteinkkel komolyabb
programokat is runk!

SQL adatbzisok

96

11. SQL adatbzisok

11.1. Bevezet, alapfogalmak


Adatb{zis: logikailag sszefgg inform{ci
vagy adatgyjtemny. Adott clbl ssze{lltott
adatok s objektumok gyjtemnye.
Adatb{zis-kezelk: Speci{lis programrendszer,
amellyel lehetsges az adatb{zisok kezelse.
Rel{cis adatb{zis-kezel rendszer: olyan
program, amelyik az adatokat sz{mtgpen, t{bl{zatokban t{rolja, rendezi, illetve onnan keresi
vissza. Pl.: Microsoft Access
Jellemzik:
Adatb{zis ltrehoz{sa, kezelse
Biztons{g
o Felhaszn{lk jogkre
o Adatments, tkrzs (pl.: feliratok.hu)
Elrhetsg
Tbb felhaszn{l

SQL adatbzisok

97

11.2. MySQL adatbzisok


A MySQL egy nylt forr{skd adatb{zis rendszer. A
MySQL-es
adatb{zis-kezels
megrtshez s elsaj{tt{s{hoz
szksgnk lesz kor{bban megszerzett tud{sunkra. Ha kor{bban tanultunk adatb{zis-kezelst pl.:
Access-ben, akkor knny dolgunk lesz a MySQL
megismerst s kezelst illeten.
Adatb{zis Adatt{bla: A MySQL-ben az adatok adatb{zisokban, azokon bell pedig adatt{bl{kban t{roldnak. Egy adatt{bla az al{bbiak szerint pl fel:

Egy EGYEDET jellemznk.

98

PHP s MySQL az alapoktl

Adatt{bla: logikailag sszetartoz adatok sorokbl (rekordok) s oszlopokbl (mezk) {ll


elrendezse.
Rekord: egyed sszes adata. Az adatt{bla
egyetlen sora, az inform{ci csoport egyetlen elemnek sszes adat{t tartalmazza.
Mez: egyed egyetlen tulajdons{ga.
Fontos! Mez- s t{blanevekben nem haszn{lunk kezetes bett!!! Az SQL nyelvet az angol
nyelvtan alapj{n ptettk fel. Az SQL nem rzkeny a kis s nagy bets klnbsgekre ({m azonban ne felejtsk el, hogy a PHP igen!). Ami az SQL
parancsokat illeti a jvben nagybets form{ban
rjuk majd ket, a tbbi kiegszt szveget (mint
pld{ul a t{blaneveket, mezneveket) pedig kisbetvel.

11.3. Egy tbla felptse MySQL


bell
Figyeljk meg milyen adattpusokat is haszn{lunk a pld{ban, s hogy milyen attribtumai vannak a bevitt adatoknak!

SQL adatbzisok

99

FK: Foreign
Key (idegen
kulcs)

Ha feltltjk a t{bl{t p{r rekorddal, akkor a


kilist{z{skor hasonlt l{thatunk:

* A Kiszerels mezhz ksztnk mg egy segdt{bl{t (kapcsolt{bl{t):

100

PHP s MySQL az alapoktl

PK: Primary Key


(Elsdleges kulcs)

Figyelem! Ezt a t{bl{t pld{nak hoztuk fel,


hogy l{ssuk, hogyan is pl fel egy MySQL adatt{bla. A ksztshez szksges lpseket a ksbbiekben vesszk {t, ut{na pldafeladatknt mi
magunk is ksztnk egy adatb{zist, benne egy
adatt{bl{val. Az SQL parancsok bemutat{s{n{l
szintn ezt a Sr nev t{bl{t hozzuk fel, persze
kezet nlkl (sor), pl.:
SELECT

FROM

sor;

101

PHP s MySQL az alapoktl

12. PHP MyAdmin


A phpMyAdmin
az Apache webszerverhez kapcsold adatb{zis-kezel modul, amely
grafikus kezelfellettel rendelkezik. Ezen a felleten knnyebben tudjuk kezelni az adatb{zisokat,
mint a konzolos felleten. Az Apache-csal egytt a
phpMyAdmin is feltelepl gy a telepts ut{n m{r
haszn{latba is vehetjk. Elrse: berjuk a bngsznkbe a http://localhost cmet s a list{bl kiv{lasztjuk a phpmyadmin linket. Begpeljk a szervernkhz tartoz felhaszn{l nevet s jelszt s
ezzel be is lptnk a modulba.
[m mieltt elkezdennk j adatb{zist s adatt{bl{kat ltrehozni, tiszt{znunk kell, hogy milyen
meztpusokat is tudunk haszn{lni a MySQL-en
bell. Aki m{r haszn{lt Access-t, az tudja, hogy az
adatt{bl{kban szerepl adatok m{s-m{s attribtummal rendelkeznek. M{s tpusa van az egyes

102

PHP s MySQL az alapoktl

sz{m, szveg s d{tumform{tumoknak s a lefoglalt t{rhely mrete is klnbzik. Most nzzk meg
mely adattpusok sz{munkra legfontosabbak az
adatb{zis-kezelshez. Ezek egy rszt a kvetkez
t{bl{zatban bemutatjuk,, a tbbit megtal{lhatjuk az
interneten a MySQL referencia-knyvben. Akit
rszletesebben rdekelnek ezek, l{togasson el a
http://www.php.net,
illetve
a
http://www.mysql.com oldalra, ahol a teljes lista
megtal{lhat!

12.1. Legfontosabb adattpusok a


MySQL-en bell
MYSQL

T[RHELY

ADATTPUS

ADATTPUS

IGNYE

JELLEMZI

Numerikus adattpusok

bigint

smallint
(eljellel)
smallint
(eljel nlkl)

8 b{jt

2 b{jt
2 b{jt

A legnagyobb egsz
tpus (t{rolhat rtktartom{ny ~ 1019- 1019, eljel nlkl 01020-ig).
- 32 768 s 32 767
kztti egsz sz{mok.
0 s 65 535 kztti
egsz sz{mok.

PHP MyAdmin

tinyint
(eljellel)
tinyint
(eljel
nlkl)

103

1 b{jt

- 127 s 128 kztti


egsz sz{mok.

1 b{jt

0 s 255 kztti egsz


sz{mok.

int, integer

4 b{jt

decimal

pontoss{g
+ 2 b{jt

- 2 147 483 648 s


2 147 483 647 kztti
egsz sz{mok t{rol{s{ra alkalmas.
Lebegpontos rtkek
t{rol{s{ra haszn{ljuk,
ahol a pontoss{g is
fontos (pl.: 21,8).

Szveges adattpusok

char

1 - 255

varchar

1 - 255
b{jt

Rgztett hosszs{g
szveges mez. Akkor haszn{ljuk legink{bb, mikor egy karaktert szeretnnk
t{rolni.
V{ltoz hosszs{g
szveg t{rol{s{ra
alkalmas (maxim{lis
hossza 255 karakter
lehet). Akkor haszn{ljuk, mikor az attribtum rtknek hossza
v{ltoz (ugyanis ez az

104

text

PHP s MySQL az alapoktl

0- 65 535
b{jt

adattpus a bert szvegnek megfelelen


dinamikusan v{ltoztatja t{rhely ignyt,
vagyis tnylegesen
csak annyi helyet
foglal el, amennyi
karaktert begpeltnk!).
Szveges rtkek
t{rol{s{ra haszn{latos. A varchar-ral
ellenttben akkor is
lefoglalja a teljes t{rhelyet, ha nem is gpeltnk bele annyi
karaktert. (Ezt ink{bb
a nagyobb terjedelm
szvegek t{rol{s{ra
haszn{ljuk)

Dtum adattpusok

date

3 b{jt

A Gergely-napt{r
szerinti d{tumok
t{rol{s{ra alkalmas. A
t{rolhat rtktartom{ny 1000. janu{r 1.
9999. december 31.
kztt van.

PHP MyAdmin

datetime

105

8 b{jt

time

3 b{jt

year

1 b{jt

Form{tuma: HH-NN
Pl.: 2010-12-08
A Gergely-napt{r
szerinti d{tumok s
idpontok t{rol{s{ra
alkalmas. A t{rolhat
rtktartom{ny 1000.
janu{r 1. 00:00:00
9999. december 31.
23:59:59 kztt van.
Form{tuma: HH-NN :PP:MM
Pl.: 2011-02-14
22:14:00
Idpont t{rol{s{ra
szolg{l jfl s jfl
1 m{sodperc kztt
Form{tuma:
:PP:MM
Pl.: 14:03:13
A Gergely napt{r
szerinti veket t{rolhatunk benne 1900 s
2155 kztt.

106

PHP s MySQL az alapoktl

12.2. A MySQL mkdse

12.3. j adatbzis ltrehozsa


phpMyAdmin-ban
Belpnk a localhostba (a bngsz cmsor{ba
rjuk be)
Belpnk azon bell a phpmyadmin mapp{ba
Begpeljk a felhaszn{l nevnket s a jelszavunkat, s m{r bent is vagyunk!

PHP MyAdmin

107

Bal frame-ben tudunk adatb{zist v{lasztani


Jobb frame-en hozhatunk ltre j adatb{zist (Az
Egybevets lenyl paneln v{lasszuk a latin
2_hungarian_ci-t). Ugyanitt, jobb oldalt tudunk
minden m{s mveletet elvgezni.
Ha belptnk, a kvetkez kpernyt l{thatjuk:

A bemutatott pld{kban a 2.7-es verzit haszn{ljuk jelenleg az Apache-csal, de az Interneten


lv szervereken {ltal{ban m{r ennl jabb verzikkal is tal{lkozhatunk. Azonban nem kell megijedni, a rgebbi s jabb verzikkal is knnyen
elboldogulunk majd, ha m{r megtanultuk kezelni.
Jl l{tszik a kpernykpen, hogy a bal oldalt
lv mezbe egy nevet gpelve tudunk adatb{zist

108

PHP s MySQL az alapoktl

kszteni, amely gy a Ltrehoz gombra val kattint{ssal el is kszl. A pld{n az egybevetst m{r
be{lltottuk latin2_hungarian_ci-re. Ez azrt fontos, hogy kezetes betket is tudjunk haszn{lni.
[m ennyi nem biztos, hogy elg is lesz. Ha a szervernkn nincs megfelelen be{lltva a karakterkdol{s, akkor knnyen ?-et kaphatunk vissza
pld{ul az s betk helyett. Sajnos az ingyenes
t{rhelyeken ez elg sokszor elfordul (persze nem
mindenhol), de erre is nznk ksbb egy kis praktik{t! Ha begpeltk a nevet s ltrehoztunk egy j
adatb{zist, akkor a bal oldalt l{that Adatb{zis
felirat alatt lv lenyl list{n tudjuk kiv{lasztani
az elksztett adatb{zist, hogy abba adatt{bl{kat
kszthessnk. Meg kell jegyezni, ha ingyenes t{rhelyen szeretnnk adatb{zist kezelni, azt {ltal{ban
elbb aktiv{lni kell az adott szolg{ltat honlapj{n.
Ezek ut{n hozhatunk ltre j t{bl{kat. Adatb{zisbl csak egyet kezelhetnk ekkor (ami {ltal{ban
ugyanazt a nevet viseli, mint az ingyenes t{rhelynk domain neve, amit mi adtunk meg). Ez kicsit
zavar lehet, fleg, ha sok adatt{bl{t akarunk
haszn{lni, de ugye az ingyenessgnek is {ra van<
Ezek a kezd lpsek j adatb{zis ltrehoz{sakor. A kvetkezkben egy pld{n keresztl ksztnk egy adatb{zist, megtanulunk t{bl{t ltrehozni, be{lltani a mezk attribtumait, majd rekordokat feltlteni. Fontos, hogy a plda szerint ksztsk el az adatb{zist, mert erre alapozva a ksbbi-

PHP MyAdmin

109

ekben fogunk mg pldaprogramokat is felhozni!


s most l{ssunk is neki!

12.4. Adatbzis, adattbla ksztse


Az elbbi {br{n l{that kpernytl elindulva
vgigvesszk egy adatb{zis s azon bell egy adatt{bla ksztst. Egy nyilv{ntart adatb{zist ksztnk, amiben szerepelni fog az egyn neve, anyja
neve, szletsi helye, szletsi d{tuma. A plda
kedvrt ennyi mez neknk egyelre elg is lesz.
Most nzzk a lpseket!
1., Hozzunk ltre egy j adatb{zist a kperny
jobb oldal{n az elz fejezetben lertak szerint! Az
adatb{zisunk neve peldafeladat legyen (ha nagyon
akarjunk, termszetesen m{s nevet is adhatunk
neki, de mi a pld{k sor{n ezt a nevet fogjuk haszn{lni). Az egybevets lenyl paneln v{lasszuk ki
a latin2_hungarian_ci-t. Kattintsunk a Ltrehoz
ra!

2., Miut{n ltrehoztuk automatikusan felkn{lja


a php MyAdmin j t{bla ltrehoz{s{t az jonnan
ksztett adatb{zisunkba. Legyen a t{bla neve
nyilvantartas, a mezk sz{ma pedig 5!

110

PHP s MySQL az alapoktl

Kattintsunk a Vgrehajt gombra!

Ezut{n m{r meg is nylik az res adatt{bla, ahol


el is kezdhetjk a mezk neveinek s attribtumainak be{llt{s{t!
3., Az els meznk az id lesz. A neve az angol
identity szbl sz{rmazik, (szemly)azonoss{got
jelent s {ltal{ban ez a szok{sos nvhaszn{lat
kulcsmezk esetben. Ez a mez fogja a ksbbiekben beazonostani az aktu{lis rekordot. Ennl a
meznl be kell {lltanunk az EXTRA felirat oszlopban, hogy auto_increment. Ez annyit tesz, hogy
minden egyes j rekord beszr{sakor ez a mez
mag{tl nveli az rtkt eggyel (mert ugyeb{r ez
INT tpus lesz, az els rekordn{l az id 1 lesz).
Mivel mag{tl nvekszik az rtke, nem szabad j
rekord feltltsekor belernunk semmit! Ez a mez
lesz a kulcs meznk is egyben, ezrt az EXTRA
oszlop melletti, kulcs ikonnal jelzett oszlop
checkbox-{t jelljk be. Ebben az oszlopban tudjuk ez{ltal az elsdleges kulcsot be{lltani. Az id
ezzel ksz is! Nzzk a tbbi mezt, hogyan is kell
kitltennk!

PHP MyAdmin

111

A 2. mez neve: nev


Tpusa: VARCHAR
Hossza: 30
A 3. mez neve: anyjaneve
Tpusa: VARCHAR
Hossza: 30
A 4. mez neve: szhely
Tpusa VARCHAR
Hossza: 50
Az 5. mez neve: szdatum
Tpusa: DATE Hossz: nem kell berni semmit!
A 3 szveges tpus meznl {lltsuk be az egybevetst latin2_hungarian_ci re!
Kattintsunk a Ment gombra s m{r el is kszlt
az j adatt{bl{nk, feltlthetjk rekordokkal!
Ha mindent jl csin{ltunk, a phpMyAdmin kvetkez t{blastruktr{t fogja mutatni:

4., Miut{n
elkszltnk, a
phpMyAdmin
bal feln, az
Adatb{zisn{l
kiv{laszt{sra kerlt a peldafeladat adatb{zis s
alatta megjelent a nyilvantartas t{bla linkje (bal

112

PHP s MySQL az alapoktl

oldali {bra). Ahhoz, hogy a t{bl{val mveletet


vgezznk, a fenti eszkzt{rat kell haszn{lnunk,
ami a jobb frame tetejn van (ld. {bra).

A Beszr flre kattintva tudunk rekordot beszrni a phpMyAdmin-on keresztl. A tbbi fl,
ami neknk fontos lehet:
Tartalom: a kiv{lasztott t{bla tartalm{t mutatja
(vagyis a rekordokat list{zza ki)
Struktra: az adott t{bla felptst mutatja (a
3. pont alj{n l{that {br{hoz hasonlan)
SQL: szveges SQL parancsokat tudunk ide
begpelni s lefuttatni, mintha csak a konzol felletet haszn{ln{nk.
Keress: megadhatunk keressi feltteleket ak{r
meznknt is, ha az adatt{bl{n bell keresnk
valamilyen rekordot.
Export, Import: adatb{zismentst (DUMP-ol{st)
tudunk vgezni az elsvel, a m{sodikkal adatb{zist beimport{lni DUMP f{jl segtsgvel
(ezekrl ksbb)
Tevkenysgek: t{bl{kat helyezhetnk, m{solhatunk {t egyik adatb{zisbl a m{sikba, ellenrizhetjk, javthatjuk a t{bl{kat stb.
Kirt: kirti az adatt{bl{t (kitrli a rekordokat, de a t{bla megmarad!)

PHP MyAdmin

113

Eldob: eldobja az adatt{bl{t (vglegesen trli a


t{bl{t is, minden adat elveszik!!!)
Teh{t kattintsunk a Beszr flre, ami ut{n megjelenik egy beviteli rlap, ahol egyszerre ak{r 2
rekordot is fel tudunk tlteni egyszerre. Tltsk fel
a t{bl{nkat a kvetkez rekordokkal:
Nv
Nagy
J{nos
Kis
Jol{n
Kov{cs
G{bor
Antal
Iv{n
Varga
Bla
Kozma
Mikls
Dob
Istv{n
Szab
Elemr

Anyja
neve
Kov{cs
M{ria
Szab
Anna
Szcs
Tmea
Tak{cs
va
Nagy
Eszter
P{sztor
Jol{n
Csiks
Anita
Juh{sz
Ildik

Szletsi
helye
Budapest

Szletsi
d{tuma
1989-08-05

Kaposv{r

1962-06-03

Budapest

1976-10-12

Szeged

1992-02-05

Salgtarj{n
Gyr

1985-06-25

Eger

1952-12-20

Pcs

1987-03-13

1961-05-03

Ha fel akarjuk vinni az rlapot, kattintsunk a


Vgrehajt gombra! Ezzel a begpelt adatok bekerlnek egy j rekordknt az adatt{bl{ba.

114

PHP s MySQL az alapoktl

Figyeljnk arra, hogy az id mezbe ne rjunk


semmit, hagyjuk resen! A Funkci lenyl panel
sem kell neknk, ahhoz ne nyljunk! A d{tum
ber{sa a fenti t{bl{zatban megjelen d{tumform{val trtnik: -HH-NN.
A kvetkez fejezetekben megtanuljuk azokat
az SQL parancsokat, melyek elengedhetetlenek
adatb{zis kezel s PHP ismereteinkhez egyar{nt.
Megtanuljuk, hogyan is kell egy adatb{zist sszektni PHP oldalakkal, hogy az adatt{bl{k tartalm{t
egy weboldalba list{zva megtekinthessk.

115

PHP s MySQL az alapoktl

13. SQL parancsok


Az adatb{zisokkal tbb mdon is vgezhetnk
mveleteket. Legink{bb a grafikus felletet haszn{lata javasolt (a PHP MyADMIN-t), de nagy
elny az is, ha valaki tud adatb{zist kezelni konzolos felleten is (mert a kvetkez parancsok fggetlenek az adatb{zis-kezel rendszertl, gy egyar{nt mkdnek a MySQL-ben s egyb rendszerekben is).

13.1. Belps a DOS-os (konzolos)


felletre:
A Start men Futtat{s sor{val elhvhat ablakba gpeljk be a kvetkezket:
mysql.exe u felhaszn{lnevnk p
Ezzel be tudunk lpni a konzolos felletre. A u
kapcsol ut{n meg kell adnunk a felhaszn{lnevnket a p kapcsolval pedig jelezzk, hogy a
jelszavunkat is meg akarjuk adni a belpshez.

116

PHP s MySQL az alapoktl

Ha megjelent a kpernynkn a mysql>


prompt, akkor m{r neki is kezdhetnk a parancsok
gpelshez.

show databases;
show tables;
use proba;
describe sor;

adatb{zisok mutat{sa
t{bl{k mutat{sa
prba adatb{zis haszn{lata
sr t{bla mutat{sa (ler{sa)

Figyeljnk oda a parancsok ut{n tal{lhat ;


(pontosvesszkre), mert ezek elhagy{sa esetn a
parancs nem hajtdik vgre, hibazentet kaphatunk!

SQL parancsok

117

13.2. Lekrdezs SQL parancsokkal:


1.

SELECT
lekr

Joker
karakter
(minden
mezt
kir)

FROM
honnan

sor;
a t{bl{nk
neve

A csillagot felv{lthatjuk a mezk nevvel,


vesszvel elv{lasztva. Ha nem vagyunk biztosak a mezk nevvel, a lekrdezs eltt rassuk
ki egy describe-bal a t{bl{t.
2. SELECT *mezonev1, mezonev2, <+ FROM
tabalanev;
Csak adott mezk rtkeit krjk le az adatt{bl{bl.
3. SELECT *mezonev+ AS atnevezett mezonev;
[tnevezs a lekrdezsben. Nem az adatt{bl{ban! (A [ + jeleket nem kell begpelni a lekrdezsbe.)

118

PHP s MySQL az alapoktl

4. Aggreg{l fggvnyek
a., Megsz{ml{l{s:
SELECT COUNT(*) FROM sor;
Jelen esetben a sr t{bl{ban sz{molja meg a rekordokat. Ennl a fggvnynl is haszn{lhat az
AS-es {tnevezs (ugyangy az ezt kvetekben
is). Az aggreg{l fggvnyeket MINDIG a SELECT
ut{n rjuk be.
b., Szumm{z{s:
SELECT SUM(mezonev) FROM tablanev;
sszeadja a mezhz tartoz adatokat (csak
numerikus adat sszead{s{ra kpes).
c., Minimum kiv{laszt{s:
SELECT MIN(mezonev) FROM tablanev;
A mez legkisebb rtkt adja vissza.
d., Maximum kiv{laszt{sa:
SELECT MAX(mezonev) FROM tablanev;
A mez legnagyobb rtkt adja vissza.
e.,[tlag sz{mt{s:
SELECT AVG(mezonev) FROM tablanev;
5. SELECT z{radkok Felttel
WHERE kulcssz ut{n trtnik a felttel megad{sa.

SQL parancsok

119

A felttel ut{n <, >, <=, >=, =, != (nem egyenl)


jelek szerepelhetnek.
Pl.: <WHERE ar != 120;
s kulcssz a felttelek sszefzsre: AND
Pl.: <WHERE ar < 200 AND alkohol > 4.5;
Vagy kulcssz: vagy az egyik, vagy a m{sik
felttel teljesl: OR;
Kztt kulcssz: -tl -ig hat{r: BETWEEN
Pl.: <WHERE ar BETWEEN 180 AND 230;
IN kulcssz: ezut{n z{rjelek kztt egy felttel
megad{sa
NOT IN kulcssz: az IN ellentte, komplementere
LIKE kulcssz: LIKE ut{n meg kell adni mi
legyen a keresett felttel
LIKE-n{l a joker karakter a % (sz{zalk) jel.
Pl.: <WHERE mezonev LIKE %a%; olyan
szveget keres, amiben van a bet. Ha az els %
jelet nem rn{nk, akkor csak a betvel kezdd
szavakra keres r{!
%a% sztredk, tbb betre, karakterre keres
_ (al{hz{s karakter) egy karakterre haszn{ljuk
Pl.: <WHERE markanev LIKE _m%; Olyan
m{rkanvre keres r{, amiben az els bet b{rmi
lehet, a 2. csak m bet, azut{n pedig b{rmilyen karakter lehet.

120

PHP s MySQL az alapoktl

ORDER BY felttel: rendezs valamilyen felttel szerint nvekv sorrendben (ASC)


ORDER BY felttel DESC: ugyanaz, mint az
elz, csak cskken sorrendben
M{sodlagos rendezsi szempont is megadhat.
Pl.: < ORDER BY mezonev1 DESC, mezonev2
Szveges rendezs esetn ABC sorrend van,
vesszvel megadhatunk tbb szempontot is.
A numerikus adatokat tudjuk v{ltoztatni a lekrdezsben a +, -, *, / mveleti jelek segtsgvel.
EMPTY SET zenet, amit a MySQL-tl kapunk:
nincs ilyen, nincs tal{lat a felttelre

13.3. Kapcsolat ltrehozsa MySQLben


Tbb t{bla sszekapcsol{s{nak szintaktik{ja (a
kiv{lasztott mezkkel, hogy kapcsolatot tudjunk
ltrehozni):
1. SELECT tablanev1.mezonev1,
tablanev2.mezonev2 FROM tablanev1, tablanev2
2. Tnyleges kapcsolat: az 1. pontban lert lekrdezshez hozz{fzzk a kvetkezt:
< WHERE tablanev1.mezonev1 =
tablanev2.azonosito

SQL parancsok

121

Az azonost (ID) segtsgvel p{rosthatjuk


ssze a t{bl{t, mivel ez volt a kulcsunk (Az SQL
adatb{zisok cm fejezetben pldaknt felhozott
sr t{bl{t ezzel a mdszerrel tudjuk sszekapcsolni
a Kiszerels mezhz tartoz segdt{bl{val.).
3. Ha p{rostotta az idegen s elsdleges kulcsokat s ltrejtt a kapcsolat, AND kulcsszval
jabb lekrdezseket kszthetnk (mivel a
WHERE-hez fznk hozz{ az AND-del).

122

PHP s MySQL az alapoktl

14. DML adatmdost


parancsok

14.1. Mi is az a DML?
A DML jelentse Data Manipulate Language,
azaz adatmdost nyelv az SQL-en bell.

14.2. 1. j rekord beszrsa


INSERT INTO tablanev (z{rjelben itt megadjuk, milyen mezknek akarunk rtket adni)
VALUES (z{rjelben itt megadjuk azoknak a mezknek a felvitelt, amiket az elbb felsoroltunk
kezetes bets char-n{l jel kell);

14.3. 2. Rekord mdostsa:


UPDATE sor SET ar = 150; A sr t{bla minden {r{t nveli 150-nel.
UPDATE sor SET ar =160 WHERE id = 2;
Ennl csak annak a rekordnak v{ltoztatja meg az

DML adatmdost parancsok

123

{r{t, aminek az azonostja 2 (WHERE z{radk


ut{n kell megadni).
Erre lehet alkalmazni tbb v{ltoztat{st is, ezeket
vesszvel v{lasztjuk el.
Pl.: UPDATE sor SET alkohol = 4.7, ar = 120,
markanev = SPATEN WHERE id = 2;
Az UPDATE parancsot WHERE z{radk nlkl meggondolatlanul soha ne haszn{ljuk!

14.4. 3. Trls DELETE:


DELETE FROM tablanev; Minden adatot trl!!!
DELETE FROM sor WHERE id = 3; Kitrli
azt a rekordot, aminek az azonostja a 3-as.
WHERE ut{n megadjuk felttelknt, hogy mit
szeretnnk trlni:
Pl.: DELETE FROM sor WHERE alkohol < 4.5;
Trli azt a rekordot a sr t{bl{bl, aminek az
alkoholtartalma kisebb, mint 4,5.
Egy rosszul kiadott DELETE paranccsal knynyen el tudjuk rontani ak{r trlni is az egsz
eddig elksztett adatb{zisunkat, ezrt rdemes
idnknt biztons{gi mentst kszteni!
DUMP-ol{s: biztons{gi ments, adatb{zis viszsza{llt{sa (INSERT INTO-s SQL parancsokkal
vissza tudjuk {lltani az egsz adatb{zisunkat).
Fontos! A DELETE parancsot WHERE z{radk
nlkl ne haszn{ljuk!

CMS rendszerek

124

15. PHP s MySQL


sszekapcsolsa

1. Kapcsolat megad{sa a PHP blokkon bell:


$kapcsolat = mysql_connect
(LOCALHOST,ROOT,KOZI1987);
adatb{zis helye felhaszn{lnv
(IP cm is lehet)

jelsz

$kapcsolat ez az n. connection string


A fels sor ut{n OR-ral hozz{fzhetjk a hiba
ok{t s egy hibazenetet is:
OR DIE (print HIBA!.mysql_error());
A fenti plda mkdse: csatlakoz{s a
localhost-hoz, root felhaszn{lval s kozi1987
jelszval. Ha nem sikeres, akkor a PHP program
vget r, kirja, hogy HIBA s a hiba ok{t lekri a
MySQL szervertl.

PHP s MySQL sszekapcsolsa

125

Ha sikeres a csatlakoz{s a $kapcsolat v{ltoz t{rolja a kapcsolatot.


2. Adatb{zis kiv{laszt{sa:
mysql_select_db(proba, $kapcsolat);
Itt is lehet az OR-ral hozz{fzni a hibazenetet.
A fenti paranccsal kiv{lasztjuk a $kapcsolatbl
a haszn{lni kv{nt adatb{zist, ha nincs ilyen, akkor
hib{val jelezzk.
3. Parancs meghat{roz{sa:
pl.: $parancs = SELECT * FROM tablanev;
4. Parancs kiad{sa:
A $parancs szveges v{ltozban lv parancsot
futtatjuk le az adatb{zison. A $kapcsolat elhagyhat, ilyenkor az utolj{ra megnyitott kapcsolaton fog
dolgozni. Ha nem j a parancs hib{t jelez vissza!
$eredmeny = mysql_query($parancs, $kapcsolat);
A visszaadott eredmnyt a $eredmeny v{ltoz
tartalmazza.
5. Feldolgoz{s WHILE ciklussal,
mysql_fetch_array
(A feldolgoz{s s a parancs megrtsre nznk
konkrt pld{t a ksbbiekben.)

126

PHP s MySQL az alapoktl

6. majd az adatb{zis lez{r{sa:


Adatb{zis lez{r{sa: mysql_close($kapcsolat);
A fenti lpsek FORM haszn{latakor (rlapok
esetben) a kvetkezkppen v{ltoznak:
1.
Kapcsolat kialakt{sa
2.
Adatb{zis kiv{laszt{sa
3.
SQL parancs megad{sa
4.
Futtat{s
5.
List{z{s
6.
[tir{nyt{s bez{r{sa

15.1. Pldaprogram PHP s MySQL


sszekapcsolsra
Most megnzzk egy viszonylag egyszer pld{n keresztl, hogyan is trtnik egy adatb{zis s
egy PHP oldal sszekapcsol{sa. Ennek lnyege,
hogy a PHP segtsgvel minden adatb{zisban
t{rolt adatot kpesek vagyunk a kpernyre ratni
weblap form{j{ban. Erre plnek a modern dinamikus honlapokon pld{ul a hrek, frumok, vendgknyvek, chatbox-ok s minden m{s olyan
pt elem, melyet adatb{zisban t{rolunk s admin
panelrl tudunk szerkeszteni: felvenni, mdostani
vagy trlni.

PHP s MySQL sszekapcsolsa

127

A mostani feladatban, egy PHP oldal form{j{ban, kilist{zzuk a kor{bban m{r elksztett
peldafeladat adatb{zisunk nyilvantartas t{bl{j{t,
mghozz{ nv szerint nvekv sorrendben. A parancsokat m{r {tnztk ehhez s a folyamatot is
ismertettk az elz pontban, most pedig megnzzk a forr{skdon keresztl a kszts folyamat{t!
Nagyon oda kell figyelnnk, hogy hol nyitunk s
hol z{runk PHP kdblokkot s persze a szintaktik{ra is gyelnnk kell! Minden lpst lertuk a
megfelel sorhoz a m{r megszokott megjegyzs
form{ban! Most pedig l{ssuk a kdot (<body> tagtl a </body> tag-ig):
<body>
<p align="center"><h2>Nyilvntartsi jegyzk</h2></p>
<p>
<!-- Ksztnk egy tblzatot, amely a PHP kdblokkon kvl szerepel s belerjuk a nyilvantarto nev
adattbla mezinek nevt. -->
<table width="600" border="0" cellpadding="0"
cellspacing="0">
<tr>
<td width="150"><strong>Nv</strong></td>
<td width="150"><strong>Anyja neve
</strong></td>
<td width="150"><strong>Szletsi hely
</strong></td>

128

PHP s MySQL az alapoktl

<td width="150"><strong>Szletsi dtum


</strong></td>
</tr>
</table>
</p>
<p>
<?php
$kapcsolat = mysql_connect("localhost",
"root", "kozi1987") or die (print
"HIBA!".mysql_error());
/* 1. Csatalakozunk a helyi gpen (localhost) lv
szerver adatbzishoz ROOT felhasznlnvvel s
KOZI1987 jelszval (ha mi ms felhasznlt vagy
jelszt hasznlunk, termszetesen azt kell begpelnnk). Ha nem sikeres, akkor a PHP program vget
r, kirja, hogy HIBA! s a hiba okt lekri a mysql
szervertl. Ha sikeres a $kapcsolat vltoz trolja a
kapcsolatot. */
mysql_select_db("peldafeladat", $kapcsolat);
//2. Kivlasztjuk a peldafeladat adatbzist, a $kapcsolat connection string-bl.
mysql_query("SET NAMES latin2");
/*Ezt a sort nem ktelez kiraknunk, ez egy kis
parktika, hogy ha a webszerver (ahova az oldalunkat
feltltjk) nem engedi a karakterkdls belltst,
akkor ez a kis fggvny automatikusan latin2-es kdolsra teszi a PHP oldalt, gy az kezetes s
betk is gond nlkl megjelennek!*/
$parancs = "SELECT * FROM nyilvantartas
ORDER BY nev";

PHP s MySQL sszekapcsolsa

129

//3. A $parancs szveges vltozban lv parancsot futtatjuk le az adatbzison. A $kapcsolat elhagyhat, ilyenkor az utoljra megnyitott kapcsolaton fog dolgozni. A mostani esetben lekrdezzk a
nyilvantartas tbla sszes mezjt s a 'nv' mez
szerint nvekv sorrendebe rakjuk.
$eredmeny = mysql_query($parancs, $kapcsolat);
//4. A $eredmeny vltozban eltroljuk, hogy a
$parancs-ot hajtsa vgre a PHP fordt a $kapcsolatban megjellt adatbzison.
while ($sor = mysql_fetch_array($eredmeny))
/* 5. Egy WHILE ciklussal feldolgozzuk a rekordokat.
A visszadott eredmny egy 2 dimenzis tblzat lesz.
Ezt soronknt dolgozzuk fel a mysql_fetch_array paranccsal, amely egy sort adja a $eredmenynek a
$sor nev vltozba (amely nevbl addan az adattbla egy sorra, teht egy rekordjra utal). Addig
ratjuk ki a sorok tartalmt, ameddig minden soron
vgig nem mentnk! (Ezrt is kell a WHILE ciklust
alkalmazni.)
A soron bell a tblban lv meznvvel hivatkozhatunk az egyes adatokra ($sor[anyjaneve]) */
{
//ezek utn lezjuk az 1. PHP blokkot, mivel most HTML rsz kvetkezik!
?>
<!-- A WHILE ciklus ciklusmagjban HTML kd van,
mgpedig egy tblzat. A tblzat egy-egy oszlopba kirtajuk az adattbla mindem mezjt. A ciklusmag ltal minden rekord j sorba kerl s a lista az
sszes rekordot tartalmazni fogja. -->

130

PHP s MySQL az alapoktl

<table width="600" border="0" cellpadding="1"


cellspacing="1">
<tr>
<td width="150"><?= $sor[nev]; ?></td>
<!-- Mint mr korbban emltettk ezt a szintaktikt is
hasznlhatjuk kiratsra a print fggvny helyett.
Azrt is hasznljuk ezt, mert ezekben rvid PHP
blobkban kiratst vgznk s utna le is zrjuk a
kdblokkot, hogy visszatrjnk a HTML rszbe! -->
<td width="150"><?= $sor[anyjaneve]; ?></td>
<td width="150"><?= $sor[szhely]; ?></td>
<td width="150"><?= $sor[szdatum]; ?></td>

</tr>
</table>

<?php
}
//Ezt a PHP blokkot azrt ksztettk, hogy
lezrja a WHILE ciklust az els kapcsoszrjel prjval. Ez nagyon fontos, soha ne felejtsk el kitenni!
mysql_close($kapcsolat);
//6. Az adatbzis kapcsolatot is lezrjuk!
?>
</p>
</body>
Ezzel el is kszlt a PHP oldalunk! Ha mindent
jl gpeltnk s megnzzk a bngsznkben az
oldalt, l{thatjuk, hogy a programunk pontosan
azokat a rekordokat ratta ki a kpernyre, amelyeket mi egy kor{bbi feladat sor{n felvittnk:

PHP s MySQL sszekapcsolsa

131

CMS rendszerek

132

16. CMS rendszerek

CMS: Content Managment System (Tartalomkezel rendszer).


[ltal{ban kevs szaktud{st ignyl internetes
alkalmaz{s, mely lehetv teszi, hogy szinte b{rki
sszetett weboldalt birtokoljon. Az alkalmaz{s
jellegbl addan a weboldal rvid id alatt szsze{ll, programoz{si tud{st {ltal{ban nem, vagy
egszen keveset ignyel.
A CMS olyan internetes alkalmaz{s, amely {ltal
b{rki ssze{llthat egy weboldalt, kpeket, tartalmakat vagy ak{r navig{cit v{ltoztathat akkor is,
ha
nem
vagy
alig
rendelkezik
technikai/programoz{si ismeretekkel. A tartalom
(content) a kinzettl, design-tl (layout-tl) elklntve, webes adatb{zisban van t{rolva.
Layout = kinzet
Content = tartalom

CMS rendszerek

133

A CMS alkalmazhat tbbek kztt web{ruh{zakn{l, port{lokn{l, web-magazin szerkesztsnl illetve m{s egyb alkalmaz{sn{l.
A tartalmak szerkesztshez egy kezelfellet
(admin fellet) {ll rendelkezsre. Az adatbevitel
szveg- s feltlt mezkn (rlapok, checkbox-ok,
radiobutton-ok stb.) keresztl trtnik, amelyek
segtsgvel a CMS feltlti a megv{ltoztatott f{jlokat a webszerverre. A tartalmak azonnal l{thatk
online, az oldal frisstse ut{n.
A CMS-ket a praktikuss{guk s knnyen kezelhetsgk mellett azrt (is) rdemes megemlteni,
mert a lentebb felsorolt tartalomkezel rendszerek
mindegyike nylt forr{skd, ingyenesen letlthet s haszn{lhat, PHP-ben rdott, valamint
MySQL adatb{zist haszn{l. gy neknk, jelen ismereteinkkel sem fog klnsebb gondot okozni ezek
teleptse s alapvet konfigur{l{sa

16.1. A CMS-ek elnyei


Komoly szaktud{st nem ignyel
Adatb{zisban t{rolt tartalom
A feltlttt tartalom adatb{zisban t{roldik, gy
hordozhatv{ s tbb eszkz (bngsz, mobiltelefon, PDA, nyomtat{s) sz{m{ra is knnyen
{talakthatv{, form{zhatbb{ v{lik.

134

PHP s MySQL az alapoktl

Dinamikus tartalom
Kln modulok segtsgvel ak{r vendgknyveket, hreket, frumot, szavaz{sokat, l{togatotts{gi statisztik{kat, az egsz honlapra kiterjed keresst vagy webshop-ot integr{lhatunk
honlapunkba. Ezen fajta kiegsztk sz{ma rengeteg, bsges v{lasztkbl v{logathatunk a
CMS-eknl.
Napraksz frissts
A tartalom mdost{s{hoz nincs szksg kln
cgre, programozkra, extra kiad{sokra az
oldal frisstst saj{t erforr{sbl vgzi el!
Nem lehet beleavatkozni a weboldal kinzetbe. Erre csak akkor van lehetsg, ha kell
szakrtelemmel kicserljk, fellrjuk a weboldalt alkot kpeket, grafik{kat illetve {trjuk az
adott tm{hoz tartoz CSS stlusf{jlokat a megfelel helyen s mdon.
M{sik megold{s, hogy kls fejleszttl beszerznk, letltnk klnbz oldaltm{kat
(themes). Sokfle, rendszerezett, klnbz kategri{kba besorolt, ingyenes tm{t tal{lhatunk
a lent felsorolt CMS-ek hivatalos honlapjain, illetve a velk foglalkoz, egyb (sok esetben
magyar nyelv) weblapokon is! gy knnyedn
kereshetnk weboldalunk tartalm{hoz illeszked, sz{munkra megfelel designt, kinzetet,
amit azt{n p{r kattint{ssal azonnal telepthe-

CMS rendszerek

135

tnk is, s ami ezt kveten azonnal alkalmazhat az oldal tm{jaknt.

16.2. Magyar nyelven is elrhet


CMS rendszerek
PHP-Nuke
e107
Drupal
Joomla
GuppY

( http://phpnuke.org )
( http://e107.org )
( http://drupal.org )
( http://www.joomla.org )
(http://www.freeguppy.org )

Ezen CMS-ek nagy rsze megtal{lhat magyar


nyelven is, gy haszn{latuk mg knnyebb s knyelmesebb. [ltal{ban tal{lhatunk olyan magyar
nyelv weboldalakat is, ahol az adott tartalomkezel rendszerrel foglalkoznak s az aktu{lis frisstsekrl, hrektl, jabb bvtmnyektl s tm{ktl kezdve a teleptsi tmutatn {t a hibajavt{sokig, sok mindent megtal{lhatunk rajtuk, amik segthetnek a munk{nkban. rdemes mindegyik
rendszerhez persze a hivatalos mellett egy ilyen
honlapot is felkeresni az rdekld webfejlesztk,
webprogramozk s rdekldk sz{m{ra.
Egy plda: PHP NUKE
Egy CMS rendszer. Integr{lja mag{ban az szszes eszkzt, amelyet inform{cis honlap vagy

136

PHP s MySQL az alapoktl

port{l ltrehoz{sa (szles rtelemben vve) alkalmazunk.


Plda a felhaszn{l{s{ra:
Intranet (bels) oldalak
E-kereskedelmi rendszerek
V{llalati port{lok
Nyilv{nos gynksgek
js{gr cgek
Online cgek
Inform{cis honlapok
E-tanul{s rendszerek
Hobby weboldalak

16.3. CMS-ek teleptse


ltalnossgban
Letltjk a CMS telept csomagj{t, ami {ltal{ban tmrtett f{jlban tal{lhat. Aj{nlatos az adott
CMS hivatalos honlapj{rl letlteni, ahol a legjabb verzikat, valamint a magyar kezetes betket is tartalmaz verzikat is megtal{lhatjuk. Ezut{n:
1. A csomagban tal{lhat, teleptshez szksges
f{jlokat kicsomagoljuk s mindegyikket feltltjk honlapunk FTP szerverre.
2. Adatb{zis konfigur{l{sa (ez kt mdon trtnhet):

CMS rendszerek

137

a. Setup-on keresztl ({ltal{ban ez az


install.php-t kell futtatnunk, ennek elrsi
tj{t kell begpelnnk a bngsznk cmsor{ba).
Fontos! A sikeres teleptst kveten azonnal trljk az install.php f{jlt (erre {ltal{ban kln figyelmeztetst is kapunk a teleptskor)!
b. vagy .ini f{jlon keresztl
ekkor adatb{zis import{l{sra (DUMP) van
szksgnk
3. Admin fik kialakt{sa, admin felhaszn{lnevnk s jelszavunk megad{sa, amelyekkel ksbb belpve, minden mdost{sra jogosultak
lesznk a honlapon s annak admin felletn
(ezeket az adatokat soha ne tegyk kzz!).
4. Tartalom, forma, blokkok kialakt{sa. A honlap
tm{j{nak, kinzetnek be{llt{sa a meglv
sm{kbl (tov{bbi tm{kat tlthetnk le az
adott CMS honlapj{rl illetve az ezekkel foglalkoz weboldalakrl), plugin-ek, kiegszt
funkcik bekapcsol{sa/teleptse, szemlyre
szab{s, tartalommal val feltlts
A telepts sor{n a CMS-ek egyrtelmen megadj{k, hogy melyik mezbe mit kell kitltennk,
gy a kezd PHP programozk is knnyszerrel

138

PHP s MySQL az alapoktl

telepthetik ket p{r kattint{ssal, minim{lis programoz{si ismeretekkel is.


A telepts ut{n egy grafikus admin felleten
keresztl knnyen szerkeszthet, l{tv{nyos klalakkal s hasznos kiegsztkkel rendelkez honlapot kapunk. Mindenkpp rdemes ket kiprb{lni!

Az {br{n az e107 tartalomkezel rendszer grafikus admin felletnek egy rszlete l{that. J
plda arra, hogy a CMS-eknl milyen {tl{that
kezelfelleten tudjuk be{lltani teleptett weblapunk kls-bels tulajdons{gait, illetve milyen
blokkok kialakt{s{ra van lehetsgnk.

139

PHP s MySQL az alapoktl

17. Megvalstsok PHP-vel


17.1. Kpgalria PHP-ben 1.0
Most a megismert PHP nyelv segtsgvel ksztnk egy kpgalri{t. A kpeinkbl, amiket be
akarunk illeszteni a galri{nkba, elszr is miniatrket (thumbnail) ksztnk, amiket (egy t{bl{zatba rendezve) beszrunk egy weboldalba. Ez lesz
a pld{nkban a galeria.php.
Helyezzk el a nagymret kpeket a nagy, a
thumbnail kpeket a mini mapp{ba. Az oldal,
amelyikre a galeria.php-rl ugrunk (teh{t, amelyiken megjelennek a nagy kpek, lesz a kep.php.
Az al{bbi mdon szrjuk be a PHP programunkba a megjelentend kpeket:

140

PHP s MySQL az alapoktl

<img src=nagy/<?= $foto ?>"

galeria.php?foto=1
sszesen 2 oldalra van szksgnk, mivel a
kpeket egy v{ltozban t{roljuk. gy az egyik oldalon a miniatrket t{roljuk (egyrtelmen elnevezve, hogy ksbb knnyebben tudjunk r{juk
hivatkozni), amiknek a linkjbe a
galeria.php?foto=1
scriptet helyezzk be, az egyes sz{m helyett
persze mindig az eggyel nvekv sz{mot kell rnunk. Termszetesen az oldal s a v{ltoz nem
kell, hogy galeria illetve kep legyen, de a plda
sor{n az egyrtelmsg kedvrt ez volt a legegyszerbb elnevezs.
A Properties panel
Dreamweaver-en bell:

gy

fog

kinzni

R{kattintunk az els kpre a galeria.php oldalon, majd az Src (source, forrs) mezben be{lltjuk, hogy melyik thumbnail kpet szrja be s

Megvalstsok PHP-vel

141

honnan. Most a legelst illesszk be, a m{r kor{bban emltett, mini nev mapp{nkbl. A Link mezben pedig megadjuk, hogy a kep.php-ra ugorjunk s a krdjel ut{n {tadunk egy paramtert
(aminek a neve a pld{ban foto), ami az els kp
nevbl addan 1 lesz. A kep.php forr{skdja
lentebb l{that.
Tulajdonkppen annyit csin{ltunk, hogy a kp
nevt paramterben elt{rolva {tadtuk az eredmnyoldalnak, amely img src tag-jbe tettnk egy
rvid kirat{st tartalmaz PHP blokkot, gy az oldal mindig azt a kpet szrja be, amelynek nevt
{tadtuk a paramterben.
Ezzel egy dinamikus kpgalri{t ksztettnk,
melyhez elg volt 2 darab PHP weboldal. Ha csak
HTML-t akartunk volna haszn{lni, akkor minden
egyes nagy kpet kln-kln weboldalba kellett
volna beillesztennk, gy pl.: 50 nagy kp esetn 50
HTML oldal + 1, a kis kpeket tartalmaz weboldalra lett volna szksgnk! rezhet a klnbsg,
hogy egy dinamikus PHP oldal elksztse menynyire megnvelheti a weboldalszerkeszts hatkonys{g{t, s persze ilyen s ehhez hasonl megold{sokkal rengeteg idt takarthatunk meg!
A mi pld{nkban az galeria.php-rl ugrottunk a
kep.php-ra, melynek a forr{skdja gy nz ki:

142

PHP s MySQL az alapoktl

<html>
<head>
<title>PHP kpgalria</title>
</head>
<body>
<?php
$foto=$_GET['foto'].'.jpg';
//a
kp
meghvsa a galeria.php-bl GET-tel, teht ebben
a vltozban troljuk a kp nevt. Ezek utn mg
hozz kell fznnk az tvett paramterhez a kpfjl
kiterjesztst (ami esetnkben, minden kpnl JPG
lesz) s ezltal letroltuk a $foto vltozban a beillesztshez szksges sszes adatot!
?>
<p align="center">PHP kpgalria</p>
<table width="100" border="3" align="center">
<tr>
<td><img src="nagy/<?= $foto ?>"
border="0"></td> //aktulis kp beszrsa
</tr>
</table>
<p align="center"><strong><a
href="galeria.php">Vissza</a></strong></p>
//beszrunk egy visszalp linket, amely a
galeria.php-re mutat, hogy j kpet nyithassunk
meg!
</body>
</html>

Megvalstsok PHP-vel

143

17.2. Kpgalria PHP-ben 2.0


Az elz pld{ban elksztettk a kpgalri{nkat. Mint m{r emltettk, ez gy mkdik, hogy a
galeria.php-n lv kiskpekre kattintva {tugrunk a
kep.php-ra, ahol megtekinthetjk a kpet nagyobb
mretben, a fent lertak alapj{n. Ezek ut{n visszalphetnk a kiskpek oldal{ra. [m knyelmesebb
lenne, ha nem kellene mindig visszalpkednnk a
thumbnail kpeinkhez, hanem mondjuk hivatkoz{sok segtsgvel a kep.php-n is tudn{nk elre s
vissza is lapozni, a nagy kpek kztt. Most ezt a
megold{st mutatjuk be, kiegsztjk teh{t az eddig
elkszlt kpgalri{nk forr{skdj{t!
[Ide jnnek a html, head, title, body tag-ek]
<?php
$foto=$_GET['foto'].'.jpg';
?>
<p align="center">PHP kpgalria</p>
<table width="100" border="3" align="center">
<tr>
<td><img src="nagy/<?= $foto ?>
border="0"></td>
</tr>
</table><!-- Eddig a pontig a forrskd ugyanaz,
csak most kezdnk egy j PHP blokkot! -->
<?php
//Deklarlunk kt vltozt, melyeket majd az elz illetve kvetkez linkekhez hasznlunk majd
fel. Ezek feladata az, hogy az tvett foto paramter

144

PHP s MySQL az alapoktl

rtkbl kivonjanak illetve hozzadjanak egyet


(gy mutatva a PHP programnak, hogy melyik az a
kp, amelyik az aktulis megjelentett eltt, illetve
utn van!). Nagyon fontos, hogy csak akkor tudjuk
lapozhatv tenni a galrinkat ezzel a mdszerrel,
ha (egsz) szmrtkeket adunk a kpeink nevnek (string-es nvbl nehz is lenne kivonni
egyet).
$elozo = $_GET[foto] -1;
$kovetkezo = $_GET[foto] +1;
?>
<p align="center">
//Tbb kdblokkbl fog llni a linkek elhelyezs,
mert folyamatosan oda-vissza kell ugrlnunk
PHP-bl HTML-be!
<?php
/*Hogy a lapozs ne zavarodjon meg az els vagy
utols kp elrsnl, egy IF elgazssal biztostanunk kell, hogy az els kpnl ne jelenjen meg az
Elz link, az utols kpbl meg rtelemszeren
a Kvetkez link: */
if ($_GET[foto] !=1)
{
//Ha a paramter nem egyenl egygyel, akkor beilleszthet az Elz link! A hivatkozsba is PHP-t csempsznk, mgpedig paramtert adunk t: a linkre kattintva az aktulis kpnl
eggyel elrbb lv kpet jelenti meg a kep.php!

Megvalstsok PHP-vel

145

?>
<a href="kep.php?foto=<?= $elozo;
?>">Elz</a>
<?php
}
//A HTML-bl visszalpve egy jabb
kdblokkban lezrjuk az IF utastst a nyit kapcsos
zrjel prjval!
?>
<strong><a
href="index.php">Vissza</a></strong>
<?php //Ismt szksgnk lesz egy IF elgazsra:
ha az tvett foto paramter nem egyenl az utols
kp szmval (a pldban 22 kpnk van a galriban), akkor beilleszti a Kvetkez linket is! Fontos,
hogy mindig az utols kp szmt vizsgljuk ebben az
elgazsban! A hivatkozsba ismt PHP-t csempsznk, paramtert adunk t: a linkre kattintva az
aktulis kpnl eggyel htrbb lv kpet jelenti meg
a kep.php!
if ($_GET[foto] !=22)
{
?>
<a href=kep.php?foto=<?= $kovetkezo;
?>>Kvetkez</a>
<?php
//Az els IF-hez hasonlan itt is
vissza kell lpnnk PHP-be a hivatkozs beszrsa
utn, hogy lezrjuk az elgazs igaz gt.
}
?>
</p></body></html>

146

PHP s MySQL az alapoktl

Ezzel a kis kiegsztssel lapozhatv{ tettk


PHP kpgalri{nkat. HTML ismereteinket felhaszn{lva dekoratvv{ tehetjk a galri{t klnbz
szn- s betform{z{sok haszn{lat{val! Fontos
azonban, hogy ne felejtsk el az utols IF el{gaz{sban lv felttelvizsg{latn{l mindig az aktu{lis kpmennyisg utols elemt vizsg{lni! A pld{ban 22 kpet helyeztnk a galri{ba, teh{t, ha a
felhaszn{l elri a 22. kpet, nem fog megjelenni
neki a Kvetkez felirat link, hanem csak a
Vissza s Elz linkek. Ha jabb kpeket szrunk, ezt ne felejtsk el {trni! Ha 50 kpnk van,
akkor 50-et runk a felttelvizsg{latba, ha pld{ul
100, akkor 100-at s gy tov{bb. A lnyeg, hogy ezt
szben tartsuk, klnben a lapozhats{g nem fog
megfelelen mkdni! (Termszetesen a kpek
sz{m{t is t{rolhatjuk v{ltozban, vagy vehetjk
adatb{zisbl, gy tetszleges kpsz{mmal is dolgozhatunk.)

17.3. Adatbzisok kimentse


DUMP-ols
A tapasztalt PHP programozk (is) tudj{k,
hogy nagyon fontos biztons{gi mentseket kszteni az adatb{zisokrl, klnskppen, ha azok
nagyon sok t{bl{t tartalmaznak. Az adatb{zisok
elksztse sok idbe telhet s mg fontosabb, hogy
a bennk t{rolt adatok elvesztse nagy fejtrst

Megvalstsok PHP-vel

147

okozhat. Ezrt is aj{nlott legal{bb hetente egyszer


biztons{gi m{solatot kszteni rla, arra az esetre,
ha a rendszerrel valami trtnik, esetleg mi ejtnk
valami hib{t (pld{ul olyan rekordot vagy t{bl{t
trlnk, ami nem ppen szerencss). Most megnzzk lpsenknt, hogyan is tudunk manu{lisan
adatb{zist kimenteni dump-olni s ezeket
hogyan is illeszthetjk be jbl!
1., Lpjnk be a phpMyAdmin-ba!
2., V{laszuk azt az adatb{zist a bal oldali list{bl, amelyet ki szeretnnk menteni (a plda sor{n
most a peldafeladat adatb{zissal fogunk dolgozni,
amit kor{bban ksztettnk.
3., Ha nem az egsz adatb{zis szeretnnk kimenteni, hanem annak csak egy konkrt t{bl{j{t,
akkor kattintsunk a t{bla nevre bal oldalt. Mi
most az egsz adatb{zist fogjuk menteni, gy v{lasszuk ki a nevt bal oldalt (peldafeladat), majd a
kperny jobb oldal{n, fenn kattintsunk az Export
flre:

Ezek ut{n a kvetkez ablak jelenik meg jobb


oldalt:

148

PHP s MySQL az alapoktl

Neknk, mint kezdknek csak a bal oldali lista,


fent, az Export felirat alatt s az Export tpus lenyl lista most a lnyeges, a tbbi nem fontos jelenleg! A fenti list{bl kiv{laszthatjuk, hogy az adatb{zis mely t{bl{kkal legyen kidumplova. Neknk
most csak egy adatt{bl{nk van, a nyilvantartas
nev. Ezt ki is jelltk. A lista alatt tal{lhat radio
button-ok segtsgvel m{s form{tumokban is
elmenthetjk az adatb{zisunkat (a Microsoft Excel
2000-et kijellve .xls kiterjeszts Excel munkafzetet kszt a rekordjainkkal, a Microsoft Word
2000-re kattintva egy .doc kiterjeszts Word f{jlt,
melyben t{bl{zatba rendezve jelenti meg az adatt{bl{inkat - azok szerkezett s rekordjait) stb.

Megvalstsok PHP-vel

149

Mi maradjunk most az SQL radio button-n{l! A


jobb oldalt, lent l{that az export tpus{nak megad{sa egy lenyl lista form{j{ban. Itt 3 fle kimentsrl gondoskodhatunk:
INSERT: ezzel gy menti ki az adatb{zist a
phpMyAdmin, hogy INESRT INTO-s parancsokat kszt a meglv t{bl{ink alapj{n, gy a
dump f{jl tartalm{t beillesztve egy teljesen res
adatb{zisba, visszanyerhetjk azt.
UPDATE: mint a neve is mutatja, frissti a meglv adatb{zist s annak adatt{bl{it, rekordjait.
Ezt akkor rdemes haszn{lnunk, ha nem veszett
el az adatb{zisunk ink{bb csak a rgi rekordokat szeretnnk vissza{lltani.
REPLACE: teljes egszben kicserli az adatt{bl{t, s annak rekordjait a dump f{jlban lv rtkekre.
4., Mi most haszn{ljuk az INSERT tpust, gy
egy res adatb{zisba beilleszthetjk a kor{bban
elksztett nyilvantartas t{bl{nkat! Kattintsunk a
kperny jobb oldal{nak alj{n lv, Vgrehajt
gombra!
5., A kperny jobb oldal{n megjelenik egy
szvegdoboz, amely SQL parancsok form{j{ban
fogja tartalmazni a biztons{gi mentst. Ezt a szveget jelljk ki teljes egszben (b{r csak a legels
SQL parancstl szksges, a tbbi mellkes infor-

150

PHP s MySQL az alapoktl

m{cit (szerver verzi, PHP verzi, kiments idpontja) tartalmaz. Egrrel jelljk ki a szveget
(vagy kattintsunk valahova a szvegbe s Ctrl+A
billentykombin{cit haszn{lva) s m{soljuk be
ezt egy szveges f{jlba (mondjuk Jegyzettmbbe s
mentsk el dump.txt nven). Clszer a nevbe is
berni a kiments d{tum{t, hogy tiszt{ban legynk
mikori is a dump f{jl.
Mivel az adatb{zisunkat valahogy vissza is kell
helyeznnk a dump f{jl segtsgvel, ezt ktflekppen is vgezhetjk:
IMPORT flre kattintva jobb oldalt fenn. Ekkor
meg kell adnunk a szveges f{jl helyt, amibe a
dump-ol{st elmentettk, emellett csak annyi a
dolgunk, hogy a F{jl karakterkszlete lenyl
list{n a latin2-t v{lasszuk (ha a kdol{st nem jl
{lltjuk be, az kezetes betkkel
problm{k lesznek, nem fognak
megjelenni!), majd a Vgrehajt
gombot megnyomjuk.

SQL parancs futtat{s{val: Ebben az esetben a


fenti flek kzl v{lasszuk az SQL-t, ahol, mint

Megvalstsok PHP-vel

151

tudjuk, SQL lekrdezseket tudunk futtatni,


ak{rcsak konzolos felleten. Ekkor csak annyit
kell tennnk, hogy a megjelen beviteli mezbe
beillesztjk a szveges dump f{jlunk tartalm{t,
majd megnyomjuk a Vgrehajt gombot. Ezzel el
is kszlt az biztons{gi ments beillesztse.
A kt verzi kzl teljesen mindegy melyiket
haszn{ljuk, az eredmny ugyan az lesz! Javasolt az
utbbit haszn{lni, de akinek az IMPORT fl a
szimpatikusabb nyugodtan haszn{lja azt (csak ne
felejtsk el a karakterkdol{st)! Ezzel meg is
tanultunk dump-olni s a biztons{gi mentst viszszailleszteni. Haszn{ljuk ezt a gyakorlatban is,
nehogy a munk{nk k{rba vesszen!

17.4. Linkajnl ksztse


Ebben a pld{ban egy linkaj{nlt ksztnk,
melyet dinamikusan tudunk majd bvteni egy
egyszer admin felleten keresztl. Ehhez szksgnk lesz egy j adatt{bl{ra (amely t{rolni fogja a
linkek nevt, URL cmt s ler{s{t), egy linkek.php nev oldalra (ezen fogjuk kilist{zni az
adatt{bla rekordjait) valamint egy admin mapp{ra
(melyben majd a linkaj{nl szerkesztshez, az
admin panel megfelel mkdshez szksges
php f{jlokat t{roljuk). Ezek elksztst most nzzk lpsrl-lpsre:

152

PHP s MySQL az alapoktl

17.4.1. Linkek adattbla ltrehozsa


Hozzunk ltre egy j t{bl{t a m{r meglv, pldafeladat adatb{zisunkba! A neve legyen linkek.
Az al{bbi szerkezetet alapul vgre ksztsk el a
t{bl{t:

Fontos! Az id meznk lesz a kulcsmeznk.


nl a meznl felttlenl {lltsuk be
auto_increment rtket, gy automatikusan
majd a mez rtke eggyel, mindenegyes j
beszr{s{n{l!

Enaz
n
sor

Tltsk fel az elkszlt t{bl{t nh{ny rekorddal:

Megvalstsok PHP-vel

153

Nv

URL cm

Ler{s

Google

www.google.com

A PHP
nyelv

www.php.net

MySQL
website

www.mysql.com

A vil{g legnpszerbb keres


oldala!
A
npszer
PHP programoz{si nyelv hivatalos weboldala,
sok hasznos inform{cival.
Az egyik legelterjedtebb adatb{zis-kezel
rendszer
honlapja, sok infval s refernci{kkal.

A http:// protokolljelzst sz{ndkosan nem tettk az URL cm el, mert gy oldjuk meg a
kilist{z{st, hogy a protokollt ne kelljen mindig a
cm el gpelni, ezzel helyet s idt is sprolhatunk! Ha elkszlt az adatt{bla s feltltttk a
rekordokat, jhet a PHP s MySQL sszekapcsol{sa!

154

PHP s MySQL az alapoktl

17.4.2. Linkek.php elksztse


Ezzel a rsszel sem kell klnsebben sokat bajldnunk, az eddigi ismereteink alapj{n knnyen
elkszthetjk a rekordok kilist{z{s{t egy t{bl{zatba, a weblapon bell. Erre a clra ksztsnk egy 3
soros, 1 oszlopos t{bl{t a ltrehozott linkek.php
oldalra, amelybe az egyes mezk adatai kerlnek!
Nzzk a linkek.php forr{skdj{t (<body> tagtl </body> tag-ig):
<body>
<p><h1>Linkajnl</h1></p>
<p>
<?php //Itt kezddik az 1. php blokk. Csatlakozunk a localhost-on lv adatbzishoz, mely
csatlakozst eltrol a $kapcsolat connection string.
$kapcsolat = mysql_connect("localhost",
"root", "kozi1987") or die (print
"HIBA!".mysql_error());
mysql_select_db("peldafeladat", $kapcsolat);
//Kivlasztjuk a $kapcsolatbl a 'peldafeladat'
adatbzist.
mysql_query("SET NAMES latin2");
$parancs = "SELECT * FROM linkek ORDER
BY nev";
//Kilistzzuk az sszes rekordot a
'linkek' tblbl a 'nev' mez szerint nvekv sorrendbe rendezve.
$eredmeny = mysql_query($parancs, $kapcsolat);

Megvalstsok PHP-vel

155

//Lefuttatjuk a krst($parancs) a megnyitott kapcsolaton($kapcsolat).


while ($sor = mysql_fetch_array($eredmeny))

//A WHILE ciklussal feldolgozzuk az eredmnyt.


Addig listz ki, ameddig van rekord a tblban.
{
?>
<!-- Itt jra HTML kezddik, egy tblzatot szrunk
be, melynek soraiba kiratjuk az aktulis rekord
'nev', 'cim' illetve 'leiras' mezit -->
<table width="600">
<tr>
<td><strong>&nbsp;<?= $sor[nev];
?></strong></td>
<!-- Az els cellba jn a link neve -->
</tr>
<tr>
<td><a href="http://<?= $sor[cim];
?>" target="_blank"><?= $sor[cim];
?></a></td>
<!-- A msodik cellba jn maga a link. A
HTML kd mr eleve tartalmazza a http:// protokollt, gy ezrt nem kellett bernunk az adatbzisba
minden linknl! -->
</tr>
<tr>
<td><p align="justify"><strong><?=
$sor[leiras]; ?></strong></p></td>
<!-- A harmadik cellba jn a link lersa ->

156

PHP s MySQL az alapoktl

</tr>
</table>
<br />
<p>
<?php //Miutn a kirats rsz befejeztk, nyitunk
mg egy PHP blokkot s lezrjuk a WHILE ciklust!
Ezzel ksz is az oldal!
}
?>
</p>
</p>
</body>

A kpernykpen l{thatjuk, hogy bngsznkben megnyitva, az oldal kilist{zza az adatb{zisban


lv rekordokat. L{thatjuk, hogy a kilist{z{s nem
volt nehezebb, mint mondjuk a nyilvantartas.php
esetben. A folyamat lnyegben ugyanaz, ezrt
megfelel gyakorl{s ut{n m{r minden egyes pont-

Megvalstsok PHP-vel

157

j{t
rutinszeren
fogjuk gpelni. [m a
nyilvantartas.php-vel ellenttben, ez az oldal rendelkezni fog egy admin panellel, mely elksztse
ugyan tbb idt vesz ignybe, de ez{ltal, az admin
felletrl dinamikusan szerkeszthetjk majd a
linkjeinket (jabb rekordokat szrhatunk be, illetve
trlhetnk a linkek adatt{bl{bl a megismert
DML parancsok s a PHP MySQL sszefzsnek segtsgvel. A kvetkez pontban az ehhez
szksges PHP oldalakat ksztjk el.

17.5. Admin fellet elksztse


Fontos, hogy megrtsk az admin fellet elksztsnek lpseit, mert ezek ismeretben magunk
is kszthetnk jabb admin felletet, vagy a mostanit is bvthetjk a ksbbiekben jabb funkcikkal! Legelszr is ksztsnk egy mapp{t abba a
knyvt{rba, ahol a linkek.php oldal tal{lhat s
adjuk neki az admin nevet. Ebbe a mapp{ba fogjuk
elkszteni az admin.php-t s a hozz{ taroz PHP
oldalakat, amelyek segtsgvel szerkeszthetjk
majd a linkeket, egyetlen egy HTML kd begpelse nlkl.
L{ssunk is neki!

158

PHP s MySQL az alapoktl

17.5.1. Admin.php elksztse


A ltrehozott admin mapp{ba ksztsnk egy j
PHP oldalt, ez lesz az admin.php. Ez tulajdonkppen arra szolg{l, hogy kilist{zzon neknk egy mezt az adatt{bl{bl (mely alapj{n azonostani tudjuk a megfelel rekordot) s lehetsget ad az
adott rekord trlsre illetve j rekord felvtelre
persze
anlkl,
hogy
belpnnk
a
phpMyAdminba. A foldal kdja a kvetkezkppen fog kinzni:
<body>
<table width="650" align="center" border="3">
<tr>
<td><h2>Linkek - Admin panel</h2></td>
</tr>
</table>
<table width="650" border="3" align="center">
<tr>
<td width="200"><strong>Nv</strong></td>
<td width="350"><strong>URL
cm</strong></td>
<td width="100"><strong>Trls (vgleges)</strong></td>
</tr>
<?php
//A korbbi listzsokhoz hasonlan egy tblzatba
helyezzk el a kiratand mezket. A PHP blokkban
csatlakozunk a 'peldafeladat' adatbzishoz s

Megvalstsok PHP-vel

159

ugyanazt a parancsot futtatjuk le, mint a linkek.php esetben.


$kapcsolat = mysql_connect("localhost",
"root", "kozi1987");
mysql_select_db("peldafeladat", $kapcsolat);
$parancs = "SELECT * FROM linkek ORDER BY
nev";
$eredmeny = mysql_query($parancs);
while ($sor = mysql_fetch_array($eredmeny))
{
?>
<!-- Itt visszaugrunk a HTML rszbe, hogy kirassuk a tblzat megfelel oszlopba a megfelel
mezhz tartoz rtkeket! Most csak a link nevt,
valamint URL-jt ratjuk ki, ez bven elg, hogy
beazonostsuk a rekordot, amit ppen trlni akarunk. -->
<tr>
<td bordercolor="#FFFFFF"><?= $sor[nev];
?></td>

<td bordercolor="#FFFFFF"><?= $sor[cim];


?></td>
<td bordercolor="#FFFFFF"><a
href="torol.php?id=<?= $sor[id]; ?>">Trls</a></td>
<!-- A 3. oszlopban szerepl PHP kd lehet els
rnzsre furcsa. Ez egy link, amelyre kattintva a
torol.php-ra ugrik a program. Az rdekessge,
hogy most hasznljuk a tblzat id (azonost)
mezejt, melyet paramtertadssal csatolunk a
linkhez (amit majd a torol.php fog fogadni). gy

160

PHP s MySQL az alapoktl

kell megoldanunk, hogy a trls csak arra az egy


adott rekordra vonatkozzon, amelyiknek a sorban
a 'Trls' linkre kattintottunk! Ennek a paramtertadsnak a fontossga a torol.php forrskdjban
jl lthat lesz! -->
</tr>
<tr>
<td colspan="5" bordercolor="#FFFFFF"><hr
width="100%" color="#000000"></td>
</tr>
<?php //Miutn kilistztuk az sszes rekordot
lezrjuk a ciklust!
}
?>
</table>
<table width="650" align="center" border="3">
<tr>
<!-- Beszrunk egy linket az admin oldal aljra,
amely a linkfelvitel.php-ra mutat, ahol j rekordot
tudunk majd az adattblnkba beilleszteni. -->
<td>
<p align="center"><strong><a
href="linkfelvitel.php">j link felvitele</a>
</strong></p>
</td>
</tr>
</table>
</body>

Megvalstsok PHP-vel

161

Nagy valsznsggel ennek az oldalnak az elksztse sem jelentett komolyabb elksztst azok
sz{m{ra, akik megrtettk a tananyag ide vonatkoz fejezeteit. Az jdons{g mint m{r azt a forr{skdban is lertuk az ID mez paramter {tad{ssal
trtn tov{bbkldse a torol.php-nek. Persze ez
sem j teljesen, mivel paramter {tad{st sz{mos
esetben haszn{ltunk, mind az rlapokn{l, mind a
kpgalri{n{l, ennek az esetnek a jelentssge,
hogy ez most klnsen azrt fontos, mert a Trls
linkre kattintva csak az a rekord trldik, amelynek a sor{ban a hivatkoz{s volt.
Ha mindent a fenti forr{skd szerint csin{ltunk,
akkor a kvetkez felletet l{thatjuk a bngsznkben, ha megnyitjuk az admin.php-t:

Termszetesen, ha mostani {llapot{ban az oldalon a Trlsre kattintunk, nem fog csin{lni semmit,
mivel a torol.php-t nem ksztettk el. Ugyangy j
linket sem tudunk jelenleg beszrni az adatb{zisba, a linkfelvitel.php s felvisz.php nlkl!

162

PHP s MySQL az alapoktl

17.5.2. Torol.php elksztse


Ltrehozunk egy j, .php kiterjeszts f{jlt az
admin mapp{nkba, a neve legyen: torol. Ez az
oldal egy rvid PHP blokkbl fog {llni mindsszesen. Ki kell hangslyozni, hogy ez az oldal semmilyen HTML tag-et nem fog tartalmazni (s nem is
fogjuk l{tni a kpernyn), kiz{rlag PHP-t (gy, ha
Dreamweaver-rel dolgozunk, nyugodtan trljnk
ki mindent kdnzetben)! A forr{skd, teh{t
<?php vel kezddik s ?> vel z{rul. Figyeljnk
az res sorokra is, mert ha a kd elejn vletlenl
hagyunk egyet, az is hib{t eredmnyezhet a mkdsben. Nzzk, hogyan is nz ki a csak PHP
kdot tartalmaz torol.php:
<?php //Az oldal forrskdja a PHP blokk nyitsval kezddik, s annak bezrsval fejezdik be!!!
$kapcsolat = mysql_connect("localhost",
"root", "kozi1987");
mysql_select_db("peldafeladat", $kapcsolat);
//Eddig a pontig mr ismerjk a lpseket: kapcsolds, majd az adatbzis kivlasztsa a kapcsolatbl.
$parancs = "DELETE FROM linkek WHERE id
= $_GET[id]";
/* Kiadjuk a parancsot: a trls DML parancsot
adjuk ki. A trls lefordtva: Trld a 'linkek' tblbl azt a rekordot, amelynek az azonostja:
$_GET[id]. Vagyis a WHERE zradk utn megad-

Megvalstsok PHP-vel

163

juk, hogy az elz oldal 'Trl' linkkel tadott id


paramtert vegye t, s csak az tvett
azonostj rekordot trlje az adattblbl!
WHERE zradk nlkl az sszes rekordunkat trln az oldal!!! */
mysql_query($parancs);
//Lefuttatjuk a
parancsot, itt nem kell WHILE ciklus.
mysql_close($kapcsolat);
//Lezrjuk
a
kapcsolatot.
header ("Location: admin.php"); //a header
("Location: "); fggvnnyel tirnytjuk az oldalt
vissza az admin.php-re, teht, ha a program trli a
kivlasztott rekordot, visszaugrik a foldalra.
?>
Mint l{thatjuk, ez a PHP oldal sem okoz m{r
klnsebb fejtrst, mivel a szksges parancsokat m{r megismertk kor{bban. Amit ne felejtsnk el a ksbbiekben sem az ilyen oldalakn{l:
Ne tegynk ilyen feldolgoz oldalakba HTML
tag-et!
Ne hagyjunk res sorokat (fleg ne az elejn)!
Ne haszn{ljuk a DELETE parancsot WHERE
z{radk nlkl (csak indokolt esetben)!
Figyeljnk oda a header fggvnyre, a z{rjelben megadott Location-t mindig nagy L betvel
rjuk, ne kicsivel, mert klnben nem fog mkdni!

164

PHP s MySQL az alapoktl

Amennyiben ezeket a figyelmeztetseket betartjuk nem valszn, hogy oldalunk olyan hib{t jelez
vissza, amit nem ismernk s nem tudjuk mi
okozhatja. Az admin felletnk ezzel m{r flksz
{llapotban van, mg szksgnk van a linkfelvitel.php-ra s annak feldolgoz oldal{ra (a felvisz.php-re), hogy j rekordokat is kpesek legynk beszrni.
17.5.3. Linkfelvitel.php elksztse
Ebben a pontban elksztnk egy beviteli rlapot, melyet kitltve s a feldolgoz oldalnak
elkldve a program beszr egy j rekordot, anlkl, hogy belptnk volna a phpMyAdmin-ba. A
linkfelvitel.php-t szintn admin mapp{ba hozzuk
ltre. A kszts sor{n az rlapok fejezetnl tanultakat fogjuk hasznostani. Vegyk a kszts lpseit pontrl-pontra:
1., Beszrunk az res weblapra egy Form-ot a
Dreamweaver Form eszkzt{r{bl. Elvileg a kvetkezkppen fog kinzni a form tag-je kdnzetben:
<form id="form1" name="form1"
method="post" action="felvisz.php">
Neknk ebbl a method s az action a fontosak.
Post metdussal adjuk {t a feldolgoz oldalnak az
adatokat (teh{t titkostva). Az action paramterben

Megvalstsok PHP-vel

165

megadjuk azt az oldalt, amelyre az rlap ugrik a


Felvitel gombra val kattint{ssal. Ez lesz a felvisz.php, amelynek a szerkezet a torol.php-hoz
lesz hasonl.
2., A form-on bell beszrunk egy t{bl{zatot,
amelybe elhelyezzk az rlap elemeket (persze ez
nem ktelez, de gy eszttikusabb s knnyebben
form{zhat lesz az rlapunk. Ngy rlap elemet
fogunk haszn{lni, mgpedig h{rom Text Field-et
s egy Button-t. Nzzk is ezeket egyenknt!
3., Az els Text Field, amit beszrunk, a link
nevnek megad{sra szolg{l. A szvegmez neve
nev lesz. me a be{llt{sa Dreamweaver-ben:

4., A m{sodik beviteli mez ahol az URL cmet adjuk meg szintn Text Field lesz. Ugyanazokat az rtkeket {lltottuk be, mint a nv esetben, csak itt a mez neve cim lesz.
5., A harmadik mez rlap elem is Text Field,
de itt m{r nem Single line-t fogunk haszn{lni, hanem Multi line-t, azaz tbbsoros beviteli mez.
Mivel az adatb{zisunkban a leiras mez tpusa
TEXT volt, ezrt biztostani kell az rlapon a meg-

166

PHP s MySQL az alapoktl

felel helyet a hosszabb ler szvegek begpelshez is:

L{thatjuk, hogy a leiras nev beviteli mez karakter szlessgt 40-re, magass{g{t 10-re {lltottuk, ez{ltal 10 sor magas lett a Text Field. A sortrs mdj{t (Wrap) hagyjuk Default-on (az alapbe{llt{son).
6., Most m{r csak egy rlap elem hi{nyzik: a
Button. Helyezzk az oldal alj{ra s adjuk meg a
Value rtknek, hogy Felvitel. Ez a szveg fog
ez{ltal megjelenni a gombon, az Action be{llt{s
pedig marad az alapbl be{lltott Submit form
(vagyis feldolgoz forma).
Ezek elhelyezse s be{llt{sa ut{n tulajdonkppen m{r el is kszlt az rlapunk, melyet kitltve j rekordot szrhatunk be a peldafeladat
adatb{zisunkba, a linkek t{bl{ba. Persze mg nem
fog mkdni, mivel mg egyetlen oldal elksztse
h{tra van, ez az oldal pedig a felvisz.php nev,
torol.php-hez hasonl szerkezet feldolgoz oldal.
Ha a fenti lpsek szerint ksztjk el a beviteli
rlapunkat, valami hasonlt kell l{tnunk a bngsznkben a linkfelvitel.php megnyit{sa ut{n:

Megvalstsok PHP-vel

167

Figyelem! Fontos megemlteni, hogy az URL


cm nev mez kitltsnl ne feledjk, hogy csak
a www-vel kezdd cmet kell megadnunk, a
http:// eljel nem kell. Ha mgis kitesszk a linknk hib{s lesz a linkek.php oldalon (ahol m{r a
HTML kdba eleve elhelyeztk a protokoll nevt,
hogy ne kelljen minden egyes rekordn{l jra elt{rolni).
Ha vletlenl mgis gy tltjk fel, akkor hib{s
URL-t kapunk: pl.: http://http://www.google.com).
Erre figyeljnk oda a feltltskor!

168

PHP s MySQL az alapoktl

17.5.4. Felvisz.php elksztse


Az admin felletnk elksztsnek utols lpshez rkeztnk. M{r csak a linkfelvitel.php
feldolgoz oldal{t kell elksztennk, ami a torol.php-hez hasonlan csak PHP kdblokkbl fog
{llni. Itt szintn egy DML-es SQL parancsot fogunk
erre a clre haszn{lni, mgpedig az INSERT INTOt s termszetesen az rlaprl {tvett paramtereket
fogjuk az adatt{bl{nkba beszrni. L{ssuk:
<?php
$kapcsolat = mysql_connect("localhost",
"root", "kozi1987");
mysql_select_db("peldafeladat",
$kapcsolat);
//Csatlakozs, adatbzis kivlasztsa.
$parancs = "INSERT INTO linkek (nev, cim,
leiras) VALUES ('$_POST[nev]',
'$_POST[cim]', '$_POST[leiras]')";
/* A $parancs vltozban megadjuk az adattblba
illeszts SQL parancst. A parancs htkznapi
nyelvre lefordtva: Illeszd be a 'linkek' tblba a
(nev, cim s leiras mezkbe) a kvetkez rtkeket
(tvett nev, tvett cim, tvett leiras). */
mysql_query($parancs);
//Lefuttatjuk a parancsot.
mysql_close($kapcsolat);
//Lezrjuk a kapcsolatot.

Megvalstsok PHP-vel

169

header ("Location: admin.php"); //tirnytjuk


az oldalt az admin.php-re, ahol mr szerepelni fog
az j rekord a listban!
?>
Most m{r teljes egszben elkszlt az admin
felletnk. Imm{r dinamikusan bvthetjk a linkaj{nlnkat, anlkl, hogy HTML-t szerkesztennk,
vagy a phpMyAdmin-t haszn{ln{nk. Termszetesen a plda kiegszthet mdost{ssal, az admin
fellet jelszval val vdelmvel, stb.
Remljk a knyvben szerepl pld{k rthetnek s hasznosak bizonyultak a PHP nyelv ir{nt
rdekldk sz{m{ra s ezt a tud{st haszn{lni is
fogj{k a jvben!
J webprogramoz{st mindenkinek!

A BBS-INFO KIAD AJNLATA


35 NAP Liptk Bla 1956-os naplja (224 oldal, 1970 Ft.)
Adobe Photoshop zsebknyv (192 o. 870 ft.)
Az internet s lehetsgei (240 oldal, 1970 Ft.)
Csodlatos ticlok (160 sznes oldal, kemnytbls, B6, 1970 Ft.)
GTK+ programozs Free Pascalban (244 oldal2490 Ft.)
Htkznapi marketing (4 fle knyv, 870-970 Ft.)
Hogyan hasznljam? Minden amit a szmtgp hasznlathoz tudni kell (560 o. 2490 Ft.)
Hogyan kezdjem? (240 o. 1430 Ft.)
Informatikai fzetek (ECDL vizsgkhoz)
1. Az informci technolgia alapfogalmai (152 o. 970 Ft.)
2. Opercis rendszerek (248 o. 1750 Ft.)
3. Szvegszerkeszts (242 o. 1430 Ft.)
4. Tblzatkezels (192 o. 1190 Ft.)
5. Adatbzis-kezels (168 o. 1190 Ft.)
6. Prezentci-kszts (104 o. 1190 Ft.)
7. Informci s kommunikci (94 o. 870 Ft.)
9. ECDL Kpszerkeszts (144 o. 970 Ft.)
10. ECDL Webkezd (144 o. 970 Ft.)
JavaScript kliens oldalon (188 o. 2900 Ft.)
Kezd bnzk kziknyve (216 o. 970 Ft.)
Macromedia Flash MX (204 o. 1970 Ft.)
Makrhasznlat Excelben (118 oldal, 1750 Ft.)
MySQL.NET (540 oldal, 3920 Ft.)
Nevels s rtkkutats - A pedaggiai gyakorlat pszicholgija (200 o. 1970 ft.)
Office XP (352 o. 2190 Ft.)
Office 2007 (464 oldal, 3920 Ft.)
OpenOffice.org (400 oldal, 2990 Ft.)
tletek s tancsok Windows felhasznlknak (176 o. CD mell. 1970 Ft.)
PC hardver kziknyv (360 o. 2870 Ft.)
Programozs Turbo Pascal nyelven (232 o. 1290 Ft.)
Puskzsi kziknyv (128 o. B6, kemnytbls, 970 Ft.)
Szerver oldali Webprogramozs (192 o. 2900 Ft.)
Szvegszerkesztsi feladatgyjtemny + CD mellkl. (144 o. A4, 1970 Ft.)
Titkos hadmveletek pnztrcnk ellen (240 o. 540 Ft.)
Videoszerkeszts hzilag (240 o. 1970 Ft.)
Webes adatbzis-kezels MySQL s PHP hasznlatval (160 oldal, 2490 Ft.)
Weblapkszts hzilag (200 o. 1760 Ft.)
Windows XP rszletesen (368 oldal, 2490 Ft.)
Windows 7 mindenkinek (392 oldal, 2990 Ft.)
XHTML - A HTML megjulsa XML alapokon (200 o. 2900 Ft.)
Zsebknyvek (Word-Excel-Outlook-PP-Access 2007, 2010, Windows XP, Vista, 7 stb.)
RSZLETES INFORMCIK, JDONSGOK
S TARTALOMJEGYZKEK AZ INTERNETETEN:

WWW.BBS.HU

A fenti knyvek megrendelhetk a kiad cmn: BBS-INFO Kft. 1630 Bp., Pf. 21.
Nagyobb mennyisg rendels esetn kedvezmnyeket tudunk biztostani.

Olvasson regnyeket, trtneket, rsokat akr ingyen!


Publiklja rsait ingyen vagy pnzrt!
Nlunk nem kell megvennie a knyvet ahhoz, hogy elolvashassa.

rsok minden tmakrben: Bulvr - Csald - letmd - Hobbi Dokumentummintk - Erotika - Kultra - Valls - Mese - Ifjsgi
- Mondsok - Idzetek - Mvszet - Receptek - Gasztronmia Regnyek - Novellk - Sport - Szakirodalom - Szmtstechnika
- Trtnelem - Utazs - Versek - Viccek - Egyb

WWW.BETUVETES.HU

You might also like