Adatbázis Rendszerek II. 8. Oracle - PHP 127/1 B IT v: 2016.03.14 MAN
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 Univerzális Sql Commander Tárolt rutinok hívása PHP-ből Tranzakció kezelés PHP-ből 127/2
HTML, PHP alapok (gyorstalpaló) HTML alapok (gyorstalpaló) PHP alapok (gyorstalpaló) 127/3
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ű Head Fejléc: információk a lapról Body Dokumentumtörzs: a megjelenő tartalom 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 127/4
HTML alapok 2. <html> <head> <title>első weboldalam</title> </head> <body> <p>helló Világ!</p> </body> </html> 1. Jegyzettömb, beírás 2. Mentés: pl. prb.htm 3. 2x Megnézés böngészőben 127/5
HTML alapok 3. almalap.htm <html> <head> <title>almalap</title> </head> <body> <p> <!-- bekezdés --> <b>az alma:</b><br> </p> <ul> <!-- felsorolás --> <li>finom,</li> <li>mókás,</li> <li>szeletelt.</li> </ul> <p> <img src="alma.jpg" width="160" height="170"> <!-- kép --> <br> <!-- sortörés --> AlmaInfo: <a href="http://www.almalap.hu/">link az AlmaLapra</a> </p> </body> 127/6 </html>
Milyen szerkesztőt használjunk Jegyzettömb Notepad++ 127/7
Az igazi kód 127/8
Címszintek, igazítás Címek, alcímek 6 szint mélységben (h1..h6) <h1 align="irány"> Szöveg </h1> <h2 align="irány"> Szöveg </h2> 127/9
Címszintek, igazítás Forráskód <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> www.minta.hu 127/10
A dokumentum tagolása Bekezdések, blokkok <p align= "irány"> <! bekezdés--> szövegek, képek <br> <!-- sortörés --> <! non-breaking space, nem eltávolítható szóköz --> </p> <div align= "irány"> <! névtelen blokk --> szövegek, képek </div> <div class= "név" align= "irány"><! nevesített blokk--> szövegek, képek </div> 127/11
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 www <font face="név" color="szín" size=szám> </font> 127/12
Karakterformátumok Forráskód <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> www.bitman.hu 127/13
Színkódok A színkódok megadhatók: Névvel: "darkblue", Hexa kóddal: "#00008b", RGB kóddal: "rgb(0,0,139)", 127/14
127/15 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.
Felsorolás számozás Forráskód <ul> <li>hapci</li> <li>morgó</li> <li>szundi</li> </ul> www.bitman.hu <ol> <li>elment vadászni,</li> <li>meglőtte,</li> <li>hazavitte,</li> <li>mind megette.</li> </ol> 127/16
Táblázatok Táblázat kezdete Sor 127/17 <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 www.bitman.hu
Táblázatok (2) <TABLE cellspacing=1 cellpadding=6 width=282 border=1 BgColor="FFFF99"> <TBODY> <TR BgColor="FFFF33"> <TD width="15%"><p>id</p></td> <TD width="24%"><p>nev</p></td> <TD width="29%"><p>szulev</p></td> <TD width="32%"><p>cim</p></td></tr> <TR> Háttérszín <TD><P align=right>1</p></td> <TD><P>Béla</P></TD> <TD><P>1975</P></TD> Cellák közti távolság Cella szélesség <TD><P>Budapest</P></TD></TR> Teljes szélesség Cellamagasság www.bitman.hu Külső szegély, és mérete 127/18
1 1. Weblapon belülre mutató link 2 2. Webhelyen belülre mutató link 3 3. Webhelyen kívülre mutató link Linkek a webhelyen 2 2 index.html 1 www.origo.hu 127/19 3
1 Weblapon belüli linkek Forráskód <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> 127/20 www.bitman.hu
Webhelyen belüli és külső linkek 2 <a href="mam.htm">mai menü</a> <a href="fotok/foto.htm">fotók</a> 3 <a href="http://www.w3schools.com/">link a W3Schools weblapra</a> <a href="http://www.w3schools.com/" target="_blank" >Link a W3Schools weblapra</a> 127/21
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 127/22
HTML űrlap Be.html Be.htm <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="nev" size=17> <p><input type=submit name="kuldes" value="belépek"> </form> </body> </html> www.bitman.hu 127/23
Feldolgozás be_feldolgozo.php be_feldolgozo.php <?php $aa = $_POST['tm']; print 'Szia '.$aa.'!';?> <form action="be.html"> <br> <input type=submit name="vissza" value="vissza"> </form> www.bitman.hu 127/24
HTML űrlap Beviteli elemek <input type= xxx > www.bitman.hu text password checkbox radio select submit reset 127/25
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> 127/26
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> 127/27 </form>
HTML, PHP alapok (gyorstalpaló) HTML alapok (gyorstalpaló) PHP alapok (gyorstalpaló) 127/28
A cél: Webes kliensről manipulálni az adatbázist. 127/29
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 127/30
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 127/31
PHP történet 2015 2010 2004 2000 1997 1996 1995 1994 PHP v 7.0 PHP Next Generation PHP v 6.0 Unicode támogatás (utf8, utf16), de nem adták ki! PHP v 5.0 OOP támogatás PHP v 4.0 PHP Hypertext Preprocessor v 3.0 Personal Home Page Tools (PHP Tools v 2.0) Personal Home Page Tools (PHP Tools v 1.0) Personal Home Page/Forms Interpreter (PHP/FI) 127/32
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. 127/33
Tudattágítók Rasmus Lerdorf, Andi Gutmans, Zeev Suraski 127/34
PHP kód a HTML oldalon phppl_1.php <html> <head> <title>html PHP-vel!</title> </head> <body> <?php echo "Helló Világ!";?> </body> </html> <?php a php kód kezdete echo a php kód kimenete, visszaadott értéke?> a php kód vége phppl_1.php Az oldal forráskódja phppl_1.php <html> <head> <title>html PHP-vel!</title> </head> <body> Helló Világ! </body> </html> 127/35
Dinamikus HTML oldal PHP-vel phppl_2.php <html> <head> <title>html PHP-vel!</title> </head> <body> Kakukk! <br> A mai dátum: <?php echo date("y.f.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> www.bitman.hu Mitől dinamikus? F5 127/36
PHP 2 perc alatt 1. perc A PHP kód kezdete: <?php... vége:?> Szintaxis: Változók: Gyengén típusos nyelv! 127/37 $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 //, # 127/38
Az adatbázis-programozás lépései Kapcsolódás Lekérdezés Eredmények feldolgozása Lekapcsolódás 127/39
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 127/40
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 127/41
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 127/42
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 127/43
beurlap.html beurlap.htm <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> 127/44
belep.php v1 belep.php <?php $conn = oci_connect('system', 'jelszo', 'localhost/xe'); $jsz = $_POST['psw']; $sqlp = "select jelszo from ouser where nev= '$_POST[nev]'"; $stmt = oci_parse($conn, $sqlp); if ($stmt){ oci_execute($stmt, OCI_DEFAULT); oci_fetch($stmt); $kk = oci_result($stmt, "JELSZO"); if ($kk == $jsz) echo "Szia User! Dolgozhatsz!"; else echo "Nem ismerlek! Nem dolgozhatsz!"; oci_free_statement($stmt); } oci_close($conn);?> Kurzor deklarálása Megnyitás Kiolvasás Lezárás 127/45
belep.php v2 belep.php <?php $conn = oci_connect('system', 'jelszo', 'localhost/xe'); $jsz = $_POST['psw']; $sqlp = "select jelszo from ouser where nev= '$_POST[nev]'"; $stmt = oci_parse($conn, $sqlp); oci_execute($stmt); $adat = oci_fetch_array($stmt, OCI_ASSOC); if ($adat['jelszo'] == $jsz) echo "Szia User! Dolgozhatsz!"; else echo "Nem ismerlek! Nem dolgozhatsz!"; oci_close($conn);?> 127/46
Szükséges összetevők Adatbázis szerver: Oracle Express Edition 11g (12c) PHP: letölthető önmagában, vagy programcsomag részeként Webszerver: letölthető önmagában, vagy programcsomag részeként Javaslat: XAMPP X platformfüggetlen, Apache webszerver, MySQL adatbáziskezelő, PHP, Perl 127/47
DB szerver: Oracle 11g Express Edition 127/48
PHP Oracle kapcsolat 127/49
Webszerver: Apache (XAMPP) 127/50
XAMPP Kezelőpult 127/51
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 Univerzális Sql Commander Tárolt rutinok hívása PHP-ből Tranzakció kezelés PHP-ből 127/52
PHP Oracle kapcsolat 127/53
PHP Oracle kapcsolat connect password 127/54
A feladat alapja: A Melos tábla: Azon Nev Parancssor Melos Fizetes Melos Azon Nev Fizetes Create table Melos( Azon char(3) primary key, Nev varchar2(30), Fizetes integer); 127/55
abkezel.htm (1. rész) abkezel.htm <html> <head> <title> AB kezelő </title> </head> <body> <p><b>adatfelvitel</b></p> <form action="abinsert.php" method=post> <p>kérem az azonosítót: <br> <input type=text name= "uaz" size=4> <p>kérem az új nevet: <br> <input type=text name="unev" size=20> <p>kérem a fizetést: <br> <input type=text name="ufiz" size=12> <p><input type=submit name="küldés" value="beszúr"> <input type="reset" value="ürít"></p> </form><br> (3/1) 127/56
abkezel.htm (2. rész) abkezel.htm (3/2) <p><b>adatmódosítás</b></p> <form action="abupdatefiz.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"> </form><br> 127/57
abkezel.htm (3. rész) abkezel.htm (3/3) <p><b>adattörlés</b></p> <form action="abdelete.php" method=post> <p>kérem a törlendő azonosítót: <br> <input type=text name="taz" size=4> <p><input type=submit name="küldés4" value="rekord törlése"> </form><br> <p><b>lista</b></p> <form action="abkiir.php" method=post> <p><input type=submit name="küldés3" value="kiíratás"> </form> </body> </html> 127/58
PHP Oracle abinsert.php abinsert.php <?php $conn = oci_connect('system', 'jelszo', 'localhost/xe'); $sqlp = "insert into melos values ('$_POST[uaz]','$_POST[unev]',$_POST[ufiz])"; $stmt = oci_parse($conn, $sqlp); if (oci_execute($stmt)){echo "Rekord hozzáadva!";} else { echo "Gond van!"; } oci_close($conn);?> Parancssor 127/59
PHP Oracle abkiir.php v1 abkiir.php <?php $conn = oci_connect('system', 'jelszo', 'localhost/xe'); $stmt = oci_parse($conn, "select * from melos"); if ($stmt){ oci_execute($stmt, OCI_DEFAULT); while (oci_fetch($stmt)) { $az = oci_result($stmt, "AZON"); $ne = oci_result($stmt, "NEV"); $fi = oci_result($stmt, "FIZETES"); echo "Azonosító: ".$az." - Név: ".$ne." - Fizetés: ".$fi; } oci_free_statement($stmt); } oci_close($conn); abkiir.php?> 127/60
PHP Oracle abkiir.php v2 abkiir.php <?php $conn = oci_connect('system', 'jelszo', 'localhost/xe'); $stmt = oci_parse($conn, "select * from melos"); if ($stmt){ oci_execute($stmt, OCI_DEFAULT);?> while (oci_fetch($stmt)) { $az = oci_result($stmt, 1); A mezők számozása $ne = oci_result($stmt, 2); 1-től indul! $fi = oci_result($stmt, 3); echo "Azonosító: ".$az." - Név: ".$ne." - Fizetés: ".$fi; } oci_free_statement($stmt); } oci_close($conn); abkiir.php 127/61
PHP Oracle abkiir.php v3 abkiir.php <?php $conn = oci_connect('system', 'jelszo', 'localhost/xe'); $stmt = oci_parse($conn, "select * from melos"); oci_execute($stmt); while($adat = oci_fetch_array($stmt, OCI_ASSOC)) { print ("Azonosító: ".$adat["azon"]." - Név: ". $adat["nev"]." - Fizetés: ".$adat["fizetes"]); print("<br>"); } oci_close($conn);?> abkiir.php 127/62
PHP Oracle abkiir.php v4 abkiir.php <?php $conn = oci_connect('system', 'jelszo', 'localhost/xe'); $stmt = oci_parse($conn, "select * from melos"); oci_execute($stmt); while($adat = oci_fetch_array($stmt, OCI_NUM)) { print ("Azonosító: ".$adat[0]." - Név: ".$adat[1]. " - Fizetés: ".$adat[2]); print("<br>"); } oci_close($conn);?> A tömb indexe 0-tól indul! abkiir.php 127/63
PHP Oracle abupdatefiz.php abupdatefiz.php <?php $conn = oci_connect('system', 'jelszo', 'localhost/xe'); $sqlp = "update melos set fizetes=$_post[fiz] where azon='$_post[az]'"; $stmt = oci_parse($conn, $sqlp); if (oci_execute($stmt)){echo "Fizetés módosítva!";} else { echo "Gond van!"; } oci_close($conn);?> abkiir.php 127/64
PHP Oracle abdelete.php abdelete.php <?php $conn = oci_connect('system', 'jelszo', 'localhost/xe'); $sqlp = "delete from melos where azon='$_post[taz]'"; $stmt = oci_parse($conn, $sqlp); if (oci_execute($stmt)){echo "Rekord törölve!";} else { echo "Gond van!"; } oci_close($conn);?> abkiirciklus.php 127/65
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 Univerzális Sql Commander Tárolt rutinok hívása PHP-ből Tranzakció kezelés PHP-ből 127/66
127/67
PHP Oracle kapcsolat PHP-Oracle 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_oci8xxx.dll Engedélyezése: php.ini fájlban kivenni a ;-t: ; extension=php_oci8_12c.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 127/68
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 Univerzális Sql Commander Tárolt rutinok hívása PHP-ből Tranzakció kezelés PHP-ből 127/69
A kapcsolódás mkapcs1.php <?php $conn = oci_connect('system', 'rendszer', 'localhost/xe'); if (!$conn){ $err = oci_error(); echo "Hibás Oracle kapcsolódás: ".$err['message'], "\n"; } else {echo "Sikeres kapcsolódás: ";} oci_close($conn);?> www.bitman.hu Ha nem működik a szerver, vagy hibás a szerver neve: Hibás Oracle kapcsolódás: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor 127/70
A kapcsolódás mkapcs1.php <?php $conn = oci_connect('system', 'reszer', 'localhost/xe'); if (!$conn){ $err = oci_error(); echo "Hibás Oracle kapcsolódás: ".$err['message'], "\n"; } else {echo "Sikeres kapcsolódás: ";} oci_close($conn);?> www.bitman.hu Hibás név vagy jelszó esetén: Hibás Oracle kapcsolódás: ORA-01017: invalid username/password; logon denied 127/71
Kategóriák lekérdezése kategoriak.php <?php $conn = oci_connect('system', 'jelszo', 'localhost/xe'); $stmt = oci_parse($conn, "select * from kategoria"); oci_execute($stmt); while($adat = oci_fetch_array($stmt, OCI_ASSOC)) { print ("Kód: ".$adat["kkod"]." - Név: ".$adat["nev"]); print("<br>"); } oci_close($conn);?> 127/72
sqlc.inc A kapcsolódás Elegáns megoldás <?php $conn = false; function MakeConn(){ global $conn; $conn = oci_connect('system', 'jelszo', 'localhost/xe'); if (!$conn){ $err = oci_error(); echo "Hibás Oracle kapcsolódás: ".$err['message'], "\n"; } } function CloseConn(){ global $conn; oci_close($conn); }?> 127/73 kiir2.php <?php include "seged.inc"; MakeConn(); $stmt = oci_parse($conn, "select * from kategoria"); oci_execute($stmt); while($adat = oci_fetch_array($stmt, OCI_ASSOC)) { print ("Kód: ".$adat["kkod"]." - Név: ".$adat["nev"]); print("<br>"); } CloseConn();?>
HTML Elegáns megoldás Táblázatos formátumú kiíratás katlista1.php <body BGCOLOR="FFFF99"> <table width="200" border="1"> <tr> <th width="50"> <div align="center">kód </div></th> <th width="150"> <div align="center">név </div></th> </tr> <?php include "seged.inc"; MakeConn(); $stmt = oci_parse($conn, "select * from kategoria"); oci_execute($stmt); while($adat = oci_fetch_array($stmt, OCI_ASSOC)) { print '<tr><td>'.$adat["kkod"].'</td><td>'.$adat["nev"].'</td></tr>'; } CloseConn();?> </table> 127/74
katlista2.php <html><head> <link rel="stylesheet" type="text/css" href="kl2.css"> </head> <body BGCOLOR="FFFF99"> <div class="sktable" > <table width="200" border="1"> <tr> <td width="50"> <div align="center">kód </div></td> <td width="150"> <div align="center">név </div></td> </tr> <?php include "seged.inc"; MakeConn(); $stmt = oci_parse($conn, "select * from kategoria"); oci_execute($stmt); while($adat = oci_fetch_array($stmt, OCI_ASSOC)) { print '<tr><td>'.$adat["kkod"].'</td><td>'.$adat["nev"].'</td></tr>'; } CloseConn();?> </table> </div> <br> <form action="kategoriakezelo.php" method=post> <input type=submit class="btn" name="vissza" value="vissza"> </form> 127/75
127/76
127/77
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 Univerzális Sql Commander Tárolt rutinok hívása PHP-ből Tranzakció kezelés PHP-ből 127/78
MiniBolt ER modell Kkod Nev Tkod Nev Ar Kategoria K-T Termek Leiras Sorszam Vasarlas Idopont Nev Darab Fkod Leiras Vasarlo V-F FizModok VID Cim 127/79
MiniBolt struktúra modell Kategoria Kkod Nev Termek Kategoria Tkod Nev Ar Leiras Vasarlas Tkod Sorszam Idopont Darab VID Vasarlo FizModok VID Nev Cim Fizmod Fkod Leiras 127/80
Táblajáték Kategória Kategoria Kkod Nev Parancssor Create table Kategoria( Kkod char(3) primary key, Nev varchar(20) not null, Unique (Nev)); Ha nem létezne a tábla, hozd létre! 127/81
A Kategória tábla kezelő felülete 1 KategoriaKezelo.php 2 3 4 127/82
KategóriKezelő.php KategoriaKezelo.php (3/1) <html> <head> <title> Kategória Kezelő </title> </head> <body BGCOLOR="66CC99" TEXT="003300"> 1 <p><b>kategória lista</b></p> <form action="katlista.php" method=post> <input type=submit name="lista" value="listázás"> </form> 127/83
KategóriKezelő.php KategoriaKezelo.php 2 (3/2) <p><b>kategória kereső</b></p> <form action="katnev.php" method=post> <select name="kkodok"> <?php include "seged.inc"; MakeConn(); $stmt = oci_parse($conn, "select kkod from kategoria order by kkod"); oci_execute($stmt); while($adat = oci_fetch_array($stmt, OCI_ASSOC)) { print '<option value="'.$adat['kkod'].'">'.$adat['kkod'].'</option>'; } CloseConn();?> </select> <input type=submit name="keres" value="keresés"> </form> 127/84
KategóriKezelő.php KategoriaKezelo.php <p><b>új kategória</b></p> <form action="ujkat.php" method=post> Kód: <input type=text name="ujkod" size=6><br><br> Név: <input type=text name="ujnev" size=20><br><br> <input type=submit name="ujkat" value="létrehozás"> </form> <p><b>kategória törlés</b></p> <form action="kattorol.php" method=post> <select name="ktkod"> <?php MakeConn(); 3 4 $stmt = oci_parse($conn, "select kkod from kategoria order by kkod"); oci_execute($stmt); while($adat = oci_fetch_array($stmt, OCI_ASSOC)) { print '<option value="'.$adat['kkod'].'">'.$adat['kkod'].'</option>'; } CloseConn();?> </select> <input type=submit name="torol" value="törlés"> </form> </body> 127/85 </html> (3/3)
1 katlista.php v1 katlista.php <body BGCOLOR="FFFF99"> <table width="200" border="1"> <tr> <th width="50"> <div align="center">kód </div></th> <th width="150"> <div align="center">név </div></th> </tr> <?php include "seged.inc"; MakeConn(); $stmt = oci_parse($conn, "select * from kategoria"); if ($stmt){ oci_execute($stmt, OCI_DEFAULT); while (oci_fetch($stmt)) { $kk = oci_result($stmt, "KKOD"); $kn = oci_result($stmt, "NEV"); echo '<tr><td>'.$kk.'</td><td>'.$kn.'</td></tr>'; } oci_free_statement($stmt); CloseConn(); }?> </table> <br> <form action="kategoriakezelo.php" method=post> <input 127/86type=submit name="vissza" value="vissza"> </form> Kurzor deklarálása Megnyitás Kiolvasás Lezárás
1 katlista.php v2 katlista.php <body BGCOLOR="FFFF99"> <table width="200" border="1"> <tr> <th width="50"> <div align="center">kód </div></th> <th width="150"> <div align="center">név </div></th> </tr> <?php include "seged.inc"; MakeConn(); $stmt = oci_parse($conn, "select * from kategoria"); oci_execute($stmt); while($adat = oci_fetch_array($stmt, OCI_ASSOC)) { print '<tr><td>'.$adat["kkod"].'</td><td>'.$adat["nev"].'</td></tr>'; } CloseConn();?> </table> <br> <form action="kategoriakezelo.php" method=post> <input type=submit name="vissza" value="vissza"> 127/87 </form>
2 katnev.php katnev.php <body BGCOLOR="FFFF99"> <?php include "seged.inc"; MakeConn(); $kk = $_REQUEST['kkodok']; $stmt = oci_parse($conn, "select nev from kategoria where Kkod='".$kk."'"); oci_execute($stmt); $adat = oci_fetch_array($stmt, OCI_ASSOC); echo 'A '.$kk.' kategória neve: '.$adat['nev']; CloseConn();?> <br><br> <form action="kategoriakezelo.php" method=post> <input type=submit name="vissza" value="vissza"> </form> 127/88
2b Kategória keresés B-verzió KategoriaKezelo3.php (2/1) <p><b>kategória kereső</b></p> <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post"> <select name="kkodok"> <?php include "seged.inc"; MakeConn(); $stmt = oci_parse($conn, "select kkod from kategoria order by kkod"); oci_execute($stmt); while($adat = oci_fetch_array($stmt, OCI_ASSOC)) { print '<option value="'.$adat['kkod'].'">'.$adat['kkod'].'</option>'; } CloseConn();?> </select> <input type=submit name="keres" value="keresés"/> </form> 127/89
2b Kategória keresés B-verzió KategoriaKezelo3.php (2/2) <?php if($_post) { if(isset($_post['kkodok'])) { if($_post['kkodok'] == 'NULL') { echo '<p>válassz ki egy Kategóriakódot, aztán <strong>keresés</strong>.</p>'; } else { MakeConn(); $kk = $_POST['kkodok']; $stmt = oci_parse($conn, "select nev from kategoria where Kkod='".$kk."'"); oci_execute($stmt); $adat = oci_fetch_array($stmt, OCI_ASSOC); echo 'A <strong>'.$kk.' </strong>kategória neve: <strong>'. $adat['nev']; CloseConn(); } } }?> 127/90
3 ujkat.php ujkat.php <body BGCOLOR="FFFF99"> <?php include "seged.inc"; MakeConn(); $sqlp="insert INTO Kategoria VALUES ('$_POST[ujkod]','$_POST[ujnev]')"; $stmt = oci_parse($conn, $sqlp); if (oci_execute($stmt)){echo "Rekord hozzáadva!";} else { echo "Gond van!"; } CloseConn();?> <br><br> <form action="kategoriakezelo.php" method=post> <input type=submit name="vissza" value="vissza"> </form> ujkat.php 127/91
4 kattorol.php kattorol.php <body BGCOLOR="FFFF99"> <?php include "seged.inc"; MakeConn(); $kk = $_REQUEST['ktkod']; $sqlp="delete FROM Kategoria Where Kkod='$kk'"; $stmt = oci_parse($conn, $sqlp); if (oci_execute($stmt)){echo "Rekord törölve!";} else { echo "Gond van!"; } CloseConn();?> <form action="kategoriakezelo.php" method=post> <input type=submit name="vissza" value="vissza"> </form> 127/92
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 Univerzális Sql Commander Tárolt rutinok hívása PHP-ből Tranzakció kezelés PHP-ből 127/93
Univerzális sql commander 127/94
Univerzális sql commander sqlc.htm (2/1) <html> <head> <title>sql Commander</title> <link rel="stylesheet" type="text/css" href="sqlc.css"> </head> <body> <form name="np" action="sqlc1.php" method="post"> <fieldset> <legend>sql COMMANDER</legend> <p>sql parancs:<br> <textarea id="szoveg" name="szoveg" rows="7" cols="49"></textarea> <p><input type="reset" value="reset"/> <input type=submit name="ftolt" value="végrehajtás"> </form> 127/95
Univerzális sql commander sqlc.htm (2/2) <form name="sp" action="sqlc2.php" method="post"> <p>sql SELECT, SHOW parancs:<br> <textarea id="szoveg2" name="szoveg2" rows="4" cols="49"></textarea> <p><input type="reset" value="reset"/> <input type=submit name="ftolt" value="végrehajtás"> </form> <form name="tinfo" action="sqlc3.php" method="post"> <p>tábla információk:<br> <input type=text name="tlb" size=25> </p> <input type=submit name="ftolt" value="infó megjelenítése"> </form> </fieldset> </body> </html> 127/96
Univerzális sql commander sqlc.css @charset "utf-8"; body { background: url(htk.jpg) no-repeat center center fixed; -webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-size: cover; } legend { color: black; border: 3px solid darkgoldenrod; background: palegoldenrod; padding: 0 4px; } fieldset { width: 420px; border: 3px solid darkgoldenrod; padding: 15px; background: beige; } 127/97 www.bitman.hu
Univerzális sql commander sqlc1.php <body BGCOLOR="FFFF99"> <?php $sqlp = $_POST['szoveg']; print "SQL parancs: ".$sqlp."<br>"; include "sqlc.inc"; MakeConn(); $sqle = oci_parse($conn, $sqlp); if (oci_execute($sqle)){ echo "A parancs rendben lefutott!"; } else { $err = oci_error(); echo "Gond van: ".$err['message'], "\n"; } CloseConn();?> <br><br> <button 127/98 onclick='window.history.back();'>vissza</button> www.bitman.hu www.bitman.hu
Univerzális sql commander sqlc.inc <?php $conn = false; function MakeConn(){ global $conn; $conn = oci_connect('system', 'rendszer', 'localhost/xe'); if (!$conn){ $err = oci_error(); echo "Hibás Oracle kapcsolódás: ".$err['message'], "\n"; } } function CloseConn(){ global $conn; oci_close($conn); }?> 127/99
Univerzális sql commander sqlc2.php www.bitman.hu <body BGCOLOR="FFFF99"> <?php $sqlp = $_POST['szoveg2']; print "Kiadott SQL parancs: ".$sqlp."<br><br>"; include "sqlc.inc"; MakeConn(); $sqle = oci_parse($conn, $sqlp); if (oci_execute($sqle)) { $mezodb = oci_num_fields($sqle); for ($i = 1; $i <= $mezodb; $i++) { echo '<span style="display: inline-block; width: 100px;">'. oci_field_name($sqle, $i).'</span>' ; } print ("<br>"); while (($row = oci_fetch_array($sqle, OCI_NUM))!= false) { for($i=0; $i < $mezodb; $i++){ print ('<span style="display: inline-block; width: 100px;">'.$row[$i].'</span>'); } print ("<br>"); www.bitman.hu } } CloseConn();?> <br> <button onclick='window.history.back();'> 127/100 Vissza</button>
Univerzális sql commander www.bitman.hu sqlc3.php (3/1) <body BGCOLOR="FFFF99"> <font face="arial" > <?php $tn = strtoupper($_post['tlb']); print "Tábla neve: ".$tn."<br><br>"; print "Mezőnevek - típusok: <br>"; www.bitman.hu include "sqlc.inc"; MakeConn(); $sqlp = "select * from ".$tn; $sqle = oci_parse($conn, $sqlp); if (oci_execute($sqle)) { $mezodb = oci_num_fields($sqle); for ($i = 1; $i <= $mezodb; $i++) { echo '<span style="display: inline-block; width: 100px;">'. oci_field_name($sqle, $i).'</span>'; echo '<span style="display: inline-block; width: 100px;">'. oci_field_type($sqle, $i).'</span>'.'<br>'; } print ("<br>"); } 127/101
Univerzális sql commander sqlc3.php (3/2) $sqlp = "select COLUMN_NAME PKN from USER_CONS_COLUMNS where CONSTRAINT_NAME IN (SELECT constraint_name FROM user_constraints WHERE table_name = '".$tn."' and CONSTRAINT_TYPE='P')"; $sqls = oci_parse($conn, $sqlp); oci_execute($sqls); while ($row = oci_fetch_array ($sqls, OCI_BOTH)) { echo "Elsődleges kulcs mező: ".$row['pkn']."<br>"; } $sqlp = "select COLUMN_NAME PKN from USER_CONS_COLUMNS where CONSTRAINT_NAME IN (SELECT constraint_name FROM user_constraints WHERE table_name = '".$tn."' and CONSTRAINT_TYPE='C')"; $sqls = oci_parse($conn, $sqlp); oci_execute($sqls); while ($row = oci_fetch_array ($sqls, OCI_BOTH)) { echo "NOT NULL mező: ".$row['pkn']."<br>"; } 127/102
Univerzális sql commander sqlc1.php (3/3) $sqlp = " SELECT UCC1.TABLE_NAME '.' UCC1.COLUMN_NAME CSN, UCC2.TABLE_NAME '.' UCC2.COLUMN_NAME RFN FROM USER_CONSTRAINTS uc, USER_CONS_COLUMNS ucc1, USER_CONS_COLUMNS ucc2 WHERE UC.CONSTRAINT_NAME = UCC1.CONSTRAINT_NAME AND UC.R_CONSTRAINT_NAME = UCC2.CONSTRAINT_NAME AND UCC1.POSITION = UCC2.POSITION AND UC.CONSTRAINT_TYPE = 'R' and UCC1.TABLE_NAME = '".$tn."' ORDER BY UCC1.TABLE_NAME, UC.CONSTRAINT_NAME"; $sqls = oci_parse($conn, $sqlp); oci_execute($sqls); while ($row = oci_fetch_array ($sqls, OCI_BOTH)) { echo "Idegen kulcs hivatkozás:<br>"; echo $row['csn']." references "; echo $row['rfn']." <br>"; } CloseConn();?> <br> <button 127/103 onclick='window.history.back();'>vissza</button>
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 Univerzális Sql Commander Tárolt rutinok hívása PHP-ből Tranzakció kezelés PHP-ből 127/104
Bolt KatNev tárolt eljárás kategoria kkod nev KatNev nevű tárolt eljárás, mely kiírja a képernyőre egy paraméterként megadott kódú kategória nevét. create or replace procedure KatNev (kk in char, uz out varchar2) as db int; begin select count(*) into db from Kategoria where Kkod = kk; if db = 1 then select nev into uz from Kategoria where Kkod = kk; else uz := 'Nem létezik ez a Kategória kód!'; end if; end; 127/105
Bolt KatNev tárolt eljárás www.bitman.hu www.bitman.hu 127/106
katnev.php kategoria kkod nev katnev.php <body BGCOLOR="FFFF99"> <?php include "seged.inc"; MakeConn(); $kk = $_REQUEST['kkodok']; $sqlp = "begin KatNev(:a, :b); end;"; $stmt = oci_parse($conn, $sqlp); oci_bind_by_name($stmt, ':a', $kk, 32); oci_bind_by_name($stmt, ':b', $message, 32); oci_execute($stmt); echo 'A '.$kk.' kategória neve: '."$message\n"; CloseConn();?> <br><br> <form action="kategoriakezelo.php" method=post> <input type=submit name="vissza" value="vissza"> </form> 127/107
Bolt UjKat tárolt eljárás kategoria kkod nev UjKat nevű tárolt eljárás, mely létrehoz egy új kategóriát. create or replace procedure UjKat (kk in varchar2, kn in varchar2) as begin insert into Kategoria values (kk, kn); end; www.bitman.hu 127/108
ujkat.php ujkat.php <body BGCOLOR="FFFF99"> <?php include "seged.inc"; MakeConn(); $sqlp="begin ujkat('$_post[ujkod]','$_post[ujnev]'); end;"; $stmt = oci_parse($conn, $sqlp); if (oci_execute($stmt)){echo "Rekord hozzáadva!";} else { echo "Gond van!"; } CloseConn();?> <br><br> <form action="o_kk.php" method=post> <input type=submit name="vissza" value="vissza"> </form> 127/109
KatTermAtlagAr fgv. kategoria kkod nev kategoria termek tkod nev ar leiras KatTermAtlagAr nevű tárolt függvény, mely visszaadja egy adott kategóriájú termékek átlagárát. create or replace function KatTermAtlagAr (knevbe in char) return int is db int; atlag int := 0; begin select count(*) into db from kategoria where nev=knevbe; if db = 0 then atlag := -1; else select avg(ar) into atlag from termek t inner join kategoria k on t.kategoria=k.kkod where k.nev=knevbe; end if; return atlag; end; 127/110
Bolt KatTermAtlagAr tárolt függvény www.bitman.hu www.bitman.hu 127/111 select KatTermAtlagAr( Egyéb ) from dual;
kattermatlagar.php kattermatlagar.php <body BGCOLOR="FFFF99"> <?php include "seged.inc"; MakeConn(); $kk = $_REQUEST['katnev']; $sqlp = "begin :atl := KatTermAtlagAr(:be); end;"; $stmt = oci_parse($conn, $sqlp); oci_bind_by_name($stmt, ':be', $kk); oci_bind_by_name($stmt, ':atl', $atlagar, 32); oci_execute($stmt); echo 'A '.$kk.' kategória termékeinek átlagára: '."$atlagar\n"; CloseConn();?> <br><br> <form action="o_kk3.php" method=post> <input type=submit name="vissza" value="vissza"> </form> 127/112
Bolt KatTermAtlagAr tárolt függvény www.bitman.hu www.bitman.hu 127/113
TermKat fgv. kategoria kkod nev kategoria termek tkod nev ar leiras TermKat nevű tárolt függvény, mely visszaadja egy adott nevű termék kategóriáját. create or replace function TermKat (tnevbe in char) return varchar2 is db int; knev varchar2(30); begin select count(*) into db from termek where nev=tnevbe; if db = 0 then knev := 'Nincs ' tnevbe ' nevű termék!'; else select k.nev into knev from termek t inner join kategoria k on t.kategoria=k.kkod where t.nev=tnevbe; end if; return knev; end; 127/114
Bolt TermKat tárolt függvény www.bitman.hu www.bitman.hu 127/115 select TermKat( sör ) from dual;
termkat.php termkat.php <body BGCOLOR="FFFF99"> <?php include "seged.inc"; MakeConn(); $kk = $_REQUEST['termnev']; $sqlp = "begin :kat := TermKat(:nbe); end;"; $stmt = oci_parse($conn, $sqlp); oci_bind_by_name($stmt, ':nbe', $kk); oci_bind_by_name($stmt,':kat', $kateg, 100); oci_execute($stmt); echo 'A '.$kk.' nevű termék kategóriája: '."$kateg\n"; CloseConn();?> <br><br> <form action="o_kk3.php" method=post> <input type=submit name="vissza" value="vissza"> </form> 127/116
Bolt TermKat tárolt függvény www.bitman.hu www.bitman.hu www.bitman.hu 127/117
Bevetel fgv. kategoria termek tkod nev ar tkod vasarlas idopont darab Bevetel nevű tárolt függvény, mely visszaadja egy adott nap bevételét. A dátumot a magyar szokásoknak megfelelő yyyy.mm.dd alakban kapja meg a függvény! create or replace function Bevetel (ip in varchar2) return int as bev int:=0; begin select sum(ar*darab) into bev from Termek t inner join Vasarlas v on t.tkod=v.tkod where to_char(idopont,'yyyy.mm.dd')=ip; return bev; end; 127/118
Bolt Bevetel tárolt függvény www.bitman.hu www.bitman.hu 127/119 select Bevetel( 2016.03.11 ) from dual;
termkat.php termkat.php <body BGCOLOR="FFFF99"> <?php include "seged.inc"; MakeConn(); $kk = $_REQUEST['bedat']; $sqlp = "begin :bev := Bevetel(:beip); end;"; $stmt = oci_parse($conn, $sqlp); oci_bind_by_name($stmt, ':beip', $kk); oci_bind_by_name($stmt, ':bev', $bevetel, 32); oci_execute($stmt); echo 'A '.$kk.' napi bevétel: '."$bevetel\n"; CloseConn();?> <br><br> <form action="o_kk3.php" method=post> <input type=submit name="vissza" value="vissza"> </form> 127/120
Bolt TermKat tárolt függvény www.bitman.hu www.bitman.hu www.bitman.hu 127/121
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 Univerzális Sql Commander Tárolt rutinok hívása PHP-ből Tranzakció kezelés PHP-ből 127/122
Tranzakció kezelés PHP-ben PHP-ben tranzakciót az oci_execute paranccsal lehet kezdeményezni, a parancs működési módja a mód paraméterrel állítható be: oci_execute($stmt, mód); A PHP alapbeállítása az OCI_COMMIT_ON_SUCCESS mód, ami azt jelenti, hogy minden kiadott parancs (oci_execute($stmt);) azonnal végrehajtásra kerül, nincsenek tranzakciók. Ha tranzakciókat akarunk használni, a parancsok kiadásakor ezt a módot meg kell változtatni: oci_execute($stmt, OCI_NO_AUTO_COMMIT); Az így végrehajtott parancsok az: oci_execute($stmt); vagy az oci_commit($conn); utasítással véglegesíthetők, az oci_rollback($conn); utasítással pedig visszavonhatók. 127/123
Tranzakció kezelés PHP-ben mytab col1 <?php $conn = oci_connect('hr', 'welcome', 'localhost/xe'); $sqlp = 'INSERT INTO mytab (col1) VALUES (:bv) '; $stid = oci_parse($conn, $sqlp); oci_bind_by_name($stid, ':bv', $i, 10); for ($i = 1; $i <= 5; ++$i) { oci_execute($stid, OCI_NO_AUTO_COMMIT); } oci_commit($conn);?> Véglegesíti az összes új értéket: 1, 2, 3, 4, 5 127/124
Izolációs szint beállítása set transaction [READ ONLY READ WRITE] [isolation level [SERIALIZABLE READ COMMITED] Parancssor Parancssor 127/125 B ITI T MAN
Izolációs szintek Isolation level Elkülönítési szint Phantom read Fantom olvasás Nem lehetséges Non repeatable read Nem megismételhető olvasás Dirty read Piszkos olvasás SERIALIZABLE Sorba rendezhető Nem lehetséges Nem lehetséges READ COMMITED Lehetséges Nem lehetséges Nem lehetséges Ismételhető olvasású READ ONLY Olvasás biztos Lehetséges Lehetséges Nem lehetséges READ WRITE Nem olvasás biztos Lehetséges Lehetséges Lehetséges 127/126
VÉGE VÉGE 127/127