171
5/28/2018 PHPsMySQLazalapoktl-slidepdf.com http://slidepdf.com/reader/full/php-es-mysql-az-alapoktol 1/171 Kozmajer Viktor PHP és MySQL az alapoktól  

PHP és MySQL az alapoktól

Embed Size (px)

Citation preview

  • Kozmajer Viktor

    PHP s MySQL az alapoktl

  • Kozmajer Viktor

    PHP s MySQL az alapoktl

    BBS-INFO Kiad, 2011.

  • 4 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{ru-l{s{val trtnhet.

    Ksznet Hegeds G{bornak, aki nlkl ez a knyv nem

    jhetett volna ltre

    A knyv nagyobb mennyisgben megrendelhet a kia-dn{l: BBS-INFO Kiad, 1630 Bp. Pf. 21. Tel.: 407-17-07

    A knyv megr{sakor a szerz s a kiad a lehet legnagyobb gondos-s{ggal j{rt el. Ennek ellenre, mint minden knyvben, ebben is elfor-dulhatnak 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 5

    TARTALOMJEGYZK

    1. Bevezet ............................................................................ 92. 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 .......................................... 193.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 .......................................................................... 305.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 .......................... 397. Vezrlsi szerkezetek ................................................... 46

    7.1. El{gaz{s Az IF utast{s ...................................... 46

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

  • Tartalomjegyzk 7

    13. SQL parancsok ........................................................... 11513.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 ............................. 12215. PHP s MySQL sszekapcsol{sa ............................ 124

    15.1. Pldaprogram PHP s MySQL sszekapcsol{s{ra ............................................. 126

    16. CMS rendszerek ........................................................ 13216.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 .......................................... 13917.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

  • 8 PHP s MySQL az alapoktl

  • Bevezet 9

    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 web-oldalszerkeszts alapjait, de szeretnnek tov{bb lpni, a dinamikus weblapok ir{ny{ba. Szintn hasznos lehet azon olvasknak is, akik m{r meg-ismerkedtek m{s programnyelvekkel s most bete-kintst szeretnnek nyerni, hogyan is mkdik mindez webes krnyezetben. Sz{mukra (is) a leg-ide{lisabb v{laszt{s a vil{g egyik legkedveltebb

    webprogramozi nyelve, a PHP s a szintn elter-jedt MySQL webes adatb{zis-kezel rendszer, melynek sz{mos elnye van. Segtsgkkel pro-fesszion{lis honlapokat programozhatunk le, sz-szekthetjk ket az {ltalunk ksztett, webes

    adatb{zisokkal, amelyeket a vil{gon b{rhonnan

    elrhetnk az internet segtsgvel. Weboldalain-kat dinamikuss{ tve, ak{r m{sodpercenknt fris-sl inform{cikkal l{thatjuk el, az adatok felv-

    telt, 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 vgighalad-va, az olvas megismerkedhet a PHP nyelv alapja-ival, 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 web-oldalakkal sszektni. Megtanulja az rlapksz-

    tst, gy ak{r saj{t adminisztr{cis fellettel ren-delkez, dinamikusan frissthet honlapot is kpes

    lesz elkszteni. Megismerkedhet a CMS (tarta-lomkezel) rendszerekkel, gy minim{lis progra-mozi tud{ssal is kpes lesz n{llan honlapokat telepteni, majd azokat klsleg testre szabni s tartalommal feltlteni.

    A PHP kdrszletek s az illusztr{l kperny-kpek nagyban segtenek, hogy a lertakat saj{t

    maguk is meg tudj{k valstani (Macrome-dia/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: tag-ek kz kell rni. Ezek a hagyom{nyos, PHP kdblokk kije-llsre szolg{l elemek.

  • 12 PHP s MySQL az alapoktl

    A knnyebb {tl{thats{g s a programhib{k knnyebb szlelse rdekben clszer weblap-szerkeszt programot haszn{lnunk (pl. Adobe

    Dreamweaver), mivel ezek tartalmaznak kdnzet funkcit is, amiben m{s-m{s sznnel jelli a prog-ram a klnbz PHP-s kdrszleteket, fggv-nyeket. 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 makrgyjtemny-nek indult, ami a szemlyes honlapok prog-ramoz{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 tu-dunk letlteni, amik elre elksztett, komplett PHP oldalak s hozz{juk tartoz design-ok (t-m{k, kinzetsm{k a honlaphoz), kiegsztsek,

    plugin-ok.

  • 13 PHP s MySQL az alapoktl

    2.2. 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, meg-keresi a PHP f{jlt, s egy rtelmez program

    segtsgvel lefuttatja azt.

    3. Futtat{s kzben egy n. eredmny HTMLoldalt kszt, melyet miut{n a PHP kdvgre rt visszakld a felhaszn{li oldalraa bngsznek.

    4. A felhaszn{l m{r csak ezt a PHP kd alap-j{n kszlt HTML oldalt l{tja.

    A Windows oper{cis rendszer al{ tbb olyan programcsomag is ltezik, amely minden szks-ges 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 15

    2.3. 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 ren-delkez phpMyAdmint.

    Az Apache teleptse semmivel sem nehezebb,

    mint b{rmely m{s program. A knyvben az 1.5.4-es verzi teleptst mutatjuk be ebben a rszben.

    A telepts ut{n m{r rendelkezni fog a gpnk

    beptett PHP fordtval, illetve MySQL adatb{zis-kezel 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 kapcsol-dunk, 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 programszerkezete

    Egy PHP program nem m{s, mint szokv{nyos

    HTML kd, melybe a PHP kd 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 leg-gyakoribb 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 eredmny-oldalra 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 szemll-tethet:

    1. Ez esetben nem jelljk ki a PHP blokkot.Ekkor a bngsz, az elbb lertak szerint HTML-nek 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

    Els PHP programunk

    print (Hell vilg!);

    2. Ez esetben m{r kijelljk a PHP blokkot akvetkez t{bl{zatban l{that hagyom{nyos 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:

    Els PHP programunk

  • 22 PHP s MySQL az alapoktl

    3.2. PHP kd blokkjainak kijellsre szolgl elemek

    Elnevezs Kezd elem Z{r elem

    Hagyom{nyos

    Rvid

    ASP stlus

    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 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 megn-znk a beptett fggvnyek kzl nh{nyat

    (amelyet a ksbbi pldaprogramokban, forr{sk-dokban is bemutatunk) a jobb megrts rdekben.

    4.1. A print fggvny

    Az elssorban szvegmegjelentsre szolg{l print fggvny esetben a z{rjeleket elhagyhat-juk:

  • 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., A print fggvny

  • Fggvnyek 25

    b., A print fggvny

    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 s 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 na-gyobb 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{sod-perc (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

  • 28 PHP s MySQL az alapoktl

    a. pi ()

    A pi rtkt adja vissza 13 sz{mjegy pon-

    toss{ggal.

    A fggvny eredmnye: 3,1415

    Figyelem! Ahogy a kdrszletben is l{thatjuk

    megjegyzsknt, az egy sorban kln{ll szvegek

    sszefzsre PHP-ben a pont (.) szolg{l. Erre k-

    lnsen oda kell figyelnnk, mert knnyen szin-

    taktikai hib{t okozhatunk, ha nem, illetve ha rosz-

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

    5.2. Vltoz tpusnak mdostsa a settype() fggvny

    A settype() szintaktik{ja a kvetkez:

    settype($valtozoneve, 'tpus, amire konvert{lni

    akarunk');

  • 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, ha

    futtatjuk a pldaprogramot:

  • 39 PHP s MySQL az alapoktl

    6. Opertorok skifejezsek PHP-ben

    Miut{n megismerkedtnk a v{ltozk deklar{l{-s{val s tpusaival, nzzk meg, milyen mvelete-ket tudunk velk vgezni. Ahhoz, hogy mvelete-ket (legyen az aritmetikai vagy m{s) vgezhessnk PHP-ban, m{s programoz{si nyelvekhez hasonl-an 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 he-lyezkedik el: pl.: 12 + 32. Ebben az esetben az sz-szead{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 mara-dkoszt{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, va-gyis, ha $szam = 12, akkor a v{ltoz a neg{l{s

    ut{n -$szam = -12. A maradkoszt{s sem annyi-ra 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 k-ln{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 41

    Ha ezt a kettt sszefzzk s kiratjuk a kp-ernyre, 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 gpels-kor s persze kevesebb karaktert kell felhasz-n{lnunk hozz{juk. Persze haszn{lhatjuk a hosz-szabb 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 szerkeze-tek cm rsznl.

    sszehasonlt oper{torok: Ezek feladata,

    hogy a bal s jobb oldalon lv operandust sz-szehasonlts{k. Az sszehasonlt{snak kt

    eredmnye lehet: igaz (true, 1) vagy hamis

    (false, 0):

  • Opertorok s kifejezsek PHP-ben 43

    Ope-r{tor

    Megne-vezs

    Igaz, ha: 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 azo-nos.

    $a ! = = 12

    > na-gyobb, mint

    A bal oldal na-gyobb a jobbn{l.

    $a > 12

    < kisebb, mint

    A bal oldal ki-sebb, mint a jobb.

    $a < 12

    > = nagyobb egyenl

    A bal oldal na-gyobb vagy egyenl a jobb

    oldallal.

    $a > = 12

  • 44 PHP s MySQL az alapoktl

    < = kisebb egyenl

    A bal oldal ki-sebb vagy egyenl a jobb oldallal.

    $a < = 12

    Ezekkel az oper{torokkal sokszor fogunk tal{l-kozni 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 ssze-

    hasonlt felttel {ltal keletkezett logikai rtket

    hasonlthatunk ssze (ezek ismersek lehetnek

    a Boole-algebr{bl):

    Ope-r{tor

    Megne-vezs

    Igaz, ha: Plda

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

    & & s 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 programjaink-ban. A pld{kban is sokszor fel fognak tnni (pl.: a

    kvetkez fejezetben) s felttlenl fontos, hogy

    megrtsk ezek haszn{lat{t, mert jform{n semmi-re sem megynk a PHP-val, ha ezeket nem ismer-jk.

  • Vezrlsi szerkezetek 46

    7. Vezrlsi szerkezetek

    Ez az anyagrsz a kezdk sz{m{ra kicsit bonyo-lult lehet, {m akik m{r haszn{lt{k a vezrlsi szer-kezeteket 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 le-hetnek 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 k-

    v{nt v{ltozt s a felttelt (a fenti pld{ban $t>10).

    Ha a felttel igaz, akkor az igaz, {g, ha hamis, ak-kor a hamis {g fog vgrehajtdni.

    Fontos! Az rtk ad{s = jellel, a vizsg{lat = = je-lekkel 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 (va-gyis 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:

    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 gyakorol-juk!).

  • 50 PHP s MySQL az alapoktl

    7.1.1. Pldaprogram az IF utasts bemuta-tsra

  • Vezrlsi szerkezetek 51

    { if ($szam1>0) /*Ez az egymsba gyazott elgazs jelen esetben szksges, mert, ha a program az ELSE gba tereldik, ak-kor nem osztaht a szm 2-vel. Ebben az esetben viszont mg egy elgazs-sal ettl fggetlenl meg kell nz-nnk, hogy a 2-vel nem oszthat szm negatv, vagy pozitv-e.*/ {

    print ("A $szam1 nagyobb, mint nulla, vi-szont nem oszthat kettvel!");

    } else {

    print ("A $szam1 kisebb, mint nulla, s nem oszthat kettvel!");

    } }

    print (""); 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 eset-ben az IGAZ g hajtdik vgre.

    } elseif ($szam2

  • 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 (""); if ($szam3>0 and $szam3%2==0) //A $szam3 vltoz mr negatv szm, emel-lett oszthat 2-vel, gy az ELSEIF g haj-tdik majd vgre!

    { print ("A $szam3 nagyobb, mint nulla s oszthat kettvel!");

    } elseif ($szam3

  • 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 plda-knt lert program hogyan is nz ki teljes egsz-

    ben! 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{m-beli megfeleljt adja vissza (ez 0-tl ami a va-s{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:

  • 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 webol-dalunkon, ha t{jkoztatni szeretnnk a l{to-gatinkat 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 59

    8.1. A WHILE() ciklus

    A WHILE() egy elltesztel ciklus, amelynl a

    ciklusmag egy adott felttel teljeslse esetn haj-tdik vgre.

    Szintaktik{ja PHP-ben:

    A WHILE() a legegyszerbben haszn{lhat cik-lusutast{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 vgfel-ttel) 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 ellent-tes 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 se-gtsgvel kirattuk a $i aktu{lis rtkt, majd ezu-t{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 vgrehajtot-ta a ciklusmagban lv utast{sblokkot. A ciklus

    akkor fejezdtt be, amikor a $i rtke a 10-et. L{t-hatjuk, hogy ez nem volt nagy rdngssg, de a

    kvetkezkben bonyoldnak a ciklusok.

    8.2. A DOWHILE() ciklus

    A DO

  • 62 PHP s MySQL az alapoktl

    { print ("$i "); //A ciklusmagban lv utaststmb mindenflekppen lefut egyszer! $i++; }

    while ($i

    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 lefu-t{snak teh{t a hamis felttel sem akad{lya.

    Ha a pldaknt felhozott programot megtekint-jk a bngsznkben, akkor az ugyanazt az ered-mnyt adja, mint az elz pontban bemutatott

    WHILE() ciklus pldaprogramja (vagyis ugyangy

    kirja a sz{mokat 1-tl 10-ig s azt{n kilp a ciklus-bl). Teh{t, ha azt szeretnnk, hogy a ciklus min-denflekppen egyszer vgrehajtdjon, haszn{ljuk a DO

  • Ciklusok 63

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

  • 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

    A program a FOR ciklus segtsgvel kirja az ts szorzt{bl{t, az egym{s al{ a szorz{s

    eredmnyvel egytt.

  • Ciklusok 65

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

  • 66 PHP s MySQL az alapoktl

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

    print(""); }

    ?>

    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 eredm-nyt, melyet knnyedn leolvashatunk a t{bl{zat-rl.

    Els r{nzsre nehznek tnnek a ciklusok, leg-fkppen a legutbbi pld{ban, de megfelel szin-t gyakorl{s mellett gyerekj{tk lesz a haszn{la-tuk!

    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 iga-z{n dinamikuss{ tenni weboldalainkat az{ltal,

    hogy admin felletet kialaktva tudjuk tartalommal feltlteni oldalainkat. Ezek segtsgvel krhetnk be adatot a felhaszn{lktl, amikkel PHP progra-munk dolgozni, fog. Az adminpanel segtsgvel felvehetnk, mdosthatunk, trlhetnk tartalmat

    oldalainkrl, anlkl, hogy HTML-t szerkeszte-nnk. Ezek kialakt{sa termszetesen nem kis idt

    vesz ignybe, azonban a ksbbiekben az erre sz{nt id tbbszrst sprolhatjuk meg, s k-

    nyelmesebben szerkeszthetjk honlapunkat, ahon-nan csak akarjuk, weblapszerkeszt program hasz-n{lata nlkl!

    De ne rohanjunk ennyire elre, elszr is nz-zk mik is az rlapok elemei s hogyan is kell fel-pteni egy rlapot!

  • rlapok 69

    rlap: valamilyen adatbeviteli clbl elksztett formanyomtatv{ny, amellyel segtjk a felhasz-n{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 70

    9.1. rlap elemek:

    1. Text Filed

    Tulajdons{gai:

    a. Char width (karakter szlessg)

    b. Max chars (h{ny karakter befogad{s{raalkalmas)

    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 hosszsorok 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 egyiklegfontosabb 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, hogyigaz az rtke

    c. Initial state: kezd {llapot:

    - Checked: pip{s

    - Unchecked: alaprtelmezsknt nincs kipip{lva

    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 elemkijellsre (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 73

    9.2. rlap: az action TAG s a paramter tads

    Ha megnzzk az rlapot, amelyet a Form-ra kattintva szrunk be a weblapszerkesztn kd-nzetben, akkor l{thatjuk, hogy az al{bbi kd-rszlettel 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

  • 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 ksz-tsre!

  • rlapok hasznlata a gyakorlatban 76

    10. rlapok hasznlata agyakorlatban

    10.1. Regisztrcis rlap ksztse

    Elsknt egy regisztr{cis rlapot fogunk ksz-teni, amely elsre elg sszetettnek tnhet, {m

    lpsrl lpsre haladva {tnzzk a kszts fo-lyamat{t! Kezdjnk is bele!

    0., Elre megtervezzk, milyen adatokat is sze-retnnk az rlapon bekrni a felhaszn{ltl! A

    pld{ban mi krni fogjuk a vezetk, illetve a ke-resztnevt, 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 elkezd-jk 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 tar-talmaz PHP blokkot. Fontos viszont, hogy az rlap

    feldolgoz{s{hoz szksges Form belsejbe tegyk az rlap elemeit, gy els lpsknt szrjuk ezt be az eszkzt{r Form ikonj{ra kattintva (A 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:

    A mi pld{nkban {lltsuk be, hogy az oldal a

    gombra val kattint{ssal a regisztracio.php-ra ugorjon s, hogy a paramtereket POST metdus-sal (vagyis, hogy titkostva, az oldal HEAD rsz-

    ben) adja {t a feldolgoz oldalnak. Ezt persze k-

    sbb 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 elv-geztk, elhelyezhetjk a Formon bell az rlap

    elmeket! Lehetleg ezeket a rendezettsg miatt egy

    t{bl{zatba helyezzk el (ez legyen 9 soros s 2 osz-lopos az egyikoszlopba megy, mit is kell rni az adott mezbe, a m{sik oszlopba meg maga az r-lap elem). Most a 0. pontban lertak szerint a fel-haszn{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. Esze-rint tltsk ki rtelemszeren a t{bl{zat bal oszlo-p{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 feldol-

    goz oldalon hivatkozni a begpelt rtkekre, a

    feldolgoz oldal PHP blokk{jban. Emellett mind-

    kt esetben be{lltottuk, hogy a beviteli mez sz-

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

    dezzk szksgnk lesz 2 darab Radio

    Button-ra. Mindkettnek ugyanaz lesz a

    neve: neme. Az rtkeknl viszont felttle-

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

    nek, 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{l-

    hoz akkor is t{rsuljon egy nem, ha vletlenl nem

    jellte volna be.

    c. Felhaszn{lnv, jelsz: A felhaszn{lnv-

    nl 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{l-

    juk, 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 jdon-

    s{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 ese-

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

    knk 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) rlap-

    elemmel 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{l-

    toztattunk. A Value mezbe bert szveg fog a

    gombon megjelenni feliratknt. Az Action check-

    box-okn{l bejellhetjk, hogy milyen feladatot v-

    gezzen 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, amelye-ket a pldaprogramba beillesztettnk. Most nzzk a feldolgoz oldal felptst!

    4., A feldolgoz oldal (regisztracio.php) elksz-tse. Az elz pontokban elksztettk az index.php-t, ami egy komplett rlap, amelyet kitltve a feldol-goz oldalra, a regisztracio.php-ra ugrik a prog-ram. 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!

  • 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"); //Teht, ha a $neme vltoz rtke 1, akkor azt rja ki, hogy N, ha nem akkor azt, hogy Frfi.

    } else { print ("Frfi"); }

    print ("Felhasznl neve: $user"); print ("Jelszava: $pass"); //Itt a jelsz mr lthat lesz! print ("Mobilszm: +36 $mobil1 $mobil2 "); //A telefonszmot ratjuk ki. Elbb jn a krzet-szm, 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."); } else //Ha nem jelltk be a Checkbox-t,

    akkor a hamis g fut le. { print ("Nem, nincs autm."); }

  • 86 PHP s MySQL az alapoktl

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

    { print ("Igen, dohnyzom."); } else { print ("Nem dohnyzom."); }

    ?>

    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 kapcsolat-ban, 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 szk-sgnk, mivel a plda lnyege az volt, hogy meg-tanuljuk 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 szer-keszthet kisebb PHP programot (ez egy linkadat-b{zis, linkaj{nl lesz tulajdonkppen).

  • rlapok hasznlata a gyakorlatban 87

    A regisztr{cis programunk a megr{s ut{n ha-sonlkppen 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 fel-haszn{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. prog-ramba beptett v{ltozkat haszn{ltunk a pld{k-ban, 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 be-krnnk 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 feldolgo-z PHP oldalt (eredmeny.php), amelyen {tvesszk

    a kt sz{mot s elvgezzk a sz{mt{st, majd ki-ratjuk az eredmnyt a kpernyre.

    1., Index.php elksztse, rlap elemek elhelye-zs

    a. Ltrehozzuk az index.php-t. Besz-

    runk egy Form-ot az eszkzt{rrl.

    Ezut{n kitltjk az al{bbiak szerint az aciton s

    method TAG-eket:

    L{thatjuk, hogy most a feldolgoz oldalunk az

    eredmeny.php lesz, valamint, hogy a GET-es pa-ramter {tad{st fogjuk haszn{lni. Utbbi azrt nem POST, mert most nem kell az {tadott paramtere-ket 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 ta-karja, 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?parameter1=0&parameter2=43&parameter3=7

    Szrjunk be egy t{bl{zatot a rendezettebb meg-jelens rdekben, ebben helyezzk el majd a sz-

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

    gnk az oldalon, amire kattintva az ered-

    meny.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 ered-meny.php! Nzzk most ennek a PHP kdj{t!

  • 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 na-gyobb 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 kiszmt-

    st egy vltozban adtuk meg, print("A tglalap kerlete (K):

    $kerulet "); //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 ("A tglalap

    egyik oldala sem lehet kisebb vagy egyen-l nullval!Krem csak pozitv szmot adjon meg!");

    } ?>

  • rlapok hasznlata a gyakorlatban 93

    A PHP blokkon kvl szrjunk mg be egy lin-

    ket, ami az index.php-ra vezet, hogy ha valaki

    hib{s sz{mot rt be vagy jra akar sz{moltatni va-

    lamit, vissza tudjon lpni!

    Vissza az oldalak meg-adshoz

    Amennyiben mindent jl csin{ltunk, akkor a

    kvetkezkpen fog mkdni a programunk:

    1. Els lpsben berjuk a kt rtket a kt bevi-teli 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 k-sztst, 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 sze-rezznk az rlapok elksztsben s hozz{j{rul-nak 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{b-l{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{s-kd adatb{zis rendszer. A MySQL-es adatb{zis-kezels megrtshez s elsaj{tt{s{hoz

    szksgnk lesz kor{bban megszerzett tud{sunk-ra. 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 ada-tok adatb{zisokban, azokon bell pedig adatt{b-l{kban t{roldnak. Egy adatt{bla az al{bbiak sze-rint pl fel:

    Egy EGYEDET jellemznk.

  • 98 PHP s MySQL az alapoktl

    Adatt{bla: logikailag sszetartoz adatok so-rokbl (rekordok) s oszlopokbl (mezk) {ll

    elrendezse.

    Rekord: egyed sszes adata. Az adatt{bla egyetlen sora, az inform{ci csoport egyetlen ele-mnek 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 rz-keny a kis s nagy bets klnbsgekre ({m azon-ban 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 kisbe-tvel.

    11.3. Egy tbla felptse MySQL bell

    Figyeljk meg milyen adattpusokat is haszn{-lunk a pld{ban, s hogy milyen attribtumai van-nak a bevitt adatoknak!

  • SQL adatbzisok 99

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

    kilist{z{skor hasonlt l{thatunk:

    * A Kiszerels mezhz ksztnk mg egy se-gdt{bl{t (kapcsolt{bl{t):

    FK: Foreign Key (idegen kulcs)

  • 100 PHP s MySQL az alapoktl

    Figyelem! Ezt a t{bl{t pld{nak hoztuk fel, hogy l{ssuk, hogyan is pl fel egy MySQL adat-t{bla. A ksztshez szksges lpseket a ksb-biekben 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;

    PK: Primary Key (Elsdleges kulcs)

  • 101 PHP s MySQL az alapoktl

    12. PHP MyAdmin

    A phpMyAdmin az Apache web-szerverhez kapcso-ld adatb{zis-ke-zel modul, amely

    grafikus kezelfellettel rendelkezik. Ezen a felle-ten 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 bng-sznkbe a http://localhost cmet s a list{bl kiv{-

    lasztjuk a phpmyadmin linket. Begpeljk a szer-vernkhz tartoz felhaszn{l nevet s jelszt s ezzel be is lptnk a modulba.

    [m mieltt elkezdennk j adatb{zist s adat-t{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 attrib-tummal rendelkeznek. M{s tpusa van az egyes

  • 102 PHP s MySQL az alapoktl

    sz{m, szveg s d{tumform{tumoknak s a lefog-lalt 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 ADATTPUS

    T[RHELY IGNYE

    ADATTPUS JELLEMZI

    Numerikus adattpusok

    bigint 8 b{jt

    A legnagyobb egsz

    tpus (t{rolhat rtk-tartom{ny ~ 1019- -1019, eljel nlkl 0-1020-ig).

    smallint (eljellel)

    2 b{jt - 32 768 s 32 767 kztti egsz sz{mok.

    smallint (eljel nl-kl)

    2 b{jt 0 s 65 535 kztti egsz sz{mok.

  • PHP MyAdmin 103

    tinyint (eljellel)

    1 b{jt - 127 s 128 kztti egsz sz{mok.

    tinyint (eljel

    nlkl) 1 b{jt

    0 s 255 kztti egsz sz{mok.

    int, integer 4 b{jt

    - 2 147 483 648 s 2 147 483 647 kztti egsz sz{mok t{rol{-

    s{ra alkalmas.

    decimal pontoss{g + 2 b{jt

    Lebegpontos rtkek t{rol{s{ra haszn{ljuk, ahol a pontoss{g is fontos (pl.: 21,8).

    Szveges adattpusok

    char 1 - 255

    Rgztett hosszs{g

    szveges mez. Ak-kor haszn{ljuk legin-k{bb, mikor egy ka-raktert szeretnnk

    t{rolni.

    varchar 1 - 255 b{jt

    V{ltoz hosszs{g szveg t{rol{s{ra

    alkalmas (maxim{lis hossza 255 karakter lehet). Akkor haszn{l-juk, mikor az attrib-tum rtknek hossza

    v{ltoz (ugyanis ez az

  • 104 PHP s MySQL az alapoktl

    adattpus a bert sz-

    vegnek megfelelen dinamikusan v{ltoz-tatja t{rhely ignyt,

    vagyis tnylegesen csak annyi helyet foglal el, amennyi karaktert begpel-tnk!).

    text 0- 65 535 b{jt

    Szveges rtkek

    t{rol{s{ra haszn{la-tos. A varchar-ral ellenttben akkor is lefoglalja a teljes t{r-helyet, ha nem is g-peltnk 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 rtktarto-m{ny 1000. janu{r 1. 9999. december 31. kztt van.

  • PHP MyAdmin 105

    Form{tuma: -HH-NN Pl.: 2010-12-08

    datetime 8 b{jt

    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

    time 3 b{jt

    Idpont t{rol{s{ra

    szolg{l jfl s jfl 1 m{sodperc kztt

    Form{tuma:

    :PP:MM Pl.: 14:03:13

    year 1 b{jt

    A Gergely napt{r

    szerinti veket t{rol-hatunk 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 jelsza-vunkat, 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 hasz-n{ljuk jelenleg az Apache-csal, de az Interneten lv szervereken {ltal{ban m{r ennl jabb verzi-kkal is tal{lkozhatunk. Azonban nem kell meg-ijedni, 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 kat-tint{ssal el is kszl. A pld{n az egybevetst m{r

    be{lltottuk latin2_hungarian_ci-re. Ez azrt fon-tos, hogy kezetes betket is tudjunk haszn{lni. [m ennyi nem biztos, hogy elg is lesz. Ha a szer-vernkn nincs megfelelen be{lltva a karakter-kdol{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 prak-tik{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{r-helyen 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{zis-bl csak egyet kezelhetnk ekkor (ami {ltal{ban

    ugyanazt a nevet viseli, mint az ingyenes t{rhe-lynk 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{sa-kor. A kvetkezkben egy pld{n keresztl ksz-

    tnk egy adatb{zist, megtanulunk t{bl{t ltrehoz-ni, be{lltani a mezk attribtumait, majd rekordo-kat feltlteni. Fontos, hogy a plda szerint kszt-sk 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 adat-t{bla ksztst. Egy nyilv{ntart adatb{zist ksz-

    tnk, 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 hasz-n{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 attribtumai-nak 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 ksbbiek-ben beazonostani az aktu{lis rekordot. Ennl a

    meznl be kell {lltanunk az EXTRA felirat osz-lopban, 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 tud-juk 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 egy-bevetst 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 k-

    vetkez 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 be-szrni 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 fe-

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

    b{zist beimport{lni DUMP f{jl segtsgvel

    (ezekrl ksbb)

    Tevkenysgek: t{bl{kat helyezhetnk, m{sol-

    hatunk {t egyik adatb{zisbl a m{sikba, ellen-

    rizhetjk, javthatjuk a t{bl{kat stb.

    Kirt: kirti az adatt{bl{t (kitrli a rekordo-

    kat, 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 meg-jelenik egy beviteli rlap, ahol egyszerre ak{r 2

    rekordot is fel tudunk tlteni egyszerre. Tltsk fel a t{bl{nkat a kvetkez rekordokkal:

    Nv Anyja neve

    Szletsi helye

    Szletsi d{tuma

    Nagy J{nos

    Kov{cs

    M{ria Budapest 1989-08-05

    Kis Jol{n

    Szab

    Anna Kaposv{r 1962-06-03

    Kov{cs

    G{bor Szcs

    Tmea Budapest 1976-10-12

    Antal Iv{n

    Tak{cs

    va Szeged 1992-02-05

    Varga Bla

    Nagy Eszter

    Salgtar-j{n

    1985-06-25

    Kozma Mikls

    P{sztor Jol{n

    Gyr 1961-05-03

    Dob

    Istv{n Csiks

    Anita Eger 1952-12-20

    Szab

    Elemr Juh{sz

    Ildik Pcs 1987-03-13

    Ha fel akarjuk vinni az rlapot, kattintsunk a

    Vgrehajt gombra! Ezzel a begpelt adatok beke-rlnek 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 ssze-ktni 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 hasz-n{lata javasolt (a PHP MyADMIN-t), de nagy elny az is, ha valaki tud adatb{zist kezelni konzo-los felleten is (mert a kvetkez parancsok fg-getlenek az adatb{zis-kezel rendszertl, gy egya-r{nt mkdnek a MySQL-ben s egyb rendsze-rekben is).

    13.1. Belps a DOS-os (konzolos) felletre:

    A Start men Futtat{s sor{val elhvhat ab-lakba 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{lne-vnket 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; adatb{zisok mutat{sa show tables; t{bl{k mutat{sa use proba; prba adatb{zis haszn{lata describe sor; 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 kapha-tunk!

  • SQL parancsok 117

    13.2. Lekrdezs SQL parancsokkal:

    1. SELECT * FROM sor;

    A csillagot felv{lthatjuk a mezk nevvel,

    vesszvel elv{lasztva. Ha nem vagyunk bizto-sak a mezk nevvel, a lekrdezs eltt rassuk

    ki egy describe-bal a t{bl{t.

    2. SELECT *mezonev1, mezonev2,

  • 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 re-kordokat. 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 meg-ad{sa.

  • SQL parancsok 119

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

    jelek szerepelhetnek.

    Pl.:

  • 120 PHP s MySQL az alapoktl

    ORDER BY felttel: rendezs valamilyen felt-

    tel 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 lekr-dezsben a +, -, *, / mveleti jelek segtsgvel.

    EMPTY SET zenet, amit a MySQL-tl kapunk: nincs ilyen, nincs tal{lat a felttelre

    13.3. Kapcsolat ltrehozsa MySQL-ben

    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 le-krdezshez 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 kul-csokat 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 adatmdostparancsok

    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 megad-juk, milyen mezknek akarunk rtket adni)

    VALUES (z{rjelben itt megadjuk azoknak a me-zknek 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 min-den {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 nl-

    kl meggondolatlanul soha ne haszn{ljuk!

    14.4. 3. Trls DELETE:

    DELETE FROM tablanev; Minden adatot t-rl!!!

    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 kny-nyen 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 visz-

    sza{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 MySQLsszekapcsolsa

    1. Kapcsolat megad{sa a PHP blokkon bell:

    $kapcsolat = mysql_connect (LOCALHOST,ROOT,KOZI1987);

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

    adatb{zis helye felhaszn{lnv jelsz (IP cm is lehet)

  • 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 elhagyha-t, 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 pl-d{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 dina-mikus honlapokon pld{ul a hrek, frumok, ven-dgknyvek, 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 pa-rancsokat m{r {tnztk ehhez s a folyamatot is

    ismertettk az elz pontban, most pedig megnz-zk a forr{skdon keresztl a kszts folyamat{t! Nagyon oda kell figyelnnk, hogy hol nyitunk s hol z{runk PHP kdblokkot s persze a szintakti-k{ra is gyelnnk kell! Minden lpst lertuk a megfelel sorhoz a m{r megszokott megjegyzs form{ban! Most pedig l{ssuk a kdot ( tag-tl a tag-ig):

    Nyilvntartsi jegy-zk

    Nv Anyja neve Szletsi hely

  • 128 PHP s MySQL az alapoktl

    Szletsi dtum

  • PHP s MySQL sszekapcsolsa 129

    //3. A $parancs szveges vltozban lv paran-csot futtatjuk le az adatbzison. A $kapcsolat el-hagyhat, ilyenkor az utoljra megnyitott kapcsola-ton fog dolgozni. A mostani esetben lekrdezzk a nyilvantartas tbla sszes mezjt s a 'nv' mez szerint nvekv sorrendebe rakjuk. $eredmeny = mysql_query($parancs, $kap-csolat); //4. A $eredmeny vltozban eltroljuk, hogy a $parancs-ot hajtsa vgre a PHP fordt a $kapcso-latban 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 pa-ranccsal, amely egy sort adja a $eredmenynek a $sor nev vltozba (amely nevbl addan az adat-tbla 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 hivatkozha-tunk az egyes adatokra ($sor[anyjaneve]) */

    { //ezek utn lezjuk az 1. PHP blokkot, mi-vel most HTML rsz kvetkezik! ?>

  • 130 PHP s MySQL az alapoktl

    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, ame-lyeket mi egy kor{bbi feladat sor{n felvittnk:

  • PHP s MySQL sszekapcsolsa 131

  • CMS rendszerek 132

    16. CMS rendszerek

    CMS: Content Managment System (Tartalom-kezel 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 sz-sze{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, tartal-makat vagy ak{r navig{cit v{ltoztathat akkor is,

    ha nem vagy alig rendelkezik techni-kai/programoz{si ismeretekkel. A tartalom (content) a kinzettl, design-tl (layout-tl) elk-lntve, 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 szerkesz-tsnl 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{jlo-kat a webszerverre. A tartalmak azonnal l{thatk online, az oldal frisstse ut{n.

    A CMS-ket a praktikuss{guk s knnyen kezel-hetsgk mellett azrt (is) rdemes megemlteni, mert a lentebb felsorolt tartalomkezel rendszerek mindegyike nylt forr{skd, ingyenesen letlthe-t s haszn{lhat, PHP-ben rdott, valamint MySQL adatb{zist haszn{l. gy neknk, jelen isme-reteinkkel 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, mobil-telefon, 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 vendgkny-veket, hreket, frumot, szavaz{sokat, l{toga-totts{gi statisztik{kat, az egsz honlapra kiter-jed keresst vagy webshop-ot integr{lhatunk honlapunkba. Ezen fajta kiegsztk sz{ma ren-geteg, 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 kinzet-

    be. Erre csak akkor van lehetsg, ha kell

    szakrtelemmel kicserljk, fellrjuk a webol-dalt alkot kpeket, grafik{kat illetve {trjuk az adott tm{hoz tartoz CSS stlusf{jlokat a meg-felel helyen s mdon.

    M{sik megold{s, hogy kls fejleszttl beszer-znk, letltnk klnbz oldaltm{kat

    (themes). Sokfle, rendszerezett, klnbz ka-tegri{kba besorolt, ingyenes tm{t tal{lhatunk a lent felsorolt CMS-ek hivatalos honlapjain, il-letve a velk foglalkoz, egyb (sok esetben

    magyar nyelv) weblapokon is! gy knnyedn kereshetnk weboldalunk tartalm{hoz illesz-ked, sz{munkra megfelel designt, kinzetet, amit azt{n p{r kattint{ssal azonnal telepthe-

  • CMS rendszerek 135

    tnk is, s ami ezt kveten azonnal alkalmaz-hat az oldal tm{jaknt.

    16.2. Magyar nyelven is elrhet CMS rendszerek

    PHP-Nuke ( http://phpnuke.org )

    e107 ( http://e107.org )

    Drupal ( http://drupal.org )

    Joomla ( http://www.joomla.org )

    GuppY (http://www.freeguppy.org )

    Ezen CMS-ek nagy rsze megtal{lhat magyar nyelven is, gy haszn{latuk mg knnyebb s k-

    nyelmesebb. [ltal{ban tal{lhatunk olyan magyar

    nyelv weboldalakat is, ahol az adott tartalomke-zel rendszerrel foglalkoznak s az aktu{lis friss-

    tsekrl, hrektl, jabb bvtmnyektl s tm{k-tl kezdve a teleptsi tmutatn {t a hibajavt{so-kig, sok mindent megtal{lhatunk rajtuk, amik se-gthetnek 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 sz-szes eszkzt, amelyet inform{cis honlap vagy

  • 136 PHP s MySQL az alapoktl

    port{l ltrehoz{sa (szles rtelemben vve) alkal-mazunk.

    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 leg-jabb verzikat, valamint a magyar kezetes bet-

    ket is tartalmaz verzikat is megtal{lhatjuk. Ezu-t{n: