Az Apache+PHP+MySQL rendszer Weblap: HTML nyelvű fájl. Web böngésző (HTTP kliens): weblapok értelmezése és megjelenítése, szükség esetén segédprogramok (plugin) segítségével. Web szerver (HTTP szerver): webcímeket (URL-eket) fogad, és visszaadja a megfelelő weblapokat. Statikus weblap: HTML nyelvű dokumentum. Dinamikus weblap: program által generált HTML fájl.
LAMP LAMP = Linux + Apache + MySQL + PHP (vagy Perl vagy Python): népszerű, nyílt forráskódú szoftvercsomag, amelyet széles körben használnak dinamikus weblapok készítésére. Az egyes komponensek: Apache: web szerver program. Letölthető: www.apache.org PHP: interpretált nyelv, dinamikus weblapok készítéséhez általánosan használják. Letölthető: www.php.net MySQL: adatbázis szerver. Letölthető: www.mysql.com XAMPP telepítő csomag (Apache+PHP+MySQL egyben) http://www.apachefriends.org/en/xampp.html
A fejlesztési technológia lényege A statikus, HTML nyelvű weblapok forrásszövegébe PHP programrészeket illesztünk. Az Apache-ba integrált PHP-értelmező ezeket végrehajtja, melynek eredményeként egy módosított HTML-kód generálódik, és az Apache ezt a weblapot küldi ki a kliens felé. A PHP program függvényhívásokon keresztül éri el a MySQL szervert, és az adatbázisból lekért adatokkal építheti fel a dinamikus weblapot.
Az Apache webszerver Telepítés után a gépünk web-szerverként használható. A saját gépre "localhost" domain névvel vagy az 127.0.0.1 IP-címmel hivatkozhatunk. Az Apache működésének ellenőrzése: a böngészőbe írjuk be a http://localhost URL-t, akkor az Apache bejelentkezik. A web-szerver dokumentumainak gyökérkönyvtára a htdocs, amely az Apache telepítési könyvtárából nyílik. Ha ide helyezünk egy xxx.php fájlt, akkor futtatása a böngészőben http://localhost/xxx.php URL segítségével történik.
Lásd az Adatbázisok tárgy tananyagában MySQL Lásd az Adatbázisok tárgy tananyagában
A HTML nyelv HTML (HyperText Markup Language): Az interneten a World Wide Web információs lapok leírására használt nyelv. „Karakteresen formázott” szövegfájlok leírására alkalmas. Fájlnév kiterjesztés: .htm vagy .html Alapvető szintaxis: Szóköz csak elválasztásra szolgál (egy szóköz egyenértékű akárhány szóközzel) Enter hatástalan (csak a forrásszöveg tagolására szolgál) A böngésző automatikusan tördeli sorokra a szöveget az aktuális ablakméret szerint.
Tag (= címke) fogalma Kezdőcímke: <címkenév [paraméterek]> Zárócímke: </címkenév> A címkenévben kis- és nagybetű használata egyenértékű. A hibás címkéket figyelmen kívül hagyja a böngésző.
HTML fájl felépítési sémája <HEAD> <TITLE> lapcím </TITLE> ... </HEAD> <BODY> </BODY> </HTML> TITLE rész: a böngészőablak fejlécében jelenik meg. (Megadása nem kötelező.) BODY rész: a böngészőablakban jelenik meg.
Karakterek formázása - 1 Betűstílusok megadása (hatásuk a megfelelő zárócímkéig terjed): <B> bold (félkövér); <I> italic (dőlt); <U> underlined (aláhúzott); <TT> teletype, azaz fix szélességű betűtípus. Példa: Forrásszöveg: Első, <I> második, </I> harmadik Megjelenítés: Első, második, harmadik
Karakterek formázása - 2 Betűméret megadása: <FONT SIZE=i>, ahol i értéke 1-től 7-ig változhat. Betűk színe: <FONT COLOR=#rrggbb>, ahol „rrggbb” hexadecimális RGB színkód: rr = piros, gg = zöld és bb = kék komponensét kell megadni. Egy komponens intenzitása 0 és 255 között (hexadecimálisan 00-tól FF-ig) változhat. Példa: <FONT COLOR=#FF0000> piros színt jelent.
Bekezdések formázása - 1 Bekezdés (paragrafus) kezdete: <P>, hatására a szöveg új sorban folytatódik. Nincs zárócímke, hatása a következő <P> címkéig terjed. Igazítás megadása: <P ALIGN=LEFT> igazítás balra; <P ALIGN=RIGHT> igazítás jobbra; <P ALIGN=CENTER> igazítás középre. Kényszerített sorváltás: <BR>. A szöveg új sorban folytatódik, de ez nem jelent új bekezdést. Cím (heading) megadása: <Hi>, ahol i értéke 1, 2, ..., 6 lehet. <H1>-hez tartozik a legnagyobb betűméret. A cím végét </Hi> zárócímke jelzi.
Bekezdések formázása - 2 Felsorolások: <UL> unordered list (rendezetlen lista) <OL> ordered list (sorszámozott lista) <LI> list item (listaelem). A felsorolás egyes pontjai elé kerülő szimbólumok alakját egy TYPE paraméter segítségével adhatjuk meg. (DISC = teli kör, CIRCLE = üres kör, SQUARE = négyzet) Példa: <UL TYPE=DISC> <LI> Első tétel <LI> Második tétel <LI> Harmadik tétel </UL> Megjelenítés: Első tétel Második tétel Harmadik tétel
Hivatkozások (linkek) megadása <A HREF="cím"> szöveg </A> A „szöveg” aláhúzva jelenik meg a weblapon, ez alkotja a hivatkozást, a „cím” pedig a kapcsolódó hely vagy weblap azonosítója. Típusai: cím = URL, azaz a világhálón egy másik weblap címe; cím = path, azaz a saját gépen egy másik fájl elérési útvonala; cím = #név, ahol név az adott fájl egy másik pontját azonosítja. A hivatkozott részt <A NAME="név"> szöveg </A> módon kell jelölni.
Ékezetes betűk - 1 Ha az ékezetes betűk nem jól jelennek meg: & alapbetű ékezet ; Az egyes ékezettípusok megadása: acute = vessző, uml = két pont, tilde = hullámvonal (kettősvessző helyett), circ = kalap (kettősvessző helyett). Példák: Á = Á Megjelenítés: í = í ö = ö ő = õ ű = û
Ékezetes betűk - 2 ASCII kód alapján karakterek bevitele: & # kód ; Példák: Á = Á © = © összekötő szóköz =
Weblap minta <HTML> <HEAD> <TITLE> Demo weblap </TITLE> </HEAD> <BODY> <H2 ALIGN=CENTER> Mintalap a HTML nyelvhez </H2> <P> <A NAME="start"> Ebben </A> a bekezdésben bemutatjuk a különféle betűstílusokat: <BR> <I> dőlt, </I> <B> vastag, </B> és <TT> fix szélességű</TT> betűk.
<UL TYPE=DISC> Ez egy felsorolás: <LI> Első tétel <LI> Második tétel <LI> Harmadik tétel </UL> <P ALIGN=RIGHT> Ebben a szövegben az ékezetes karakterek biztosan jól fognak megjelenni! <P> Végül linkek különböző webhelyekre: Ugrás a demo lap <A HREF="#start"> elejére</A>, vagy az aktuális könyvtár <A HREF="demo2.htm"> demo2.htm </A> nevű fájljára, vagy egy <A HREF="http://www.szeged.hu"> igazi weblap</A>ra </BODY> </HTML>
Táblázat készítése <TABLE> táblázat kezdete <TR> táblázat sorának kezdete (table row) <TD> táblázat bejegyzés kezdete (table data)
Példa táblázatra <HTML> <BODY bgcolor=white> <table bgcolor=#f0f0ff border=1> <tr bgcolor=#b0d0ff> <td><b> Sorszám </td> <td><b> Megnevezés </td> </tr> <tr> <td> 1. </td> <td> Első sor </td> <td> 2. </td> <td> Második sor </td> </table> </BODY> </HTML>
Táblázat megjelenése a képernyőn
A PHP nyelv Interpretált nyelv. Szintaxis: a C nyelvhez hasonló, fontosabb eltérések: Változók: $név, kis- és nagybetű különbözőnek számít. Változót deklarálni nem kell, típusát az első értékadás határozza meg. Újabb értékadás a típust megváltoztathatja, például $x=4; $x="alma"; Alaptípusok: egész, logikai, string, lebegőpontos szám. Változó állapota: isset(változó) értéke igaz, ha a változó definiált, egyébként hamis.
Szövegkonstans: 'szöveg' vagy "szöveg" Szövegkonstans: 'szöveg' vagy "szöveg". "szöveg" esetén a szövegben szereplő PHP változók kiértékelése megtörténik, 'szöveg' esetén nem! A szövegkonstans több sorra tördelhető. String megjelenítése: print string; vagy echo string; Stringek konkatenációja „pont” karakterrel történik, például ’alma’.’fa’ Logikai műveletek: and, or, xor, ! (negáció), de használható && (és), || (vagy) is. Logikai konstansok: true, false. Tömbök használata: például $x=(10,20,30), ekkor $x[1] értéke 20. Egysoros kommentár: # vagy // Többsoros kommentár: /* ... */
HTML-be ágyazott PHP A PHP nyelv kétféleképpen használható: Önálló programnyelvként (ezzel nem foglalkozunk). Az Apache szerver kiegészítő moduljaként. Jelemzők: A PHP programot a HTML forrásszövegébe írjuk. A fájlnév kiterjesztése .php Az Apache a PHP modul segítségével végrehajtja a PHP kódot, annak eredményeként generált weblapot küldi el a klienshez, és a böngésző ezt jeleníti meg. A PHP kód <? és ?> (vagy <?php és ?>) karakterpárok között szerepel.
Példa PHP kódra <html> <body bgcolor=white> <? # Ez itt már PHP kód print '<h3>A PHP működik ...</h3><p>'; for($i=0; $i<6; $i++) { print "<font face=arial size=$i><b>PHP!</b></font> \n"; } ?> </body> </html>
A kigenerált weblap <html> <body bgcolor=white> <h3>A PHP működik ...</h3><p> <font face=arial size=0><b>PHP!</b></font> <font face=arial size=1><b>PHP!</b></font> <font face=arial size=2><b>PHP!</b></font> <font face=arial size=3><b>PHP!</b></font> <font face=arial size=4><b>PHP!</b></font> <font face=arial size=5><b>PHP!</b></font> </body> </html>
A képernyőn megjelenő kép
PHP - MySQL kapcsolat A PHP Windows-változata már eleve tartalmazza a MySQL támogatást. Kapcsolódás a DBMS-hez: $azonosító = mysql_connect ("szerver", "felhasználó", "jelszó"); Adatbázis kiválasztása: mysql_select_db("adatbázisnév"); Kapcsolat bontása: mysql_close($azonosító);
PHP - MySQL függvények Lekérdezés: $tábla = mysql_query ("mysql_parancs"); Kurzor léptetése: $sor = mysql_fetch_row($tábla); Sorok száma: $nur=mysql_num_rows($tábla); Oszlopok száma: $nur=mysql_num_fields($tábla); i-edik oszlop neve: $nur=mysql_fields_name($tábla, $i);
2. példa <HTML> <? $id = mysql_connect("localhost","adm","pwd"); mysql_select_db("personal"); print "<body bgcolor=white>"; $res = mysql_query("show tables"); $i = 1; print "<b>Jelenlegi adattáblák:</b><br>"; while ($row = mysql_fetch_row($res)) { print "$i. $row[0]<br>"; $i++; } mysql_close($id); ?> </BODY> </HTML>
Magyarázat a 2. példához A mysql_query() függvény segítségével a "show tables" MySQL-parancsot küldjük el a DBMS-hez. Ez egy egyoszlopos eredménytáblát ad vissza, amely az adatbázisban tárolt táblák neveit tartalmazza. $res a lekérdezés eredménye. A mysql_fetch_row($res) a $res tábla következő sorát adja vissza egy stringeket tartalmazó tömb formájában. Ha már nincs több sor, akkor a mysql_fetch_row() FALSE értékkel tér vissza.
2. példa: a kigenerált weblap Ha az adatbázisunkban csak a Könyv és Olvasó táblák vannak, akkor a PHP kód végrehajtása után a következő HTML-kód keletkezik: <HTML> <body bgcolor=white> <b>Jelenlegi adattáblák:</b><br> 1. Konyv<br> 2. Olvaso<br> </BODY> </HTML>
2. példa: a képernyőn megjelenő kép Jelenlegi adattáblák: 1. Konyv 2. Olvaso
3. példa: Táblázat Feladat: A Könyv(könyvszám, szerző, cím) adattábla tartalmának kiírása weblapra táblázatos formában. A Könyv tábla tartalma: Könyvszám Szerző Cím 2276 Karinthy Így írtok ti 1782 Jókai Aranyember
3. példa: a generálandó weblap <HTML> <BODY bgcolor=white> <table bgcolor=#f0f0ff border=1> <tr bgcolor=#b0d0ff> <td><b> Könyvszám </td> <td><b> Szerző </td> <td><b> Cím </td> </tr>
<tr> <td> 2276 </td> <td> Karinthy </td> <td> Így írtok ti </td> </tr> <td> 1782 </td> <td> Jókai </td> <td> Aranyember </td> </table> </BODY> </HTML>
3. példa: táblázat generálása <HTML> <? $ID=mysql_connect("localhost","adm","pwd"); mysql_select_db("personal"); print '<body bgcolor=white>'; $res=mysql_query("select * from konyv"); $nur=mysql_num_rows($res);
print '<table bgcolor=#f0f0ff border=1>'; print '<tr bgcolor=#b0d0ff>'; for ($i=0; $i<mysql_num_fields($res); $i++) { print '<td><b>'.mysql_field_name($res,$i).'</td>'; } print '</tr>'; for ($i=1; $i<=$nur; $i++) { $row=mysql_fetch_row($res); print '<tr>'; for ($j=0; $j < count($row); $j++) print "<td>$row[$j]</td>"; print '</table>'; mysql_close($ID); ?> </BODY> </HTML>
Magyarázat a 3. példához A mysql_num_rows($res) függvény a $res tábla sorainak számát adja vissza. A mysql_num_fields($res) függvény a $res tábla oszlopainak számát adja vissza. A mysql_fields_name($res, $i) függvény a $res tábla i-edik oszlopának nevét adja. A count($row) függvény a $row tömb elemeinek számát adja.
3. példa: a képernyőn megjelenő kép
4. példa: Kiválasztó mező Tegyük fel, hogy a Tábla(mező) adattábla rendre az „Első”, „Második” és „Harmadik” stringeket tartalmazza. A képernyőn megjelenítendő:
4. példa: a generálandó HTML kód <select name='név'> <option value=’1’> Első </option> <option value=’2’> Második </option> <option value=’3’> Harmadik </option> </select>
4. példa: kiválasztó mező generálása function dbselect($qry,$nam) { $res=mysql_query($qry); $nur=mysql_num_rows($res); if (!$nur) return 'EMPTY'; $out="\n<select name='$nam'>\n"; for($i=0; $i<$nur; $i++) { $val=mysql_fetch_row($res); $out.="<option value='$i'>$val</option>\n"; } $out.="</select>\n"; return $out;
A képernyőn megjelenő kép: A fenti függvény meghívása: print dbselect(’select mezo from tabla’, ’név’); A képernyőn megjelenő kép:
Webhelyek PHP honlap: www.php.net A dokumentáció magyar nyelven is letölthető. XAMPP telepítő csomag (Apache+PHP+MySQL egyben): www.apachefriends.org/en/xampp.html PHP ingyenes tárhely: www.freeweb.hu