Adatbázis Rendszerek II. 5. Ea: MySQL - PHP B I v: T 2014.03.08 M A N 1/70
Témakörök HTML, PHP alapok (gyorstalpaló) Melós (miniprogram) PHP előkészületek PHP adatbázis alapok A kategória tábla PHP programja Tárolt rutinok hívása PHP-ből Tranzakció kezelés PHP-ből 2/70
HTML, PHP alapok (gyorstalpaló) HTML alapok (gyorstalpaló) PHP alapok (gyorstalpaló) 3/70
HTML alapok 1. A HTML dokumentum egy olyan szövegfájl, amely a szövegen kívül tartalmaz ún. "HTML-tag"-eket formázóutasításokat, valamint más megjelenítendő objektumokra történő hivatkozásokat is. Megjelenítése böngésző programmal lehetséges Kötött szerkezetű Fejléc Head Dokumentumtörzs Body A HTML utasítások a szövegben < és > jelek között szerepelnek Formázási lehetőségek: mint egy szövegszerkesztőben Betűtípus, méret, szín, háttérszín, bekezdés, táblázat 4/70
HTML alapok 2. <HTML> <HEAD> <TITLE> Az oldal címe </TITLE> </HEAD> <BODY> Helló Világ! </BODY> </HTML> 1. Jegyzettömb, beírás 2. Mentés: pl. prb.htm 3. 2x Megnézés böngészőben 5/70
Az igazi kód 6/70
HTML alapok 3. Almalap elkészítése 1. Félkövér szöveg Oldal címe Normál szöveg több sorban Kép Link 7/70
HTML alapok 4. Almalap elkészítése 2. <HTML> Félkövér <HEAD><TITLE> Almalap </TITLE></HEAD> <BODY> Sortörés <p> <b> Az alma: </b> <br> - Finom,<br> Bekezdés - Mókás,<br> - Szeletelt</p> <p> <img src="alma.jpg" width="170" height="176"> <br><br> AlmaInfo: <a href="http://www.almalap.hu/">az alma honlapja</a> </p> </BODY> </HTML> 8/70 Kép beszúrás: fájl neve, szélesség, magasság Link beszúrás: hivatkozás, megjelenő szöveg
Címszintek Címek, alcímek 6 szint mélységben <H1 ALIGN="irány"> Szöveg </H1> <H2 ALIGN="irány"> Szöveg </H2> NOWRAP Sortörés kikapcsolása <hr /> Vízszintes vonal <HTML><HEAD><TITLE> HTML próbalap </TITLE> </HEAD> <BODY> <H1 ALIGN="left"> Szöveg </H1> <H2 ALIGN="center"> Szöveg </H2> <H3 ALIGN="right"> Szöveg </H3> </BODY> </HTML> 9/70
Karakterformátumok <b>szöveg</b><br> félkövér <i>szöveg</i><br> dőlt <u>szöveg</u><br> aláhúzott <s>szöveg</s><br> áthúzott <tt>szöveg</tt><br> fixpontos <big>szöveg</big><br> nagyméretű <small>szöveg</smallbig><br> kisméretű H<sub>2</sub>SO<sub>4</sub><br> alsó index 16<sup>30</sup><br> felső index <FONT FACE="név" COLOR="szín" SIZE=szám> </FONT> 10/70
Karakterformátumok <HTML> <HEAD><TITLE> HTML próbalap </TITLE></HEAD> <BODY> <p> <font size="5" face="arial" color="red"> Arial, 5-ös méretű, piros szöveg. </font></p> <p> <font size="3" face="times" color="blue"> Times, 3-as méretű, kék szöveg. </font></p> </BODY> </HTML> 11/70
12/70 FFF FFF CCC CCC 999 999 666 666 333 333 000 000 FFC C00 FF9 900 FF6 600 FF3 300 99C C00 CC9 900 FFC C33 FFC C66 FF9 966 FF6 633 CC3 300 CC0 033 CCF F00 CCF F33 333 300 666 600 999 900 CCC C00 FFF F00 CC9 933 CC6 633 330 000 660 000 990 000 CC0 000 FF0 000 FF3 366 FF0 033 99F F00 CCF F66 99C C33 666 633 999 933 CCC C33 FFF F33 996 600 993 300 663 333 993 333 CC3 333 FF3 333 CC3 366 FF6 699 FF0 066 66F F00 99F F66 66C C33 669 900 999 966 CCC C66 FFF F66 996 633 663 300 996 666 CC6 666 FF6 666 990 033 CC3 399 FF6 6CC FF0 099 33F F00 66F F33 339 900 66C C00 99F F33 CCC C99 FFF F99 CC9 966 CC6 600 CC9 999 FF9 999 FF3 399 CC0 066 990 066 FF3 3CC FF0 0CC 00C C00 33C C00 336 600 669 933 99C C66 CCF F99 FFF FCC FFC C99 FF9 933 FFC CCC FF9 9CC CC6 699 993 366 660 033 CC0 099 330 033 33C C33 66C C66 00F F00 33F F33 66F F66 99F F99 CCF FCC CC9 9CC 996 699 993 399 990 099 663 366 660 066 006 600 336 633 009 900 339 933 669 966 99C C99 FFC CFF FF9 9FF FF6 6FF FF3 3FF FF0 0FF CC6 6CC CC3 3CC 003 300 00C C33 006 633 339 966 66C C99 99F FCC CCF FFF 339 9FF 99C CFF CCC CFF CC9 9FF 996 6CC 663 399 330 066 990 0CC CC0 0CC 00F F33 33F F66 009 933 00C C66 33F F99 99F FFF 99C CCC 006 6CC 669 9CC 999 9FF 999 9CC 993 3FF 660 0CC 660 099 CC3 3FF CC0 0FF 00F F66 66F F99 33C C66 009 966 66F FFF 66C CCC 669 999 003 366 336 699 666 6FF 666 6CC 666 699 330 099 993 3CC CC6 6FF 990 0FF 00F F99 66F FCC 33C C99 33F FFF 33C CCC 339 999 336 666 006 699 003 399 333 3FF 333 3CC 333 399 333 366 663 3CC 996 6FF 660 0FF 00F FCC 33F FCC 00F FFF 00C CCC 009 999 006 666 003 333 339 9CC 336 6CC 000 0FF 000 0CC 000 099 000 066 000 033 663 3FF 330 0FF 00C C99 009 9CC 33C CFF 66C CFF 669 9FF 336 6FF 003 3CC 330 0CC 00C CFF 009 9FF 006 6FF 003 3FF Biztonságos színek és Hexa kódjuk.
Táblázatok Táblázat kezdete Sor 13/70 <TABLE> <TBODY> <TR> <TD> ID </TD> <TD>NÉV</TD> <TD>SZÜLÉV</TD> <TD>CÍM</TD> </TR> <TR><TD>1</TD> <TD>Béla</TD> <TD>1990</TD> <TD>Budapest</TD></TR> <TR><TD>2</TD> <TD>Géza</TD> <TD>1992</TD> <TD>Győr</TD></TR> <TR><TD>3</TD> <TD>Jenő</TD> <TD>1993</TD> <TD>Miskolc</TD></TR> </TBODY> </TABLE> Oszlop
Hiperhivatkozások a webhelyen index.html 14/70 www.uw.hu
Weblapon belüli linkek <HTML> <HEAD><TITLE> HTML próbalap </TITLE></HEAD> <BODY> Szöveg<br> <a name="hsz">hasznos szöveg</a> <br> Szöveg<br> Szöveg<br> Szöveg<br> Szöveg<br> Szöveg<br> Szöveg<br> Szöveg<br> Szöveg<br> Szöveg<br> Szöveg<br> Szöveg<br> <a href="#hsz">ugrás a Hasznos szöveghez</a> <br> Szöveg<br> </BODY> </HTML> 15/70
Webhelyen belüli és külső linkek <a href="mam.htm">mai menü</a> <a href="fotok/foto.htm">fotók</a> <a href="http://www.w3schools.com/">link a W3Schools weblapra</a> <a href="http://www.w3schools.com/" target="_blank" >Link a W3Schools weblapra</a> 16/70
Dinamikus weblapok A linkek hasznosak, de statikusak. Dinamikus lesz a weblap, ha adatokat tudunk bevinni, és nyomógombok segítségével műveleteket indíthatunk el. Az adatok bevitelére, és a nyomógombok megjelenítésére alkalmas a HTML nyelv, de az adatok és a műveletek kezelésére valamilyen programnyelv szükséges! Pl.: PHP 17/70
HTML űrlap Be.html <html> <head> <title> Bejelentkezés </title> </head> <body> <form action="be_feldolgozo.php" method=post> <p>kérem a nevemet: <br> <input type = text name="tm" size=17> <p><input type=submit name="kuldes" value="belépek"> </form> </body> </html> 18/70
Feldolgozás be_feldolgozo.php <?php $aa = $_POST['tm']; print 'Szia '.$aa.'!';?> <form action="be.html"> <br> <input type=submit name="vissza" value="vissza"> </form> 19/70
HTML űrlap Beviteli elemek <input type= xxx > text password checkbox radio select submit reset 20/70
HTML űrlap Beviteli elemek (2) <form> <p>kérem a nevemet: <br> <input type=text name="tm" size=17> </p> <p>kérem a jelszavamat: <br> <input type=password name="tm2" size=17> </p> <p>naplózás: <input type=checkbox name="tm3"> Titkosítás: <input type=checkbox name="tm4" checked="checked"> </p> 21/70
HTML űrlap Beviteli elemek <p>betűméret: S<input type=radio name="tmr" value="s"> M<input type=radio name="tmr" value="m"> L<input type=radio name="tmr" value="l" checked="checked"> XL<input type=radio name="tmr" value="xl"></p> Módszer: <SELECT NAME="menu"> <OPTION> Lassan, ráérek. <OPTION> Tempósan, sietek! <OPTION> Még nem vagy kész? </SELECT><br><br><br> <p><input type=submit name="kuldes" value="belépek"> <input type="reset" value="töröl"></p> </form> 22/70
HTML, PHP alapok (gyorstalpaló) HTML alapok (gyorstalpaló) PHP alapok (gyorstalpaló) 23/70
A cél: Webes kliensről manipulálni az adatbázist. 24/70
A megoldás: PHP alkalmazása Kliens-oldal Szerver-oldal HTTP <?php $connect SQL HTML <HTML> <HEAD> <TITLE> PHP </TITLE> </HEAD> Piros Kék Zöld Piros, Kék, Zöld 25/70
A PHP működése http://helo.php PHP file Név Jelszó PHP feldolgozó DBMS Web böngésző HTML Adatbázis szerver Web szerver 26/70
PHP 1995: Rasmus Lerdorf, Personal Home Page Tools 1997: PHP 3.0, Hypertext Preprocessor Szerver oldali programozási nyelv, Dinamikus HTML oldalak készítésére, Nyílt forráskódú, Hordozható: UNIX, Linux, Windows változatok, Apache és IIS alatt egyaránt működik. 27/70
Tudattágítók Rasmus Lerdorf, Andi Gutmans, Zeev Suraski 28/70
Dinamikus HTML oldal PHP-vel <HTML> <HEAD><TITLE>HTML PHP-vel!</TITLE></HEAD> <BODY> Kakukk! <br> A mai dátum: <?php echo date("y.m.d");?> <br> Az aktuális időpont : <?php echo date("h");?> óra, <?php echo date("i");?> perc, <?php echo date("s");?> másodperc. </BODY> </HTML> Mitől dinamikus? 29/70 F5
PHP 2 perc alatt 1. perc A PHP kód kezdete: <?php... vége:?> Szintaxis: Változók: Gyengén típusos nyelv! 30/70 $szoveg = "Kakukk"; $egész = 123; $tört = 18.39; $napok = array("hétfő", "kedd",); $napok[ ] = "szerda"; $szam = array("egy"=> 55, "ketto"=>37); $szam["három"]=26; Automatikus típuskonverzió! Operátorok: $a, $b, $c = 3; $sz1, $sz2 = "retek"; ++$a; --$a; $a *= $b; $a = $b / $c; $a = $b % $c; $sz = $sz1.$sz2; retekretek $sz1.= $sz2 If ($a == 7) then, If ($a === $b) then, If ($a!== $b) then!, &&,, xor,
PHP 2 perc alatt 2. perc A PHP kód kezdete: <?php... vége:?> Szintaxis: If (feltétel) { utasítások; } elsif { ; } else { ; } Switch (változó) case címke: utasítás; break; default: While (feltétel) { utasítások; } Do { utasítások; } while (feltétel); For (kezdőérték; kilépési feltétel; növekmény){ utasítások; } Pl.: for ($s=0, $i=1; $i<=10; ++$i) { $s += $i; } Kommentek: /* */, vagy sor elején //, # 31/70
Az adatbázis-programozás lépései Kapcsolódás Lekérdezés Eredmények feldolgozása Lekapcsolódás 32/70
Az adatbázis-programozás lépései Kapcsolódás Driver regisztrálása Lekérdezés Kapcsolódás a DBMS-hez Eredmények feldolgozása Lekapcsolódás 33/70
Az adatbázis-programozás lépései Kapcsolódás Lekérdezés SQL kérés (STATEMENT) összeállítása Eredmények feldolgozása SQL kérés elküldése Lekapcsolódás 34/70
Az adatbázis-programozás lépései Kapcsolódás Lekérdezés Az eredményhalmaz (CURSOR) rekordonkénti bejárása Eredmények feldolgozása Az értékek átadása programváltozóknak Lekapcsolódás 35/70
Az adatbázis-programozás lépései Kapcsolódás Lekérdezés Eredményhalmaz lezárása Eredmények feldolgozása SQL kérés lezárása Lekapcsolódás Kapcsolat lezárása 36/70
beurlap.html <html> <head> <title> Bejelentkezés </title> </head> <body> <form action="belep.php" method=post> <p>kérem a nevet: <br> <input type=text name="nev" size=20> <p>kérem a jelszót: <br> <input type=password name="psw" size=20> <p><input type=submit name="kuldes" value="belépek"></p> </form> </body> </html> 37/70
belep.php <?php $conn = mysqli_connect("localhost","root","root","ceg"); $jsz = $_POST['psw']; $sql = "select jelszo from melos where nev= '$_POST[nev]'"; $qq = mysqli_query($conn, $sql); $adat = mysqli_fetch_array($qq); If ($adat["jelszo"] == $jsz){echo "Szia User! Dolgozhatsz!";} else { echo "Nem ismerlek! Nem dolgozhatsz!";} mysqli_close($conn);?> 38/70
Témakörök PHP, HTML alapok (gyorstalpaló) Melós (miniprogram) PHP előkészületek PHP adatbázis alapok A kategória tábla PHP programja Tárolt rutinok hívása PHP-ből Tranzakció kezelés PHP-ből 39/70
PHP MySQL kapcsolat 40/70
A feladat alapja: A Melos tábla: Azon Nev 1 Melos Fizetes Create table Melos( Azon char(3) primary key, Nev char(20), Fizetes integer(6)); 41/70 2
abkezel.php (1. rész) <html><head><title> ab kezelő </title> </head><body> <p><b>adatfelvitel</b></p> <form action="insert.php" method=post> <p>kérem az azonosítót: <br> <input type=text name="az" size=4> <p>kérem az új nevet: <br> <input type=text name="tm" size=20> <p>kérem a fizetést: <br> <input type=text name="tm2" size=12> <p><input type=submit name="küldés" value="beszúr"> <input type="reset" value="ürít"></p> </form><br> 42/70
abkezel.php (2. rész) <p><b>adatmódosítás</b></p> <form action="updatefiz.php" method=post> <p>kérem az azonosítót: <br> <input type=text name="az" size=4> <p>kérem az új fizetést: <br> <input type=text name="fiz" size=6> <p><input type=submit name="küldés2" value="módosítás"></p> </form><br> 43/70
abkezel.php (3. rész) <p><b>adattörlés</b></p> <form action="delete.php" method=post> <p>kérem a törlendő azonosítót: <br> <input type=text name="dr" size=4> <p><input type=submit name="küldés4" value="rekord törlése"></p> </form><br> <p><b>lista</b></p> <form action="kiirciklus.php" method=post> <p><input type=submit name="küldés3" value="kiíratás"></p> </form> </body> </html> 44/70
45/70
PHP MySQL kapcsolat Mysql csomag Függvények, eljárások gyűjteménye, melyekkel megvalósítható az adatbázis-kezelés PHP-ből. Helye: a PHP csomagban a php_mysql.dll Engedélyezése: php.ini fájlban kivenni a ;-t: ; extension=php_mysql.dll A PHP kódok futtatásához szükséges egy webszerver, ami alá telepítve van a PHP. Otthonra: XAMPP (Apache, MySQL, PHP, ) Letöltés: xampp.fs.net 46/70
PHP MySQL insert.php <?php $conn = mysqli_connect("localhost","root","root","proba"); $sql = "insert into melos values ('$_POST[az]','$_POST[tm]',$_POST[tm2])"; if (mysqli_query($conn, $sql)){ echo "Rekord hozzáadva!"; } else { echo "Gond van!"; } mysqli_close($conn);?> 47/70
PHP MySQL updatefiz.php <?php $conn = mysqli_connect("localhost","root","root","proba"); $sql = "update melos set fizetes=$_post[fiz] where azon='$_post[az] ' "; if (mysqli_query($conn, $sql)){ echo "Fizetés módosítva!"; } else { echo "Gond van!"; } mysqli_close($conn);?> 48/70
PHP MySQL delete.php <?php $c = mysql_connect("hostnév","user","jelszó"); $mdb = mysql_select_db("dbnév",$c); $sql = "delete from t1 where azon='$dr'"; $fut = mysql_query($sql,$c); print $fut; mysql_close($c);?> 49/70
PHP MySQL kiirciklus.php <?php $conn = mysqli_connect("localhost","root","root","proba"); $eredmeny = mysqli_query($conn, "select * from melos"); while($adat = mysqli_fetch_assoc($eredmeny)) { print ("Azon: ".$adat["azon"]." Név: ".$adat["nev"]." Fizetés: ".$adat["fizetes"]); } print("<br>"); mysqli_close($conn);?> 50/70
Témakörök PHP, HTML alapok (gyorstalpaló) Melós (miniprogram) PHP adatbázis alapok A kategória tábla PHP programja Tárolt rutinok hívása PHP-ből Tranzakció kezelés PHP-ből 51/70
Kategóriák lekérdezése 52/70
Kapcsolódás Vizsgálat Nincs ilyen ismert állomás. Access denied for user 'root'@'localhost' (using password: YES) 53/70
PHP Elegáns megoldás Kapcsolódási metódusok elhelyezése fájlban. 1 2 1 54/70 2
HTML Elegáns megoldás Táblázatos formátumú kiíratás 55/70
Témakörök PHP, HTML alapok (gyorstalpaló) Melós (miniprogram) PHP adatbázis alapok A kategória tábla PHP programja Tárolt rutinok hívása PHP-ből Tranzakció kezelés PHP-ből 56/70
Bolt adatbázis Kkód Név Tkód Név Ár Kategória K-T Termék Leírás Sorszám Vásárlás Időpont Név Darab Fkód Leírás Vásárló V-F Fizetés VID Cím 57/70
Bolt Struktúra Kategória Kkód Név Termék Kategória Tkód Név Ár Leírás Vásárlás Tkód Sorszám Időpont Darab VID Vásárló Fizetés VID Név Cím Fizmód Fkód Leírás 58/70
Táblajáték Kategória Create database bolt; Use bolt; Create table Kategória( Kkód char(3) primary key, Név varchar(20) not null, Unique (Név)); 59/70
A Kategória tábla kezelő felülete KategoriaKezelo.php 1 2 3 60/70 4
1 2 3 61/70
4 62/70
katlista.php (3) 1 63/70
katlista.php (4) 1 64/70
katnev.php (2) 2 65/70
Kategória keresés B-verzió (1) 2B A KategoriKezelo.php ablakában íródik ki az eredmény 66/70
2B 67/70
ujkat.php (2) 3 68/70
kattorol.php (2) 4 69/70
VÉGE V É G E 70/70