PHP Jegyzet

Embed Size (px)

Citation preview

  • 7/27/2019 PHP Jegyzet

    1/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    1

    1994-ben Rasmus Lerdorf a sajt honlapjn azt kvnta megtudni, hogy kik olvassk nyilvnoss tett nletrajzt.Erre a feladatra rt Perl nyelven egy egyszer alkalmazst. Mivel a futtat kiszolgl elgg tlhajszolt volt,s a programemiatt tbbszr feladta a harcot, Rasmus gy dnttt, hogy az egszet jrarja C-ben. Trtnetesen ez a kiszolgl, aholgykdtt, szmos ms felhasznlnak is otthont adott, akik felfigyeltek a munkjra. Tbben megkrtk, engedje meg

    szmukra, hogy ezt a megoldst a sajt lapjukon is hasznlhassk. Rasmus hajlott a dologra, aminek rvidesen az lett akvetkezmnye, hogy egyre tbb kvnsgot teljesthetett programja tovbbfejlesztsvel kapcsolatban. Ltva a dolog sikert,munkjt lerssal elltott programcsomagg lltotta ssze, s levelezlistt indtott. Ekkor kapta meg a program a nevt:Personal Home Page Tools. Ez rvidesen Personal Home Page Construction Kit nvre mdosult. Kzben adatbzis-kiszolglkkal is jtszadozni kezdett, s sszettt egy msik alkalmazst, ami ltal kpes volt SQL-lekrseketsszekapcsolni a hozzjuk tartoz webes rlapokkal s listkkal. Ezt a csomagjt Form Interpreter nven ismerhette meg anagykznsg. A dolgok felgyorsultak, 1997 vgre a kt program PHP/FI 2.0 nven egyeslt, amihez mind a kt sszetevtalaposan t kellett rni. Innentl szmthat a PHP nll programnyelvnek, olyannak, amelyet weblapokba gyazhatanlehetett futtatni. Mire a 2.0-s vltozat prbavltozatainak a vgre rt, s vgleges pompjban kiadsra kerlt, megntt atmogatott adatbzis-kiszolglk szma is. E prbavltozatok folyamn kerlt be a MySQL-adatkapcsolat tmogatsa is anyelvbe. A PHP C nyelv forrsa ekkor mg knyelmesen elfrt egyetlen knyvtrban. A 2.0 vgleges kiadsakor is csak aregexptmogats kapott kitntetett helyet, azaz sajt alknyvtrat.

    A csapatmunka eredmnyes eljtt 1998 nyara, vele egytt pedig a PHP 3.0-s vltozata. Ez a kiads mr jelents csapatmunka eredmnye

    Zeev Suraski s Andi Gutmans nagyfok kzremkdsvel. k ketten teljesen a nullrl indulva jra felptettk a PHPparancsfjl- feldolgoz motort. Ez a mag az, amit ma Zend nven ismernk. A PHP rvidts ekkor nyerte el azt azrtelmezst, ami jelenleg is hasznlatos: PHP: Hypertext Preprocessor. A hrmas sorozat szk ktves fennllsa sornrengeteg fejlesztsen ment keresztl, de 2000 tavaszra ismt jabb nagy ugrs tani lehettnk.Minsgi ugrs: a 4-es vltozat

    A PHP 4.0 valban ismt nagy vltozsokat hozott. Maga az alapnyelv is jelentsen bvlt, s a rendszer magjaekkortl tmogatta a klnfle modulok hozzrst. A legtbb PHP3-ba plt tmogatsbl is ilyen modul kszlt. Egszenidig a PHP csak az Apache webkiszolglval mkdtt egytt teljes sszefondsban, mg ms rendszereken csak mintCGI-alkalmazs llta meg a helyt. Egyedl a 4.0-val bevezetett egysges, webkiszolglkkal kapcsolatot tart alaprtegjelentett ttrst ezen a terleten. A PHP bels motorja hivatalosan ekkortl kapta meg a Zend elnevezst.A jelen

    A nagyobb vltozatszmugrsoknak mindig megvan az oka,miknt most is. Tbb olyan jdonsg is bekerlt az jvltozatban, amelyek kln-kln is indokolhattk volna ezt az ugrst. Az egyik ilyen fontos lps a CLI (parancssorbartfellet) vgleges, immr nem ksrleti jelleg megjelense. Eddig, ha brmilyen feladat elltshoz parancssorbl futtathat

    PHP-programra volt szksg, nem ltezett tkletes megolds. Mrpedig ilyen feladat a komolyabb leterheltsggel szmol

  • 7/27/2019 PHP Jegyzet

    2/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    2

    alkalmazsok esetn knnyen eljhet elg egy komolyabb reklmcsk-kiszolglra gondolnunk. A reklmok vletlenszerelosztst ekkor sszetett szempontok alapjn, viszonylag bonyolultabb szmtsokkal hatrozhatjukmeg. E valsznsgeket minden egyes letltskor meghatroznis az alapjn sorsolni tlzott s felesleges terhet jelent a gp szmra. Ehelyett elegend nhny percenknt kiszmtani amegjelensi valsznsgeket, majd a kvetkez idszakban eszerint kldeni a reklmokat, immron letltsenknt egyetlenegyszer kockadobssal dntve. A meghatrozott idkzk crontab fellltsval knnyedn ltrehozhatk. Igen m, de aPHP arra szletett, hogy HTTP-protokollon keresztl dolgozzon, nem pedig a hjbl hvva. Arra a feladatra, hogy a PHP-

    kdok a cron segtsgvel mgis futtathatk legyenek, tbb megolds is elterjedt: A Lynx szveges bngszfelhasznlsval, ami nmi kivetnivalt hagy maga utn, hiszen egy felesleges tttelen keresztl indtjuk be PHP-kdot. AzApache-modul mell egy CGI-vltozat fordtsval s ennek parancssori hvogatsval. Ez mr kiszolglbartabb megolds,de mg mindig nem az igazi mdszer. A 4.3.0-s vltozattl kezdve immr nem kell ktszer fordtanunk, ha parancssori elrstszeretnnk, s a Lynx-fle trkkzs is hamar elfelejthet. Mostantl kezdve amikor Apache-modult lltunk el forrsblfordtssal, egyben egy CLI fellet parancssorosan futtathat PHP is hadrendbe ll. Ez termszetesen egy -disable-clikapcsolval kikapcsolhat. Akkor sem lesz CLI felletnk, ha Apachemodul helyett a CGI-vltozat mellett dntnk. Lssuk,mifle kedvessgekkel knyeztet minket a CLI-megvalsts: Nem ad HTTP-fejlceket. Nem vltoztatja meg apillanatnyi munkaknyvtrat a fut program knyvtrra. A hibazenetek nem kapnak HTML-formzst. A szabvnyoskimenet nem kerl tmeneti trba, minden azonnal megjelenik a konzolon (implicit_flush). A program futsi0idejnek nincs fels hatra (max_execution_time). A meghvskor tadott tulajdonsgok a $argc s $argvvltozkon keresztl elrhetk. A register_globalsra a CLI hasonlkpp vlaszol, mintha Apache all futna. Ennekoff llapotba lltsakor az $argc s $argv vltozk nem jnnek ltre, viszont a $_SERVER tmbben tovbbra is

    elrhetk.

    Bevezeti az STDIN, STDOUT, STDERR llandkat. Ezek a nevknek megfelel ki- s beviteli eszkzkremutatnak, hasznlatukhoz teht nem szksges az fopen()hvsa. Hasonlkppen a bezrsukkal sem kell trdni. A CLI-thasznlva a PHP a Perlhez hasonlkppen hasznlhat, azaz tbbflekppen is futtathatjuk: 1. A php program.php vagya php -f program.php segtsgvel. 2. A -r kapcsol segtsgvel kzvetlen parancsokat tudunk vgrehajtatni: phpr 'print_r(get_defined_constants()); 3. A bemenetre csveken t is csatlakozhatunk.4.#!/usr/bin/php sort biggyesztve a PHP-parancsfjl elejre, azt nllan is futtathatv tehetjk. Ugyancsak mostbevezetett jdonsg az egysgestett adatfolyamkezels (Stream). A dolog szellemisge a Unix minden fjl felfogshozhasonlt. Itt arrl van sz, hogy minden ki- s bemeneti mvelet nagyon hasonlatos egymshoz, legyen sz akr fjlba rsrl,csvezetkbl val adatfogadsrl, memriakezelsrl, akr foglalaton keresztli kapcsolattartsrl. Ezeket a feladatokatrengeteg klnbz, mde mgis nagyon hasonl fggvnygyjtemnnyel lehetett eddig megoldani. Foglalatokhozpldakppen a socket_* fggvnyek vannak rendszerestve, mg FTP-re rengeteg ftp_* fggvnyt tallunk. Azegysgestshez a fjlkezel fggvnyek trsra, valamint j pr stream_* eljrs rendszerestsre volt szksg. Ameglv fggvnyek egy rsze viszont ettl fogva mr csak ezeknek az adatfolyamfle megfeleliknek a tovbbi neveikntlelhetk fel, sajt kddal nem rendelkeznek. gy a socket_set_timeout() nmagban mr nem ltezik, csak a

    stream_set_timeout() egy lneve. Ez nem csupn a PHP-ben fejlesztk munkjt knnyti meg, de segti a PHPtovbbi C-ben val fejlesztst is, hiszen gy az jabb protokollok, adatforrsok tmogatsnak bevezetshez nem kell teljeskezelt rni, elg ennek a programozsi felletnek a bvtmnyeit elkszteni. Tovbbi jdonsg, hogy a GD-tmogatshozeleddig kln teleptend libgd beszerzse nem szksges, ugyanis a 4.3.0-s s ksbbi kiadsok mr tartalmazzk. Aklnfle kpformtumok kezelst biztost kls knyvtrak fejleszti vltozatra (libjpeg, libpng, libungif) viszonttovbbra is szksg lesz. E fejlesztsek mellett termszetesen rengeteg hibt is kijavtottak benne, az Apache2 SAPI iskzelebb kerlt az les kiszolglkon val alkalmazhatsghoz. Ez vglegesen majd csak valamikor a nyrra vrhat, s aZend2-motorra pl PHP 5.0-val lesz hivatalosan is hasznlhat.A jv: PHP5 s Zend2

    A trtnet 2001 nyarn kezddtt. Az akkori tervek szerint a Zend2-vel felszerelt PHP 5.0 vrhatan egyidbenjelent volna meg a 4.1-es vltozattal. Nos, azta tudjuk, hogy nem gy lett. A PHP 5.0-nak rengeteg elvrst kell kielgtenie,ennek megfelelen sok terleten hatalmas elrelpsre lehet szmtani. A Zend-motor, ami a parancsfjlok feldolgozsrtfelel, leginkbb az objektumokkal kapcsolatos terleten fog ltvnyos eredmnyeket hozni. A PHP-t objektumtmogatottsgamiatt sok vd rte, mivel a Java vagy a C++ kpessgeihez kpest jcskn elmarad. Az egyik ilyen jelents nehzsg a

    jelenlegi 4- es vltozatokban az, hogy az objektumvltozk magt az objektumot troljk, nem csak egy hivatkozst r,mint ahogy az logikus lenne. Ennek kvetkezmnye az, hogy minden egyes objektumpldny egy msolat ahelyett, hogyugyanazon objektumra mutatnnak. A Zend2-ben az objektumkezels teljesen jra lett rva, ezltal a fenti gondokmegolddnak, s ez utat nyit a komolyabb objektumalap programozs fel. Hasonlan nagy lps lesz a kivtelkezelsbevezetse. A try, catch, throw hasznlatval immr a PHP is fel lesz vrtezve azokkal az eszkzkkel, amelyeksegtsgvel kiakadskerl programokat pthetnk. Zeev Suraski-nak, a Zend-motor egyik fejlesztjnek vlemnyeszerint a PHP ezzel a lpssel valban komoly, versenykpes objektumalap nyelvv nvi ki magt. Az az elnye is meglesza weblapba gyazott Java lehetsgvel szemben, hogy a PHP valban pehelysly parancsnyelv. Zeev mindezt rviden gyfoglalta ssze, hogy a Java pont ilyen lett volna, ha parancsnyelvnek terveztk volna. Arra, hogy tnylegesen mik ezek azobjektumkezelsi jdonsgok, egy ksbbi cikkemben trek vissza. Tovbbi aprbb vltozsok a karakterlnc-kezelsbenvrhatak. Eddig is ltezett az a lehetsg, hogy a karakterlncokat karaktereket trol tmbknt kezeljk, de ez egyrsztnem mkdik tkletesen, msrszt a nyelvi szempontbl teljesen eltren kezelend dolgokat jobb elklnteni. Ezrt ajvben a karakterlncok ksbbi tmbknt val kezelse figyelmeztet zenetek megjelenst fogja kivltani. A $str[3]helyett a jvben a $str{3} forma hasznland. A fejlesztk ennyivel termszetesen nem rtk be ha mr ilyenbeavatkozs trtnik, rdemes kihozni belle a legtbbet.

  • 7/27/2019 PHP Jegyzet

    3/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    3

  • 7/27/2019 PHP Jegyzet

    4/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    4

    PHP elhelyezse s a webarchitektrja

  • 7/27/2019 PHP Jegyzet

    5/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    5

    Ha futtatni szeretnnk sajt php programjainkat, akkor szksgnk lesz egy olyan trhelyre, amely

    kpes php oldalak futtatsra. Ennek lehetsges megoldsai : Sajt web szerver (elnyei gy

    lltom be, ahogy szeretnm, htrnya drga hardver szksges hozz.) Ingyenes trhely (elnyei

    ingyen van, kszen van a telepts, htrnyapr lnyeges dolog korltozva van) fizets trhely

    (elnye rugalmas az ignyeket tbb kevsb igyekeznek teljesteni, htrnyapnzbe kerl csak

    prblgatsra drga)

    Ha egy asztali pc re szeretnnk telepteni, akkor az egyik j megolds az Xampp program csomag. A

    program csomag egyes vltozatait a http://www.apachefriends.org/en/xampp.html linken rhetjk

    el. Mivel a windows a legelterjedtebb ezrt mi most csak a windows opercis rendszer al

    teleptjk az xampp programot. Mieltt letltjk a programot tjkozdjunk milyen windows

    opercis rendszernk van, illetve 32 vagy 64 bites. A letlthet verzik kzl vlasszuk az Xampp for

    windows t.

    Sajt PHP programot futtatni lpes

    szerver a szmtgpen.

  • 7/27/2019 PHP Jegyzet

    6/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    6

    Ha a kpek alapjn elnavigltunk a

    letltsig, akkor tltsk le az xampp

    programot. Majd indtsuk el a

    teleptst(dupla click a programon) . Az

    xampp teleptjnek elindulsa utn az

    els informci, amit meg kell adnunk az

    a cl meghajt (trol, merevlemez).

    Majd nyomjuk meg az install gombot, gy

    az xampp feltelepl.

  • 7/27/2019 PHP Jegyzet

    7/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    7

    A telepts befejezse utn egyetlen dolgunk marad elindtani az xampp controlt,

    amelyet, a windows asztalon tallunk. Ha erre kattintunk kettt, akkor megjelenik

    az xampp control, ablaka. Itt egyszeren az apache felrat mellett tallhat start

    gombra kattintunk, illetve a mysql felrat mellett tallhat start gombra. Ezzel

    kszen van az a krnyezetnk, amellyel futtathatjuk a php programjainkat.

  • 7/27/2019 PHP Jegyzet

    8/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    8

    Az algoritmusfogalom trtnete

    Az algoritmus kifejezs a bagdadi arab tuds, al-Hvrizmi (Abu Dzsafar Muhammad bin Msza al-Hvrizmi, lt kb. 780-tl

    kb. 845-ig, Al-Khvorizmi, Al-Khorizmi stb.) nevnek eltorztott, rosszul latinra fordtott vltozatbl ered. A Kr. u. kb. 700

    1200 kztt eltelt idszak az arab birodalmak, kultra, tudomny virgzsnak ideje volt, ennek az idszaknak rszben a

    mongol, rszben a keresztny hdtsok vetettek vget. Az arabok legnagyobbrszt a hinduktl, Eurpa pedig al-Hvrizmitls utdaitl vette t nemcsak a helyirtkes, tzes rendszer szmrst (addig rmai szmokkal illetve abakusszal, az kor

    szmolgpvel szmoltak), hanem az alapfok algebrai s trigonometriai ismereteket is (szveges egyenletek felrsa,

    megoldsa).

    Az akkori idk egyik legnagyobb hats mve a trsgben, taln rgtn a Korn utn, minden bizonnyal az al-Hvrizmi ltal

    rt Algebra (Al-kitab al-muktaszr fi-hiszb al-dzsabr val-mukabala = Rvid knyv a helyreraksrl (al-dzsabr) s az

    sszevonsrl) volt. Az al-dzsabr szbl ered mai "algebra" szavunk. De al-Hvrizmi rt egy aritmetikai jelleg, a hindu tzes

    szmrendszert ismertet knyvet is, ez csak latin fordtsban maradt meg, cme gy kezddik: Dixit Algorithmi (Ezt

    mondja al-Hvrizmi:). Innen eredt a latin algoritmus sz, ami aztn sztterjedt a tbbi eurpai nyelvben is.

    A legrgibb ismert nem trivilis algoritmus az euklidszi algoritmus, ami kt egsz szm legnagyobb kzs osztjt

    hatrozza meg. Specilis algoritmustpusok az approximcis algoritmusok (kzelt eljrsok), a vletlen algoritmusok, a

    genetikus algoritmusok (fejldsi lehetsggel), s a moh algoritmusok.

    Az algoritmusok nem kizrlag matematikai s informatikai jelensgek:

    Folyamat Vgrehajt Algoritmus Tipikus utasts

    Kalcssts Pk Recept Vegyl 500 gramm lisztet /

    Nyjtsd ki a tsztt

    Dallam lejtszsa nekes, zensz Hangsorozat

  • 7/27/2019 PHP Jegyzet

    9/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    9

    Mobiltelefonls Hv Hasznlati utasts Nyomd meg a # gombot

    Rdi sszeszerelse Rdiszerel Kapcsolsi terv s szerelsi

    tmutat

    Ksd ssze a T1 tranzisztor

    bzist a T5 kollektorval

    Kasszrozs a boltban Pnztros Hasznlati utasts rd be a 237,37-ot

    A fogalom pontostsa, vltozatai

    I. problma: terv s vgrehajts

    Az algoritmus ltrehozsnak els lpse ltalban egy cl kitzse, amit egy problma vetett fel. Ezutn el lehet kezdeni

    megalkotni azt az algoritmust, ami a problmt megoldja, vagyis adott kezdllapotokbl, mindig az elrend llapotok

    valamelyikbe kerl.

    Plda:

    problma: van kt egsz szmunk, meg akarjuk tallni a legnagyobb kzs osztjukat, minl kevesebb szmolssal

    megolds: euklidszi algoritmus

    A megolds megtallshoz ltalban a tapasztalat, s a problma rszekre bontsa vezet. Ugyanakkor sok olyan feladat

    van, amire nem adhat algoritmus, ezeknl vagy nem vagyunk minden szksges informci birtokban, vagy ellentmonds

    tallhat a problma megfogalmazsban. Utbbi elkerlsben segthet, ha a problmt is formlisan specifikljuk.

    Nyitott problmkra nincs algoritmus

    Rengeteg szmtstechnika knyvben s feladatgyjtemnyben szerepel bevezet feladatknt olyasmi, mint ez: rjunk

    algoritmust egy levl postn val feladsra!

    A legfbb baj az ilyen feladatokkal, hogy nem oldhatak meg egyrtelmen. Ez persze nmagban vve nem baj. Valjban

    az a baj, hogy a feladat megoldshoz nem rendelkeznk elg informcival, pldul: hol a posta, s hol vagyok n,

    egyltaln milyen trgyakat kell figyelembe venni az odajutshoz stb.

    II. Problma: Rszletessg s egyrtelmsg elemi lpsek

    Ha adott egy problma(osztly), amelynek megoldsra eljrst szeretnnk adni, nem rt tisztzni, milyen krltekinten

    kell az eljrst megtervezni, mennyire legyen rszletes a megadott recept. Ez fgg az adott szitucitl. Pldul ha egy

    kisgyermeket kldnk a postra feladni a levelet, akkor esetleg az eljrs rszeknt a lelkre ktjk: ha aututat kell

    kereszteznie, okvetlenl a zebrt hasznlja, nehogy tszaladjon az ttesten!

    Kpzeljk csak el megint, hogy az iskolban vagyunk, s az informatikatanr feladja a kvetkez feladatot: rjunk

    algoritmust egy levl postn val feladsra! Mi van, ha egy megold csak annyit r megoldsknt: Egyszeren adjukpostra a levelet! Mivel, ha e feladatot csak nmagban nzzk, nincsenek vilgosan megfogalmazott kritriumok arra,

    hogy mi szmt algoritmusnak, azaz mikor fogadhat el egy megolds, bizony ezt az egyszer s hasznlhatatlan vlaszt is

    el kell fogadnunk. Ez a vlasz ugye tl egyszer. De nem fogalmaztuk meg, milyen mlysgben kell az algoritmust

    megkonstrulnunk, azaz mik azok az elemi lpsek, amelyekbl mint egy puzzle, ssze fog llni az algoritmus. Persze nehz

    elkpzelni, hogy egy-egy tanul ilyesfle algoritmusokat r majd (hacsak nem viccbl):

    * 1). lljunk fel a szkbl;

    * 2). Vegynk llegzetet;

    * 3). Forduljunk az ajt fel;

    * 4). Vegynk llegzetet megint;

  • 7/27/2019 PHP Jegyzet

    10/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    10

    * 5). Tegyk a keznket a kilincsre.

    *

    * 1023). Tegyk a keznket a posta bejratnak a kilincsre;

    * 1024). Vegynk llegzetet;

    * stb.,

    de ezeket a tl bonyolult, s a problma megoldsa szempontjbl alapveten irrelevns, flsleges lpseket tartalmaz

    megoldsokat is el kell fogadnunk megoldsknt.

    Helyeseljk e feladat kitzst az algoritmus kznapi fogalmnak pontatlansgra val rmutats, azaz pp a fent vzolt

    problematika bemutatsa okbl s cljbl, de termszetesen helytelen, ha a tanulk megoldsait valamilyen ltalunk

    jnak gondolt, elegend pontossg megoldshoz mrve akarjuk rtkelni.

    Egy megfelel egyrtelmsggel megfogalmazott problmt akkor oldottunk meg, ha elszr rgztjk, milyen elemi

    lpseket engednk meg, s ezutn konstrulunk eljrst. Ez az eljrs olyan utastssorozat, amelynek minden eleme egy-

    egy megengedett elemi lps. Egy msfle felfogsban azt is mondhatjuk: egy algoritmust mindig egy adott nyelven kellmegfogalmaznunk, melyet elre rgztennk kell; ez nem ms, mint az elemi lpsek neveibl mint szavakbl sszetett

    mondatokbl ll nyelv. Lsd mg absztrakt automata.

    ltalban feltesszk az elemi lpsekrl, hogy

    * fggetlenek, egyik sem llthat ssze pldul nhny ms lps egymsutnjaknt;

    * relevnsak, azaz mindegyik lps legalbb egyszeri vgrehajtsa valban szksges a problma megoldshoz;

    * teljes rendszert alkotnak, azaz a problma megoldshoz szksges valamennyi elemi lpst felsoroltuk.

    III. Problma: Determinisztikus s nem determinisztikus eljrsok

    Egy igazn tipikus algoritmusnak nemcsak elre meghatrozott lpsekbl kell llnia, de a vgrehajts minden

    helyzetben egyrtelmen azt is meg kell hatroznunk, hogy az aktulis lps vgrehajtsa utn mi is legyen a kvetkez

    lps. Ez trivilisan hangzik, de lnyeges, hogy ezt egyrtelmen tegyk meg. Egy algoritmus nem tartalmazhat

    hatrozatlan lpseket: ha egy adott lps sorn tbbfle vgrehajtsi md merl fel, akkor is ki kell vlasztanunk

    valamelyiket, ha a tbbi md ezzel egyenrtk.

    Taln egy-kt pldn keresztl vilgosabb lesz. A szakcsknyvek gyakran tartalmaznak ilyen kitteleket: szzuk zls

    szerint, kb. 30 percig sssk. Az els utastssal mg nincs nagy baj, mert felttelezhet, hogy az telksztnek vagy a

    fogyaszt trsasgnak van meghatrozott zlse, s ennek fggvnyben a szs mrtke is meg van hatrozva. Ez az

    utasts felfoghat mint egy feltteles elgazs (if then do else do ): ha ssan szeretjk,

    bven szzunk, ellenben ne annyira. De krlbell 30 percig nos, ilyen a matematikban (a jelenlegi standard felfogs

    szerint) vgkpp nincs. Itt mr semmilyen, tbb-kevsb egyrtelmen eldnthet felttel sem szablyozza a stsidtartamt, lnyegben vletlen vlasztsi lehetsgnk van. Termszetesen a sssk amg j piros, ropogs nem lesz

    mr egy fokkal vilgosabb utasts, de egy matematikus szmra mg ez sem tkletes.

    A vletlennek a hagyomnyos algoritmuselmletben nincs szerepe, br manapsg a szmtstudomny algoritmusfogalma

    ilyen irnyba is bvlt. Egyelre annyiban maradunk, hogy egy "hagyomnyos" algoritmus nem tartalmazhat vletlen

    vlasztsi lehetsget: vagyis determinisztikus.

    Levonhatjuk s le is kell vonnunk a tanulsgot: ha egy problma nylt, nincs egyrtelmen megfogalmazva, nem mindenki

    ugyanazt rti rajta, akkor arra nem adhat algoritmus. Az algoritmus ugyanis a problma egyrtelm megoldsnak

    tmutatjt jelenti, ez beletartozik a definciba. Ha pedig mr a problma sem egyrtelm, akkor a megolds sem lehet az.

  • 7/27/2019 PHP Jegyzet

    11/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    11

    A hogyan ksztsnk kvt feladat egy lehetsges megoldsa:

  • 7/27/2019 PHP Jegyzet

    12/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    12

  • 7/27/2019 PHP Jegyzet

    13/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    13

  • 7/27/2019 PHP Jegyzet

    14/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    14

    A program futsa sorn elrkezhet egy olyan ponthoz, valamilyen felttelnek megfelelen tbb fle kimenetele lehet a

    program futsnak. Pl.: egy adat a rendelkezsnkre ll vagy nem. Ha ltezik az adat, akkor fut tovbb a feldolgozs, ha nem

    ltezik, akkor bekrjk a felhasznltl. A program teht feltteleket rtkel ki, s ennek megfelelen vltoztatja a

    viselkedst. Erre a clra hasznljk azifutastst a php nyelvben. Azifutasts kirtkeli a zrjelek kztti kifejezst. Ha a

    kifejezs rtke igaz, az utastshoz tartoz programrsz vgrehajtdik. Ha a kifejezs hamis, a blokk egyszeren figyelmen

    kvl marad. Ez teszi lehetv a programoknak (a programoznak), hogy dntseket hozzanak.

  • 7/27/2019 PHP Jegyzet

    15/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    15

    A felttel fogalmnl tisztzni kell, mi lehet a felttel. Felttel brmilyen kifejezs, amelyrl egyrtelmen eldnthet,

    annak igaz vagy hamis mivolta. Teht mai nap hmrsklete = 32 fok , ez egyrtelmen eldnthet igaz vagy hamis. A bert

    sz = szia ez is egyrtelmen eldnthet. Teht a programban egyrtelmen eldnthet feltteleket fogalmazunk meg.

    Nzznk egy pldt az ifutastsra.

    Programozsi alapok

    Felttelt hogyan runk php nyelven?if(felttel){

    }else{

    }gy mondjuk:

    Ha a felttel igaz akkor{ez a program kerl vgrehajtsra

    }klnben{

    ez a program kerl vgrehajtsra}

    Mirt kell a kapcsos zr jel?

    1:

    2: 3: Ruander program Az if utasts bemutatsra4: 5: 6: 13: 14:

  • 7/27/2019 PHP Jegyzet

    16/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    16

    Ebben a pldban az rzs vidm volt ez igaz, teht az utasts vgrehajtsra kerl. De mi van, ha szeretnnk a msik rzs

    rtkre is szeretnnk egy pr utastst vgrehajtani? Akkor az if utasts elsega kerl vgrehajtsra.

    Ebben a pldban az rzs rtke rossz teht a Rossz kedvem van! szveg rdik ki. gy egy elgazsnak kt kimenetele

    lehet egy igaz s egy hamis. Mit kell tennnk, ha ez az rzs vltoz tbb rtket vesz fel s azt szeretnnk kezelni. Akkor

    az if-else kiegszl egy elseifggal. Az elseifgbl tetszleges szmt lehet egyms utn rni, gy nagyon sok felttelnek

    lehet eleget tenni. Ez a szerkezet felel meg annak a megfogalmazsnak, hogy adott felttelhez tartoz programrsz fut le.

    1: 2: 3: Ruander, Az if utasts bemutatsra plda

    4: 5: 6: 16:

    17:

    felttel 1 => program 1

    felttel2 => program 2

    felttel 3 => program 3

    .

    .

    .

    .

    felttel n => program n

  • 7/27/2019 PHP Jegyzet

    17/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    17

    1: 2: 3: Ruander, az elseif utastsra egy plda4: 5: 6: 21:

    22:

    Ha az els felttel rtke hamis, a hozz tartoz programrsz nem kerl vgrehajtsra, ezutn a PHP megvizsglja az elseif

    kifejezs rtkt. Ha a kifejezs igaz, a hozz tartoz programrsz fut le. Vgl, ha egyik felttel sem igaz, az elseutni rsz

    kerl vgrehajtsra. Ha nincs szksgnk else gra, vagyis olyan programrszre, amely akkor hajtdik vgre, ha egyik

    felttel sem igaz, akr el is hagyhatjuk. Elfordul, hogy egy kifejezs (vltoz) rengeteg rtket vehet fel, pldul a hnap

    rtkei lehetnek a janur, februr, , december. Ezeknek az rtkektl fggen kell lefutnia szmos programnak. Erre

    ksztettk a switch utastst (program szerkezetet), amely egy sereg if utastst helyettest. Egy lnyeges klnbsget

    azonban meg kell emlteni a switchszerkezet kapcsn. Mg az elseifnl sok fle vltozt is lehetne vizsglni. Pldul.

    addig a switchnl csak egy vltoz klnbz rtkeit lehet megvizsglni.

    Programozsi alapok

    if ( felttel ){// ez a rsz akkor fut le, ha a felttel igaz

    }elseif ( msik felttel ){

    // ez a rsz akkor fut l e, ha a msik felttel igaz,// s minden elz felttel hamis

    }// itt m g tetszleges szm elseifrsz kvetkezhet

    else{// ez a rsz akkor kerl vgrehajtsra, ha egyik// felttel sem volt igaz

    }

  • 7/27/2019 PHP Jegyzet

    18/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    18

    Nzzk a switch utastst, egy kifejezst (vltozt) vizsgl a switchs az rtk szerint futtat klnbz kd rszleteket. A

    vltoznak egyszer tpusnak kell lennie (szm, karakterlnc vagy logikai rtk). A switch utastssal mr sokkal tbb

    lehetsgnk van, mint az elseifszerkezetnl. A webnl maradva lehet men kivlasztsra hasznlni, php lapok behvsra.

    Nzznk erre egy pldt, a szmok alapjn a ht napjait kell kirni.

    Programozsi alapok

    switch ($i) {case 0:

    echo "i egyenl 0";break;

    case 1:echo "i egyenl 1";break;

    case 2:echo "i egyenl 2";break;

    default:break;

    }

  • 7/27/2019 PHP Jegyzet

    19/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    19

    1: 2: 3: Ruander, a switch utastsra egy plda4: 5: 6:

    35: 36:

  • 7/27/2019 PHP Jegyzet

    20/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    20

    1: 2: 3: Ruander, a while ciklus bemutatsra plda 4: 5: 6: 14: 15:

    Ciklusok

    Ha egy tevkenysget tbbszr kell ismtelni, akkor hasznljuk a ciklust. A PHP nyelvi kszletben a whileutasts az amivel

    ciklust lehet szervezni. A ciklus addig fut ameddig a felttel igaz, ahogy hamiss vlik a felttel azonnal kilp a ciklusbl.

    FIGYELEM az a ciklus amelyik felttele sosem vlik hamiss az a vgtelen ciklus. Ez erforrs pazarl s sok

    kellemetlensghez vezet. Els pldnak nzznk egy egyszer ciklust.

    Az els, ami szembe tn ennl a ciklusnl, ha szmllt szeretnnk hasznlni, akkor neknk kell gondoskodni a szmllrl

    s rtknek nvelsrl. Ellenttben a forciklussal, ahol a szerkezet megkveteli a szmllt s annak inkrementlst. A

    msik, ami fontos ez egy ell tesztel ciklus, ami azt jelenti, hogy a felttelt a ciklus elejn rtkeli ki. Ezrt elmletileg

    elfordulhat, hogy egyszer sem hajtdik vgre, ha a felttel rgtn az elejn hamis.

    Programozsi alapok

    while ( f elttel ){// a sokszor ismtlend program rsz}

  • 7/27/2019 PHP Jegyzet

    21/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    21

    1: 2: 3: Ruander, do while ciklus plda4: 5: 6:

    14: 15:

    A msik fajta ciklus, ellenttben az elz whileciklussal ez egy htul tesztel ciklus. Ez azt jelenti, hogy legalbb egyszer

    lefut ez a fajta ciklus s a felttelt a vgn rtkeli ki, itt is akkor lp ki a ciklusbl, ha a felttel hamiss vlik. Ezt a tpus

    ciklust azrt hasznljuk, hogy a felttel igazz vlsig csapdba ejti a program futst. Rgebben ezt a tpust azrt

    hasznltk, hogy addig ismteljenek egy adat bekrst, ameddig a megfelel adatot be nem adja a felhasznl. Nzznk

    erre egy pldt.

    Programozsi alapok

    do{// vgrehajtand programrsz} while ( felttel );

  • 7/27/2019 PHP Jegyzet

    22/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    22

    1: 2:

    3: Ruander, 4: 5: 6: 12: 13:

    Ez a fajta ciklus meghatrozott szmszor fut le. Ezt a fajta ciklust akkor hasznljuk, ha elre tudjuk hnyszor kell lefutna s

    nem egy feltteltl fgg a ciklus futsa. Egy kezd rtket kell adni, aztn pedig gondoskodni kell arrl, hogy a ciklus lelljon

    vagyis egy befejez rtket kell megadni, majd gondoskodni kell a szmll nvelsrl. Nzznk erre egy pldt.

    Programozsi alapok

    for ( vltoz_hozzrendelse; felttel; szmll_nvelse){// a vgrehajtand programblokk}

  • 7/27/2019 PHP Jegyzet

    23/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    23

  • 7/27/2019 PHP Jegyzet

    24/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    24

    AdatszerkezetekHa bejv adatokat szeretnnk trolni a programozs sorn s ezekkel az adatokkal mveleteket szeretnnk vgezniakkor ezt az adatszerkezetek segtsgvel tudjuk megtenni. Az adatok a bennk trolt rtkek stabilitsa alapjn ktcsoportba szoktk osztani:1. Konstansok: az adat ltrehozstl egszen a program befejezsig ugyanaz maradaz rtke.2. Vltozk: matematikai s egyb mveletek segtsgvel a program brmely rsznmegvltoztathat az rtkk.Vltoz

    A vltoz nem ms, mint egy nvvel elltott terlet a szmtgp memrijban. Azt, hogy mekkora ez a terlet, azt aprogramozsi nyelv tpusai hatrozzk meg. Jellemzje tovbb, hogy mindig van valamilyen rtke ha mi nemadunk neki, null rtk.A vltozkat szerkezetk alapjn a kvetkez kt nagyobb csoportba oszthatjuk:1. Elemi tpus: amelyek tovbbitpusokra nem bonthatk2. sszetett tpus: amelyek egyszer tpusokbl llnak ssze valamilyen logikai egysgg.Elemi tpusok1. Egsz tpusok: az egsz szmok trolsra hasznljk ket. Nyelvtl fggen klnbz mretek lehetnek.Pldul 1, 2, 4 vagy 8 bjtosak.2. Vals tpusok: tizedes trtek trolsra hasznljk, a szmbrzolsi pontossgban klnbznek. Mretkprogramozsi nyelvtl fggen 4, 8 bjt3. Logikai tpus: a fontosabb logikai mveleteket rtelmezik rajtuk (konjunkci, negci, diszjunkci, stb.) rtkkktfle lehet: igaz vagy hamis.

    4. Karakter tpus: egyetlen karakter ASCII kdjnak trolsra alkalmas tpus.

  • 7/27/2019 PHP Jegyzet

    25/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    25

    Vltozk a php ben.

    A vltozk egy dollrjelbl ($) s egy tetszlegesen. vlasztott nvbl tevdnek ssze. A nv betket, szmokats alhzs karaktereket (_) tartalmazhat (szmmal azonban nem kezddhet!), szkzket s ms karaktereket,

    amelyek nem szmok vagy betk, nem tartalmazhat. me nhny rvnyes vltoznv:$osszeg;$veg_osszeg;$szamlalo;

    Ne feledjk, hogy a pontosvessz (;) a PHP utasts vgt jelzi, gy az elzekben a pontosvessz nem rsze avltozk nevnek.Amint ltjuk, rengeteg fle nevet adhatunk vltozinknak, br a csak szmokbl ll vltoznevek nemszokvnyosak. Vltoz ltrehozshoz (deklarlshoz, vagyis bevezetshez) egyszeren csak bele kell rni azta programunkba. Ltrehozskor ltalban rgtn rtket is szoktunk adni a vltoznak.$szam1 = 8;$szam2 = 23;Itt kt vltozt hoztunk ltre s a hozzrendel mveletjellel (=) rtket is adtunk azoknak. Az rtkadsrl

    bvebben a Mveletjelek s kifejezsek cm rszben tanulunk, az ra ksbbi rszben. Miutn rtket adtunkvltozinknak, gy kezelhetjk azokat, mintha maguk lennnek az rtkek. Vagyis a fenti pldnl maradvaa ltrehozs utn rt

    print $szam1;

    hatsa megegyezik a

    print 8;

    hatsval, feltve, hogy a $szam1 vltoz rtke 8 maradt.

    Dinamikus vltozk

  • 7/27/2019 PHP Jegyzet

    26/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    26

    Vltozt teht gy hozunk ltre, hogy egy dollrjel utn rjuk a vltoz nevt. Szokatlan, m hasznos, hogy avltoz nevt is trolhatjuk vltozban. Teht ha az albbi mdon rtket rendelnk egy vltozhoz$felhasznalo = "Anna";az megegyezik azzal, mintha ezt rnnk:$tarolo = "felhasznalo";$$tarolo = "Anna";

    A $tarolo vltoz a "felhasznalo" szveget tartalmazza, ezrt a $$tarolo-t gy tekinthetjk, mint egy dollrjelet,melyet egy vltoz neve kvet ($tarolo), a $tarolo viszont ismt csak egy vltoz, amit a PHP a vltoz rtkvelhelyettest, vagyis "felhasznalo"-val. Teht a fenti kifejezs a $felhasznalo-val egyenrtk.

    Ha egy dinamikus vltozt egy karakterlncon bell szeretnnk kirni, az rtelmeznek nmi segtsget kelladnunk. Az albbi print utasts hatsra$felhasznalo = "Anna";$tarolo = "felhasznalo";print "$$tarolo";a bngsz nem az "Anna" szveget jelenti meg, mint ahogy vrnnk, hanem kirja a dollrjelet, majd a"felhasznalo" szveget, vagyis sszessgben azt, hogy "$felhasznalo". Ha egy vltozt ketts idzjelek kztesznk, a PHP szolglatkszen beilleszti annak rtkt.A mi esetnkben a PHP a $tarolo karaktersorozatot a "felhasznalo" szvegre cserlte, az els dollrjelet pedig a

    helyn hagyta. Annak rdekben, hogy egyrtelmv tegyk a PHP szmra, hogy a karakterlncon bellivltoz egy dinamikus vltoz rsze, kapcsos zrjelbe kell tennnk. Az albbi kdrszlet print utastsa$felhasznalo = "Anna";$tarolo = "felhasznalo";print "${$tarolo}";mr az "Anna" szveget rja ki, ami a $felhasznalo nev vltoz rtke.

  • 7/27/2019 PHP Jegyzet

    27/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    27

  • 7/27/2019 PHP Jegyzet

    28/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    28

    Ha a vltoz a vdr, akkor a tmb az iratszekrny, teht olyan trol, amelyben sok-sok elemet trolhatunk. Atmb azonos tpus vltozk listja. Tbb vltozt tartalmaz, amelyeket szmok vagy karakterlncoksegtsgvel azonosthatunk, gy a klnbz rtkeket egyetlen nvvel trolhatjuk, rendezhetjk s rhetjk el.Termszetesen ha t rtket kell trolnunk, megadhatunk t vltozt is. Akkor mirt j tmbt hasznlnivltozk helyett? Elszr is azrt, mert a tmb rugalmasabb adatszerkezet. Lehet benne kt vagy akr ktszzrtk s ennek elrse rdekben nem kell tovbbi vltozkat ltrehozni. Msodszor, a tmbk elemeitknnyedn kezelhetjk egysgknt is. Ha akarjuk, vgighaladhatunk a tmbn egy ciklussal vagy elrhetjk azelemeit egyenknt. Lehetsgnk van a tmbt rendezni szm szerint, sztri rendezs szerint vagy sajtrendezelv alapjn. A tmb elemeit az index segtsgvel knnyen elrhetjk. Az index lehet szm, de akrkarakterlnc is. Alaprtelmezs szerint a tmbket szmokkal indexeljk, mgpedig gy, hogy az els elemindexe 0. Ebbl az kvetkezik, hogy az utols tmbelem indexe mindig eggyel kisebb a tmb mretnl. Tehtaz t elem tmb utols eleme a 4-es index elem. Ezt ajnlatos mindig fejben tartani! Az albbi tblzatban afelhasznalok tmbt lthatjuk. Figyeljk meg, hogy pldul a tmb harmadik elemnek indexe 2.

  • 7/27/2019 PHP Jegyzet

    29/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    29

    A programnl azt kell vgig gondolni, hogy a tblnak sorai s oszlopai vannak. Ez ismtld kiratsokat tartalmaz. Mivel a

    kirsok ismtldnek ezrt ehhez ciklus kell. Az oszlopokba szmokat r majd vltani kell, a sor vgt elrve s egy j sort kell

    elkezdeni rni. Ez azt jelenti, hogy kt ciklus is kell. Az 1. bra mutatja a gondolatmenetet. Ha az elz gondolat menetet

    sikerlt megrteni ,akkor mr csak azt kell kitallni, hogyan rjuk ki a szmokat. A mvelet egyszernek tnik, de mgsem

    az. Mindkt ciklusnak van egy vltozja s ezzel a kt vltozval kell egy egyszer matematikai mveletet csinlni. (+, -, *, /)

    1. bra

    1 2 3

    4 5 6

    7 8 9

    10 11 12

    13 14 15

  • 7/27/2019 PHP Jegyzet

    30/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    30

  • 7/27/2019 PHP Jegyzet

    31/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    31

  • 7/27/2019 PHP Jegyzet

    32/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    32

  • 7/27/2019 PHP Jegyzet

    33/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    33

  • 7/27/2019 PHP Jegyzet

    34/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    34

  • 7/27/2019 PHP Jegyzet

    35/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    35

  • 7/27/2019 PHP Jegyzet

    36/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    36

  • 7/27/2019 PHP Jegyzet

    37/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    37

  • 7/27/2019 PHP Jegyzet

    38/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    38

  • 7/27/2019 PHP Jegyzet

    39/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    39

  • 7/27/2019 PHP Jegyzet

    40/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    40

  • 7/27/2019 PHP Jegyzet

    41/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    41

  • 7/27/2019 PHP Jegyzet

    42/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    42

  • 7/27/2019 PHP Jegyzet

    43/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    43

    Fggvny ltal visszaadott rtk

    A fggvnyben megrt program, talakt elvgzi a dolgt, majd egy rtkkel vissza tr.

    Function tulajdonsag_keres($tulajdonsag){i:=1Ciklus amg T[i]$tulajdonsag

    i:=i+1Ciklus vgereturn $i

    }

    rtk visszaads

  • 7/27/2019 PHP Jegyzet

    44/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    44

    Php-ban a fggvny

    Elszr definiljuk a fggvnyt

  • 7/27/2019 PHP Jegyzet

    45/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    45

    Szorzs fggvnyt ksztsnk

    Elszr definiljuk a fggvnyt

  • 7/27/2019 PHP Jegyzet

    46/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    46

    Ksztsnk el egy sajt email cmetellenrz fggvnyt.

    Function email_ellenorzes($ email_cim){i:=1Ciklus amg T[i]$tulajdonsag

    i:=i+1Ciklus vgereturn $i

    }

  • 7/27/2019 PHP Jegyzet

    47/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    47

    A php fggvnyeirl rszletesebben olvashatunk a fggvny mellkletben, ahol a funkci sszefoglal olvashat s rszletes

    lers majd egy-egy pldval illusztrljuk a fggvny mkdst. A fggvnyeket tbb csoportra lehet osztani, ami segti a

    fggvnyek rendszerezst s megrtst.

    A PHP String fggvnyei .strpos(string $amiben_keresek, mix keresett_karakter)

    visszatr a keresett karakter pozicijval.

    substr(string $szveg, int $kezod_pozicio, int $hossz)visszatr a rsz szveggel.

    strlen(string $szveg)visszatr a szveg hossz val.

    str_replace(mix keresett_karakter(ek), mix $amire_cserlem, mix $amiben_keresem)visszatr az talaktott szveggel.

    strtoupper(string$szveg)visszatr a nagybets s zveggel.

    strtolower(string $szveg)visszatr a kisbets szveggel.

    str_word_count(string $szveg, int formtum, string karakterlista)

    vissza adja a karakterek szmt.

  • 7/27/2019 PHP Jegyzet

    48/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    48

    A honlapok egyik fontos clja a kommunikci az emberekkel, vevkkel. Ehhez nem csak a szolgltatnak (kzlni akarnak)

    kell generlni tartalmakat, hanem krdseket tesz fel a felhasznlnak, amelyekre vlaszokat vr. A krdsek

    megvlaszolsa rlapokon keresztl trtnik. Ezeknek az rlapoknak a programozst vesszk a kvetkez oldalakon. A php

    rendszer tmbkn keresztl valstja meg ezeknek az adatoknak a kezelst. Ezeket a tmbket rendszer tmbknek

    nevezzk, nem tancsos ilyen nven ltrehozni vltozt. AZ elkldtt zenetek (POST) a php a $_POST tmbn keresztl

    kezeli, ez maximum 8Mbyte adatot tud fogadni, ezt az rtket a php.ini belltsokat tartalmaz file-ban a post_max_size

    rtkkel lehet szablyozni (a 8 Megabyte egy alaprtelmezett bellts).

    A rlap kezels.

  • 7/27/2019 PHP Jegyzet

    49/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    49

    HTML oldali kvetelmnyei is vannak, ahhoz hogy a php fel tudja dolgozni az adatokat. Az egyik kvetelmny a HTML Form

    deklarcijban a method attribtum rtke POST legyen. A beviteli mezk deklarcijnl a name attribtum

    szerepeljen s rtke legyen, az rtkre vonatkoz megktsek a kvetkezek:

    nem szerepelhet benne szkz, helyette alhzs karaktert hasznljunk ( _)

    lehetleg kerljk az kezetes karaktereket

    ne hasznljuk a kvetkez karaktereket @, %, &, | \, /, [,],{,},

    A PHP oldalba bele rt HTML kd a bngszben jelenik meg, ami a kliens oldalt jelenti. A kliens oldalon bert szveget,szmot, file-t elkldi a bngsz a szervernek. Majd a PHP program a szerver oldalon kezeli a kapott informcit.

    Az brn a post metdus leegyszerstett menett

    lthatjuk. A kliens oldalon valaki megnyomja az elklds

    gombot, az adatok a http protokollt ler szabvnyban

    meghatrozott mdon elkldsre kerlnek a bngszbl a

    szerver fel. A http (http 1.1 es szabvny RFC 2616)

    szabvny egy kt elemt rviden lerjuk. Ttelezzk fel, hogy

    van kt input elemnk (tag) az egyik name azonostja nev

    lesz mg a msik azonostja nem lesz. Ezeket az adatokat

    szeretnnk elkldeni a bngszbl a szerver fel.

    POST / valamilyen.php HTTP/1.1Host: pelda.com

    Content-Type: application / x-www-form-urlencoded

    Content-Length: 17

    nev=FLP&nem=ferfi

    A fenti blokkot kldi el a szerver fel a bngsz. Ha a fenti blokkot megnzzk, akkor az egyik eleme a fejlc amimegmondja, hogy POST metdusrl van sz, mely oldalon keresztl s milyen protokollon, a Host (kiszolgl, szerver) cmtis tartalmazza a msodik sorban. Ez a kt adat azonostja a clt. A tartalomra vonatkoz informcikat a kvetkez kt sortartalmazza. Content-Type: ez azt mutatja meg milyen tpus adatot kld a bngsz jelen esetben ez egy url encoded (urlkdolt = azonosito=ertek prosok & jellel elvlasztva a szkzt %26 al cserli ki) informci. Content-Length: ez azelkldtt teljes szveg hosszt jelenti (nem csak az adatokt, ebben az azonost s az egyenlsgjel s az & jel is bennevan) Ha errl tbb informcit szeretnnk, vagy figyelni szeretnnk ezeket az zeneteket, akkor fel lehet telepteni a

    LiveHTTPHeaders bepl programot a Mozilla/Firefox alkalmazsba.

    Az rlap kezelshez szksgeseszkzk

    A html kdban a form elemei s az rlaphoz szksges eszkzk.

    - Fontos a method attributum post tpus legyen.- A name attributumot kell kitlteni, ahhoz hogy a php azonostani tudja az adatot.

  • 7/27/2019 PHP Jegyzet

    50/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    50

    A php programban a $_POST[azonosto] kifejezssel lehet elrni a bngsz ltal elkldtt adatokat. Ezt elmenthetjk

    adatbzisba (ennek menetrl ksbb lesz sz) elmenthetjk file-ba, ki lehet rni valahov. A din bemutatott kd

    egyszeren a bert adatokat visszarja a bngsz ablakba. Minden input tpust lehet kezelni ezzel a mdszerrel kivtel a file,

    ha file-t akarunk feltlteni, arra egy msik rendszer tmb van. A $_POST egy asszociatv tmb. Nzzk a $_POST tmbn

    keresztl kezelhet input tpusokat: TEXT, HIDDEN, PASSWORD, RADIO, CHECK, SUBMIT. A felsorolt tpusok megjelennek a

    $_POST tmbben. Figyelem a password csak a felhasznl ell rejti el az informcit, a hln szabadon elolvashat

    szvegknt megy. A HIDDEN mezbe lehet rakni olyan rtkeket, amelyeket nem szeretnnk a felhasznlnak megmutatni,

    de szksg van az adatra a knnyebb vagy egyrtelm azonosts miatt. Pl.: Egy termk kdjt szeretnnk elkldeni. A

    CHECK mezt msknt kell kezelni. Ha ki van piplva csak s csakis akkor jelenik meg a $_POST tmbben. Ha nincs kipiplva,akkor nem jelenik meg a $_POST tmb elrhet elemeknt, erre figyelni kell.

    A PHP az elkldtt adatokat,a$_POST tmbn keresztl dolgozza

    fel.

    A html kdban a form elemei s az rlaphoz szksges eszkzk.

    Ez alapjn r ja ki az rlapra a bngszben bert rtket.

  • 7/27/2019 PHP Jegyzet

    51/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    51

    A CHECK box kezelse

  • 7/27/2019 PHP Jegyzet

    52/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    52

    A bngsz cmsorba bert cm egy krs ezt a krst GET krsnek hvjuk. A Kliens kezdemnyez egy krst a szervertl,

    majd a szerver vlasza vagy az eredmny (egy honlap) vagy nem tallta a krt oldalt, file-t. 404 es hiba, vagy nem lehet

    hozzfrni 403 as hiba. Ezt a krst automatikusan kezeli a bngsz, elkldi a szervernek a szerver vlaszol (jelen esetben a

    php program lefut), de amit a krdjel s az & jel utn rtunk azt a php vel tudjuk kezelni, ezzel pedig a krs eredmnyt

    lehet befolysolni. Erre a php a $_GET rendszer tmbt definilta.

    Hogyan lehet kezelni a Bngszcmsorba bert URL-t

    Ezzel a mdszerrel egyi k oldal t adhat adatokat a kvetkez oldalnak . Van erre msmdszer , de ez elg egyszeren kezelhet.

    FIGYELEM Biztonsgi kockzatot jelent!!!

  • 7/27/2019 PHP Jegyzet

    53/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    53

    A $_GET rendszertmb egy asszociatv tmb, amellyel el tudjuk rni a cmsorba bert paramter rtk prokat. Ezzel a

    megoldssal lehet egy oldalnak tadni paramtereket. Nzznk erre pldt.

    A fenti pldban egy men linkre kattintva, ami egy link http://pelda.hu/index.php?content=t2 . A linkben a krdjel utn

    szerepl paramter alapjn eldnti, hogy melyik lapot hvja be a program. Ezzel a mdszerrel brmilyen krst befolysolni

    lehet. FIGYELEMide brki be tud rni brmit gy ez nem biztonsgos. Ellenrzs nlkl ne fogadjunk el adatot innen!!!

    Az URL ben szerepl paramterek srtkek kezelse

    $_GET tmb

    p1 ertek1

    p2 ertek2

    http://www.valami.hu?p1=ertek1&p2=ertek2

  • 7/27/2019 PHP Jegyzet

    54/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    54

    Egyre tbb honlapon lehet file-okat feltlteni, kpeket, videkat. Ennek a kezelse is megoldhat php programmal. A

    httrben a http protokoll PUT metdusa ll. A definci szerint az albbihoz hasonl adat csomagot kld a bngsz:

    Content-Disposition: form-data; name="myfile"; filename="ad.gif"

    Content-Type: image/gif

    [ooh -- file contents!]

    Vigyzni kell mert a fogad szerveren meghatrozhat a feltlthet (fogadhat) file-ok mrete. Errl tjkoztatni kell afelhasznlt s j ha ezt kliens oldalon kezeljk valahogyan. A php.ini ben az upload_max_filesize bellts az amivel ezt a

    maximlis mretet befolysolhatjuk.

    A feltltst a bngsz kezdemnyezi, a bngsz kldi a file-t a http protokoll szablyai szerint, a szerver fogadja s egy

    temporlis knyvtrba rakja a feltlttt file-t.

    File feltlts kezelse

  • 7/27/2019 PHP Jegyzet

    55/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    55

  • 7/27/2019 PHP Jegyzet

    56/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    56

    Az adatbzis (tbbnyire) strukturlt adatok sszessge, amelyet adatok trolsra, lekrdezsre (adatkinyers) s

    szerkesztsre hasznlunk. Az adatbziskezelk, amelyek az adatbzisokat mkdtetnek s krnyezetet biztostanak a

    kezelshez. Az adatbzis kezel amelyet a php hoz hasznlunk, hogy az dinamikusan jelentse meg az adatokat, a mysql

    lesz. A mysqlegy relcis adatbzis kezel ( volt rgebben hls adatbziskezel s hierarchikus adatbziskezel erre plda

    a windows registry adatbzisa) Ami mg fontos s sokat segtett a npszersgnek, hogy ingyenesen hasznlhat.

    A relcis adatbzis kezelk az adatokat tblzatos formban troljk. (ez hasonlt az excel tblzataihoz ) a legtbbesetben nem egy tblban vannak az adatok. Pldul az egyikben a vevk adatai vannak a msikban az eladni kvnt

    termkek. A tbla egy sort recordnak nevezzk. Egy oszlopt meznek. (angolul field) Egy record vagy sor teht tbb

    mezbl llhat. Ha a tblban a vevk adatait troljuk, akkor egy vev egy sor, a sort pedig felosztjuk tbb mezre gy

    troljuk a nevt egy msik mezben a cmt, harmadikban a telefonszmt.

    Az adatbzis tervezst bizonyos alapelvek szerint kell vgezni. Az els alapelv, hogy az ismtld informci (redundns

    adat) rossz, mivel helyet pazarol, valamint nveli a hibk s ellentmondsok elfordulsnak eslyt. A msodik alapelv,

    hogy az informci helyessge s teljessge fontos. Ha az adatbzis tves informcikat tartalmaz, az adatbzis alapjn

    kszlt jelentsek is tves informcikat fognak tartalmazni. Ennek kvetkeztben a jelentsek alapjn hozott dntsek

    tves informcikon alapulnak.

    A jl megtervezett adatbzisra a kvetkezk jellemzek:

    * Az informcikat tematikus tblkba rendezi, gy cskkenti az adatok ismtldst.

    * Megvannak a tblkban tallhat informcik szksg szerinti egyestshez szksges informcik.

    * Segti az informcik pontossgnak s teljessgnek megrzst.

    * Megfelel az adatfeldolgozsi s jelentsi ignyeinek.

    Adatbzis kezels bevezetse

    Nv Telefon Beoszts

    Fekete Jzsef 06-20-5555555 Igazgat

    Kiss Irn 06-30-6666666 Igazgat-helyettes

    Az adatokat tblzatos formban troljuk. Ezeket tblknak fogjuk nevezni. Azoszlopoknak nevet adunk (oszlopfejlc). Az adatokat soronknt kezeljk. (record) Azadatok trlse gy trtnik, hogy egyszerre csak egy egsz sort lehet trlni.

    Dolgozok

  • 7/27/2019 PHP Jegyzet

    57/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    57

    Az adatbzis ban bizonyos elvek szerint vannak az adatok trolva, ezeket az elveket fel kell hasznlnunk a tervezs sorn.

    Nem egy tblban gyjtnk minden adatot, de milyen elvek ments daraboljuk fel tblkba az adatokat? Egy tblbl

    trlni csak sort lehet, mivel csak ezt lehet tenni ezrt a din ltott problmt csak gy tudjuk megoldani, ha kett vgjuk a

    jelenlegi tblnkat s kt tblban troljuk az adatainkat. Az egyik a dolgozok tbla (kezetet tbla nevekben ne

    hasznljunk) a msik a beosztasok tbla. Ez eddig j , de honnan tudja az adatbzis kezel , hogy a kt tbla adatai

    sszetartoznak.

    Az brn ltott kzs elem egy olyan mez, amelyet meg kell ismtelni mindkt helyen. Ez az oszlop egy mestersgesen

    bevezetett azonost lesz, a neve elsdleges kulcs. Az elsdleges kulcsot a beoszts tblba rakjuk. Az elsdleges kulcs olyan

    oszlop, amellyel egyedileg azonosthatunk minden egyes sort. Az elsdleges kulcs jellegzetessgei, egyedi minden sorhoz

    csak egy ilyen rtk tartozik. A mr kitrlt elsdleges kulcsot soha tbbet nem kapja meg egy msik sor.

    Adatbzis kezels anomlikMi trtnik ha az elz tblbl, kitrlnk egy sort, de a beosztsra szksgnk van.

    Mit lehet tenni ilyenkor ?

    Kln kell vlasztani a foglal kozst a szemlytl. De hogya n tudjuk megmondani,hogy kihez melyik beoszts tartozik?

    Nv Telefon

    Fekete Jzsef 06-20-5555555

    Kiss Irn 06-30-6666666

    Beoszts

    igazgat

    Igazgat-helyettes

    Dolgozok Beosztasok

    Kovcs Jzsef | 06-20-555-555 igazgatKell egy kzs elem

  • 7/27/2019 PHP Jegyzet

    58/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    58

    Ezek utn az adatbzisban mr ssze lehet kapcsolni a kt tblt a kzs mezk alapjn. Ha elmegy egy ember s kitrljk

    azt a sort(recordot) , ami az adatait tartalmazza, akkor megmarad a beosztsa a beoszts tblban.

    Adatbzis kezels Egyedi azonostVezessnk be egy egyedi azonostt a beoszts el, s azt troljuk adolgozok

    tblban. Ezt hivatkozsnak nevezzk. Ha gy trlnk a Dolgozok tblbl trlnkakkor nem veszik el a beoszts.

    Dolgozok Beosztasok

    Id Beoszts

    1 Igazgat

    2 Igazgat-helyettes

    Nv Telefon Beosztas_id

    Fekete Jzsef 06-20-5555555

    1

    Kiss Irn 06-30-6666666

    2

  • 7/27/2019 PHP Jegyzet

    59/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    59

    Els neve Structured English Query Language(SEQUEL) volt az elnevezs, s ezt rvidtettk le. Az SQL alapjait az IBM-nl

    fektettk le, mg az 1970-es vekben. Elvi alapot a relcis adatmodell szolgltatott, amit Edgar F. Codd hres 12

    szablyval rt le elszr, 1970-ben. Az IBM, az Oracle s ms gyrtk is rdekeltek voltak egy szabvnyos lekrdez nyelv

    kifejlesztsben, amivel a relcis adatbzisok programozhatk. Az ipargi sszefogssal ltrejtt ANSI NCITS (National

    Committee on Information Technology Standards) H2 csoport lerakta az SQL alapjait. A szabvnyt az ANSI (Amerikai

    Nemzeti Szabvnygyi Intzet American National Standards Institute) 1986-ban, az ISO (Nemzetkzi Szabvnygyi

    Szervezet International Organization for Standardization) 1987-ben jegyezte be. Az els vltozatot SQL86 nven is szoktk

    emlegetni.

    Az SQL-t folyamatosan tovbbfejlesztettk, s ngy jelents kiadst klnbztetnk meg:

    SQL86

    SQL89

    SQL92

    SQL99

    Az els kivtelvel mindegyik szabvny tbbszint megvalstst tesz lehetv a gyrtknak (belp szint, kzepes vagy

    teljes). ltalban a ksbbi szabvnyok belp szintjei az elz szabvny teljes szintjeinek felelnek meg.

    Az SQL nyelvet kt rszre oszthatjuk, DDL (Data Definition Language) Adat definicis nyelv. s DML (Data Manipulation

    Language) Adat manipulcis nyelv. Mi els sorban a DML el foglalkozunk. De rviden ttekintjk az adat definicis rszt.

    Az adat definicit hasznljuk az adatbzis , a tblk , indexek ltrehozshoz.

    Adatbzis kezels Nyelve az SQLStandard Query Language, ezt a nyelvet az IBM fejlesztette ki. Az adatbzis kezels

    standard megoldsait gyjti ssze.

    -Adatokat be lehet irni => INSERT-Adatokat ki lehet trlni => DELETE-Adatokat modstani kell => UPDATE

    -Adatokat levlogatni => SELECT (Ez lesz a l egfontosabb s legnehezebb)

  • 7/27/2019 PHP Jegyzet

    60/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    60

    CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name{ LIKE old_tbl_name | (LIKE old_tbl_name) }

    create_definition:col_name column_definition

    | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)[index_option] ...

    | {INDEX|KEY} [index_name] [index_type] (index_col_name,...)[index_option] ...

    | [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY][index_name] [index_type] (index_col_name,...)[index_option] ...

    | {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (index_col_name,...)[index_option] ...

    | [CONSTRAINT [symbol]] FOREIGN KEY[index_name] (index_col_name,...) reference_definition

    | CHECK (expr)

    column_definition:data_type [NOT NULL | NULL] [DEFAULT default_value][AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY][COMMENT 'string']

    [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}][STORAGE {DISK|MEMORY|DEFAULT}][reference_definition]

    select_statement:[IGNORE | REPLACE] [AS] SELECT ... (Some legal select statement)

    CREATE TABLE Szamla (Szamlaszam NUMERIC(24),

    Tulajdonos VARCHAR(60),Nyitas DATE,Allapot VARCHAR(1),

    PRIMARY KEY (Szamlaszam));

    Ltrehozs kulcs szava : CREATE

    Mdosts kulcsszava : ALTER

    Trls kulcs szava: DROP

    Ezeket ltalban egyszer az adatbzis ltrehozsakor futatjuk le. Nzznk egy pldt a tblk ltrehozshoz.

    CREATE

    A Create kulcssz utn azt kell megadni mit hozunk ltre.

    (lehet indexet, nzetet, tblt) most egy tblt hozunk ltre. A

    create table parancs utn a tbla nevt kell megadni.

    Lehetleg kerljk a szkz s az kezetes karakterekhasznlatt. (lehetsg van r, de bonyoltja a kezelst). A

    mezknek nevk van s tpusuk, a tpushoz tartozik egy szm,

    ami maximlis hosszt jell. Az elsdleges kulcsot is meg lehet

    adni.

  • 7/27/2019 PHP Jegyzet

    61/91

  • 7/27/2019 PHP Jegyzet

    62/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    62

    ALTER TABLE tblanvADD COLUMN oszlopnv

    DROP [TEMPORARY] TABLE [IFEXISTS]

    tbl_name [, tbl_name] ...[RESTRICT | CASCADE]

    Ezzel a megoldssal lehet egy tblhoz oszlopot adni. Elsnek a tbla

    mdostst megad kulcsszt kell hasznlni ez az ALTER TABLE, utna a

    tbla nevt kell megadni, majd az oszlop hozzads kulcsszava az ALTER

    parancson bell az ADD COLUMNkulcssz.

    DROP

    A DROPkulcsszval az adatbzis objektumok jelen esetben a tbla

    teljes s vgrvnyes trlst kezdemnyezhetjk. Meg lehet adni

    itt is lehet az IF EXISTSkulcsszt hasznlni. Ha a tbla nem ltezik,

    akkor nem ad hiba zenetet. Lehet TEMPORARYtblt is trlni.

  • 7/27/2019 PHP Jegyzet

    63/91

  • 7/27/2019 PHP Jegyzet

    64/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    64

    INSERT INTO tbla_nv (mez1, mez2) VALUES('adat1', 'adat2' )

    INSERT INTO phonebook(phone, firstname, lastname, address)VALUES('+1 123 456 7890', 'John', 'Doe', 'North America')

    INSERT INTO tbla_nv (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

    INSERT INTO tbla_temp2 (mez_id)

    SELECT tbla_temp1.mez_order_id

    FROM tbla_temp1 WHERE tbla_temp1.mez_order_id > 100;

    Az INSERT utastssal egy mr ltez tblba lehet adatokat beszrni. Az INSERTutn meg kell adni a tbla nevt amibe

    adatot szeretnnk beszrni, majd a tbla mezit kell felsorolni s a VALUESkulcssz utn az adatokat kell megadni. Ennek

    az SQL utastsnak is sok lehetsge van ezeket j megismerni, hiszen a klnbz web helyeken az adatokat el kell trolni

    s majd ksbb vissza lehet keresni.

    Ez egy egyszer plda, arra hogyan lehet kt adatot beszrni, FONTOS : a szveges adatot aposztrfok kztt kell

    szerepeltetni, a szm adatokat aposztrf nlkl, a dtum adatokat fggvnyek segtsgvel lehet beszrni.

    A fenti plda egy egyszer beszrs. Nzznk olyan lehetsget, ahol tbb adatot lehet egyszerre beszrni.

    A vesszvel elvlasztott rszek egy-egy sort kpviselnek. gy lehet 3 sort egyszerre beszrni egy tblba, egy utastssal.

    Az INSERT utastst hasznlhatjuk egyik tblbl a msikba val ttltsre is. Lehet SELECT utastst hasznlni egy

    adatbeszrsnl, a SELECT utastsban lehet felttel is gy a tblba val ttltskor lehet szkteni az ttltend adatok

    krt.

  • 7/27/2019 PHP Jegyzet

    65/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    65

    Egy-tbla esetn a szintaxis:

    UPDATE [LOW_PRIORITY] [IGNORE] table_reference

    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...[WHERE where_condition][ORDER BY ...][LIMIT row_count]

    Tbb tbla esetn a szintaxis:

    UPDATE [LOW_PRIORITY] [IGNORE] table_referencesSET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...[WHERE where_condition]

    UPDATE

    Az UPDATEutastssal egy ltez tbla mr ltez adatt lehet trni. Az trs sorn meg kell adni a kulcs szt (UPDATE),

    majd mely tblban tallhat az adat, majd a SETkulcs sz utn azt a mezt (oszlopot), ahol tallhat a megvltoztatand

    adat, s hogy pontosan mely adatot szeretnnk megvltoztatni azt a WHEREkulcs sz utn megadott felttel dnti el.

    Adatbzis kezels UPDATEAdat modsts (Egy l tez adat modstsa)

    UPDATE Tblan v SET adatmez1=adat1, adatmez2 =adat2 WHERE felttel

  • 7/27/2019 PHP Jegyzet

    66/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    66

    UPDATE phonebook SET phone='+36 90 7777 777' WHERE firstname = 'John' andlastname= 'Doe' and address ='North Americ'

    UPDATE Table A,Table BSET Table A.text=concat_ws('',Table A.text,Table B.B-num," from ",Table B.date,'/')WHERE Table A.A-num = Table B.A-num

    ! Figyelem: Az UPDATE parancs WHERE feltttel nlkl, az oszlop sszes adatt trja!

    Nzznk egy egyszer pldt az UPDATEparancsra.

    Nzznk pldt a tbb tbls mdostsra:

    Van kt tblnk az egyik A, a msik B.

    Eredmny az A tblban

    Mez 1 Mez 2

    adat 1 adat 2

    adat 3 adat 4

    adat 5 adat 6

    A-num text1

    2345

    B-num Date A-num22 2003.01.08 2

    23 2003.05.26 324 2003.07.21 125 2009.01.01 526 2010.05.02 4

    A-num text1 24 from 2003.07.212 22 from 2003.01.083 23 from 2003.05.264 26 from 2010.05.025 25 from 2009.01.01

    UPDATETbla_neve

    SETMez1= adat33

    WHEREMez1= adat3

    Tbla neve

    Mez1 oszlopban kell valahol

    adat33-ra trni egy adatot.

    A WHERE felttel adja meg

    mely sorokban kell pontosan

    mdostani.

  • 7/27/2019 PHP Jegyzet

    67/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    67

    Single-table syntax:

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name[WHERE where_condition][ORDER BY ...][LIMIT row_count]

    Multiple-table syntax:

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]tbl_name[.*] [, tbl_name[.*]] ...FROM table_references[WHERE where_condition]

    Or:

    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]FROM tbl_name[.*] [, tbl_name[.*]] ...USING table_references[WHERE where_condition]

    DELETE

    Adatbzis kezels DELETEAdat trlse (Egy ltez adatsor trlse)

    DELETE FROM Tblanv WHERE felttel

  • 7/27/2019 PHP Jegyzet

    68/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    68

    ! Figyelem: Az DELETE parancs WHERE feltttel nlkl, az oszlop sszes adatt trli!

    DELETE FROM somelog WHERE user = 'jcole'

    A DELETE paranccsal a tbla meglv adatait lehet trlni. A kitrlt adatokat azrt vissza lehet hozni, de azrt az mr

    nagyobb szakrtelmet kvn. A DELETEparancs utn a tbla nevet kell megadni, mivel sorokat lehet csak trlni, ezrt nem

    kell oszlopot megadni, hanem a tbla nv utn a WHEREfelttelt kell megadni amely a trlend sorokra vonatkozik.

    A fenti plda a somelogtblban azokat a sorokat trli, ahol a useroszlop adata egyenl jcoleal.

  • 7/27/2019 PHP Jegyzet

    69/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    69

    SELECT

    [ALL | DISTINCT | DISTINCTROW ]

    [HIGH_PRIORITY]

    [STRAIGHT_JOIN][SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]

    [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]

    select_expr [, select_expr ...]

    [FROM table_references

    [WHERE where_condition]

    [GROUP BY {col_name | expr | position}

    [ASC | DESC], ... [WITH ROLLUP]]

    [HAVING where_condition]

    [ORDER BY {col_name | expr | position}[ASC | DESC], ...]

    [LIMIT {[offset,] row_count | row_count OFFSET offset}]

    [PROCEDURE procedure_name(argument_list)]

    [INTO OUTFILE 'file_name' export_options

    | INTO DUMPFILE 'file_name'

    | INTO var_name [, var_name]]

    [FOR UPDATE | LOCK IN SHARE MODE]]

    SELECT

    Select SQL krds

    Select meznv_1, meznv_2, meznv_3, meznv_4

    Meznv_1 Meznv_2 Meznv_3 Meznv_4

    Adat 1 Adat 2 Adat 3 Adat 4

    Adat 5 Adat 6 Adat 7 Adat 8

    A meznv felsorols a k ivlasztand oszlopokattartalmazza, ezek szrmazhatnak klnbz tblkbl.

  • 7/27/2019 PHP Jegyzet

    70/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    70

    SELECT * FROM tblanv

    SELECT * FROM tblanv, tblanv2

    SELECT netto+brutto as osszeg FROM tblanv

    SELECT length(mezo) FROM tblanv

    Plda egy egyszer SELECT utastsra.

    A SELECT parancs utn a csillag olyan mintha a tbla sszes mezjt felsoroltuk volna. A tbla sszes sort hozza ez a

    lekrdezs.

    Ha tbb tblt akarunk sszerakni, akkor a FROMkulcssz utn fel kell sorolni a tblaneveket, amelyeket ssze szeretnnk

    kapcsolni. Ha csak felsoroltuk a tbla neveket, minden kapcsol felttel nlkl, akkor az els tbla minden adatt a msik

    tbla minden adatval sszeprostja s egy DESCARTES szorzatot kapunk.

    Mveleteket is lehet vgezni a mezkkel, szm tpus mezket ssze lehet adni. A szveg tpus mezket is ssze lehet

    fzni. Az AS kulcssz utn lehet egy meznek nevet adni. Ha a mezkkel mveletet vgznk s nem adunk nevet az AS

    kulcssz utn, akkor a rendszer kirja a mezket mveletekkel egytt.

    Fggvnyeket is lehet hasznlni a SELECTlekrdezsekben. A length() fggvny egy szveg tpus mez hosszt adja meg.

    Select SQL krdsSelect meznv_1, meznv_2, meznv_3, meznv_4

    From tblanv_1, tblanv_2, .., tblanv_n

    M_1 M_2 M_3 M_4 M_5

    M_11 M_12 M_13

    Tblanv_1

    Tblanv_2

    A from kulcssz utn lehe t a tblaneveket rni akr tbbet istermszetesen csak olyan meznevet lehet szerepeltetni a meznvlistban amelyek a tblkban szerepelnek.

  • 7/27/2019 PHP Jegyzet

    71/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    71

    SELECT parancsban hasznlhat fggvnyek az albbi csoportokra oszthatak:

    Dtum s id fggvnyek

    Szveg fggvnyek

    Szm fggvnyek

    Tpus konverzis fggvnyek

    Opertorok

    Titkosts s tmrt fggvnyek

    Szveg keresst (FULL TEXT ) segt fggvnyek

    Informcis fggvnyek

    Bit fggvnyek

    Preczis matematikai fggvnyek

    Elgazs (folyamat befolysol) fggvny

  • 7/27/2019 PHP Jegyzet

    72/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    72

  • 7/27/2019 PHP Jegyzet

    73/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    73

    SELECT nev, fizetes FROM tblanv WHERE fizetes > 50000

    SELECT nev, fizetes, belepes_datuma FROM tblanv WHERE

    YEAR(belepes_datuma)= 2010

    A SELECTparancs egyik legfontosabb s leggyakrabban hasznlt eleme a WHEREfelttel, amellyel a tbla megjelen sorait

    lehet befolysolni, a felttel egy azonossgot vagy egy relcit (=, >, < ) tartalmazhat. Nzzk egy tblban, hogyan

    tudjuk a havi tvenezer forintnl tbbet keres szemlyeket kivlogatni.

    A fenti SQL minden sort hoz, amelyre igaz, hogy a fizetesoszlopban 50000 nl nagyobb szm van. Mivel csak a nevs a

    fizetesmezt adtuk meg a mezfelsorolsban ezrt csak ezt a kt oszlopot fogja megjelenteni.

    sszetett felttelt is lehet megfogalmazni a WHERE felttel utn s lehet itt is fggvnyeket hasznlni. Dtum tpusra

    felttelt csak fggvnyeken keresztl tudunk megfogalmazni.

    A fenti krdsnl a 2010 ben belpett dolgozk adatait jelentettk meg. Megjelenik a nevk, fizetsk, belpsi

    dtumukat. A WHEREfelttelben szerepl mezket nem ktelez felsorolni a mez felsorolsban.

    Select SQL krdsSelect meznv_1, meznv_2, meznv_3, meznv_4From tblanv_1, tblanv_2, .., tblanv_nW here felttel

    Meznv_1 Meznv_2 Meznv_3 Meznv_4

    1 Adat 2 Adat 3 Adat 4

    1 Adat 6 Adat 7 Adat 8

    2 Adat 10 Adat 11 Adat 12

    A where kulcssz utn felttelt vagy feltteleket lehet megadni. A felttel

    alapjn a felttelnek megfelel sorokat vlogatja le s adja visszaeredmnyl.

    FelttelMeznv_1 = 2

  • 7/27/2019 PHP Jegyzet

    74/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    74

    Az ORDER BY zradk a rendezsre vonatkozik, lehet tbb mezt is felsorolni. Ha tbb mezt sorolunk fel akkor az els

    mez szerint sorolja fel, majd a msodik mez szerint. Pl.: ORDER BYvaros, nev.

    A vrosokat felsorolja ABC sorrendben majd azon bell a neveket ABC sorrendben. Termszetesen lehet nvekv s

    cskken sorrendben is felsorolni az adatokat. Az ORDER BY meznv utn rt ASC, DESC kulcsszval lehet a mezk

    sorrendt befolysolni. Az ASC az ascent (felfel) DESC Descent (lefel) angol szbl ered. Lehetsges tbb mez

    felsorolsnl egyik mezt nvekv, mg a msik mezt cskken sorrendben rendezni.

    varos nev

    Budapest Albert T.Budapest Belinger B.

    Budapest Ceizel J.Budapest Dezsffy T.Budapest Elker R.Debrecen Felmeri Z.Debrecen Gbor G.

    Select SQL krdsSelect meznv_1, meznv_2, meznv_3, meznv_4

    From tblanv_1, tblanv_2, .., tblanv_nW here felttelOrder by meznv_1

    Az order by kulcssz utn felsorolt mezkszerint rendezi a lekrdezs eredmnyt.

    Meznv_1 Mezn

    v_2

    Meznv_3 Meznv_4

    Albert Emese Adat 2 Adat 3 Adat 4

    Bognr Bla Adat 6 Adat 7 Adat 8

    Cirky Zoltn Adat 10 Adat 11 Adat 12

    Delta Jzsef Adat 13 Adat 14 Adat 15

    Emerenc Borbla Adat 16 Adat 17 Adat 18

    Fleki Kornl Adat 19 Adat 20 Adat 21

    Meznv_1 Mezn

    v_2

    Delta Jzsef Adat 13

    Cirky Zoltn Adat 10

    BognrBla Adat 6

    Albert Emese Adat 2

    Fleki Kornl Adat 19

    Emer enc Borbla Adat 16

    Eredeti tbla

  • 7/27/2019 PHP Jegyzet

    75/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    75

    SELECT sum(fizetes), year(belepes_datum) FROM tblanv GROUP BYyear(belepes_datum)

    SELECT sum(fizetes), count(*), year(belepes_datum) FROM tblanv GROUP BY

    year(belepes_datum)

    A SELECTparancs egyik legnehezebb rsze a GROUP BYzradk, ami a csoportostsra vonatkozik. A mez felsorolsban itt

    egy fontos megkts van, csak azokat a mezket lehet felsorolni, amelyek szerepelnek a csoportost zradk felsorolsa

    utn, illetve aggregl (sszegz, vagy a csoportra nzve egy eredmnyt szolgltat) fggvny paramtereknt lehet mg

    megadni mezt vagy mezket.

    A fenti pldban a belpsi dtum vre csoportostunk s a fizetst sszegezzk, teht pldul az eredmny egyik sora a

    2010 ben belpett dolgozok sszes fizetst kapjuk meg. A mezk felsorolsban egy aggregl fggvny szerepel ez a

    sum() amely egy sszegzst csinl, a year() a dtum tpus adatbl kiemeli az vet.

    A fenti pldt ki lehet egszteni egy count() fggvnnyel amely rgtn meg mondja hny darab rekordra (dolgozra)

    vonatkozik az a fizets , amit krdeztnk.

    Select SQL krds

    meznv_1 meznv_2 meznv_3 meznv_4

    1 2008/11/12 1000 Hansen

    2 2008/10/23 1600 Nilsen

    3 2008/09/02 700 Hansen

    4 2008/09/03 300 Hansen

    5 2008/08/30 2000 Jensen

    Select aggregl_fggvny(meznev_3), meznv_4

    From tblanv_1Group by meznv_4

    Aggr_meznv_3 meznv_4

    Aggregltrtk 1 Hansen

    Aggregltrtk 2 Jensen

    Aggregltrtk 3 Nilsen

  • 7/27/2019 PHP Jegyzet

    76/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    76

    Group by aggregl fggvny

    Max(meznv) A maximum rtket adja vissza,csoportban a csoport maximumrtkt

    Min(meznv) A minimum rtket adja vissza,csoportostsban a csoport minimumrtkt adja v issza

    Sum(meznv) Az rtkek sszeget adja visszaAvg(meznv) Az rtkek tlagt adja visszaCount(meznv) Darabszmot ad visszaFirst(meznv) Az els rtkkel tr visszaLast(meznv) Az utols rtkkel tr vissza

  • 7/27/2019 PHP Jegyzet

    77/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    77

    Ha a FROM kulcssz utn tbb tblt szeretnnk felsorolni, akkor ssze kell kapcsolni ket, ehhez ad segtsget a JOIN

    kulcssz. Tbb fle mdon lehet sszekapcsolni, tbb mdot enged a MySQL.

    Mdok Inner Join, left join, right join. Vagyis teljes megegyezs esetn kapcsol ssze, bal oldali tblban szerepl adathoz

    ha nem tall adatot a jobb oldali tblban, akkor is megjelenti s null rtkekkel tlti ki a hozz kapcsolt mezket, illetve

    ugyanez csak jobb oldali tblba a mrvad.

    Eredeti tblk

    Eredmny tbla

    id nev

    1 Fekete Joln

    2 Kis Gza

    3 Nagy Istvn

    dolgozo_id telefonszam

    2 06-70-555-9999

    3 06-20-555-8888

    5 06-20-555-7777

    id nev

    1 Fekete Joln

    2 Kis Gza

    3 Nagy Istvn

    null null

    dolgozo_id telefonszam

    null null

    2 06-70-555-9999

    3 06-20-555-8888

    5 06-20-555-7777

    JOINSelect meznv_1, meznv_2, meznv_3, meznv_4

    From tblanv_1[Left , r ight] join tblanv_2 on (tblanv_1.mez1 = tblanv_2.mez1)

    mez1 mez2 mez3

    Adat 1 Adat 2 Adat 3

    Adat 4 Adat 5 Adat 6mez1 mez2 mez3

    Adat 1 Adat 2 Adat 3

    Adat 4 Adat 5 Adat 6

    Tblanv_1

    Tblanv_2

    Kt tbla kzs mezk ltali sszekapcsolsa trtnik a join utastssal.

  • 7/27/2019 PHP Jegyzet

    78/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    78

    SELECT * FROM dolgozo

    LEFT JOIN telefonszam on (dolgozo.id = telefonszam.dolgozo_id)

    SELECT * FROM dolgozo

    RIGHT JOIN telefonszam on (dolgozo.id = telefonszam.dolgozo_id)

    SELECT * FROM dolgozo,telefonszamWHERE dolgozo.id = telefonszam.dolgozo_id

    SELECT * FROM dolgozo

    INNER JOIN telefonszam on (dolgozo.id = telefonszam.dolgozo_id)

    Az elbbi szemlltet brhoz nzzk a pldkat.

    A fenti plda a LEFT JOIN parancsra plda. A JOIN szemlltet brn kk sznnel jelltk.

    A fenti plda a RIGHT JOIN parancsra plda. A JOIN szemlltet brn zld sznnel jelltk.

    A fenti plda az INNER JOIN parancsra kt fle plda. A JOIN szemlltet brn piros sznnel jelltk.

  • 7/27/2019 PHP Jegyzet

    79/91

  • 7/27/2019 PHP Jegyzet

    80/91

  • 7/27/2019 PHP Jegyzet

    81/91

  • 7/27/2019 PHP Jegyzet

    82/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    82

    Egy termk lista megjelentse

  • 7/27/2019 PHP Jegyzet

    83/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    83

    Adatbzis kezels php nyelvenA kapcsolds lpsei

    //ha sikeres az adatbzis kivlasztsa, akkor mehet tovbb a program. Hibal ehetsges okai nem ltezik ilyen adatbzis

    if ($db_selected) {mysql_query("SET NAMES utf8");mysql_query("SET collation_connection = 'utf8'" );

    Utoljra ellenrizzk a sikeres adatbzis szelekcit, ha ez sikeres akkor a csatornnakkiadunk egy pr utastst, hogy jl kezelje az UTF-8 karakter kszletet.FONTOS!!! Minden e lkezdett if utasts kezd kapcsos zrjelhez kell egy l ezrkapcsos zrjel is.

  • 7/27/2019 PHP Jegyzet

    84/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    84

    Adatbzis kezels php nyelvenAdatok megjelentse

    $select_termekcsoport = "Select id, cikkcsoport, leiras from ruander_termekcsoport";$response_termekcsoport= mysql_query($select_termekcsoport);i f($response_termekcsoport){

    while($termcsoport_l ine = mysql_fetch_row($response_termekcsoport)){print($termcsoport_line[0].' , termek cikkcsopportja: '

    .$termcsoport_line[1].'
    ');}// while($termcsoport_line = mysql_fetch_row($response_termekcsoport))

    }//if($response_termekcsoport){

    Egy SELECT utastst a mysql_query fggvnnyel tudunk tadni az adatbziskezelnek. Ezt az adatbzis kezel vgrehajtja majd vissza kldi az eredmnyt az phprtelmeznek. Ezek utn, mr csak meg kell jelenteni.

  • 7/27/2019 PHP Jegyzet

    85/91

  • 7/27/2019 PHP Jegyzet

    86/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    86

    Az eredmny feldolgozsa$response_termekcsoport = mysql_fetch_row ($response_termekcsoport);

    A fggvny a mysql_query ltal vissza adott eredmnyt dolgozza fel sorrl sorra, gyhogy egy tmbbe rakja. Az eredmny halmazat kzvetlenl nem lehet feldolgozni.

    $response_termekcsoport[0] (e lso mezo )$response_termekcsoport[1] ( masodik mezo)

    mez1 mez2 mez3

    Adat 1 Adat 2 Adat 3

    Adat 4 Adat 5 Adat 6

    $response_termekcsoport[0]Tartalma: Adat 4$response_termekcsoport[1]Tartalma: Adat 5$response_termekcsoport[2]Tartalma: Adat 6

  • 7/27/2019 PHP Jegyzet

    87/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    87

    A vgre egy kis segtsg

  • 7/27/2019 PHP Jegyzet

    88/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    88

  • 7/27/2019 PHP Jegyzet

    89/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    89

  • 7/27/2019 PHP Jegyzet

    90/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM

    90

  • 7/27/2019 PHP Jegyzet

    91/91

    RUANDER OKTATSI KZPONT WEBPROGRAMOZ TANFOLYAM