8. oracle - phpusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1608_ora_php.pdf · 127/4 b it man html...
TRANSCRIPT
B IT MAN127/1 v: 2016.03.14B IT MAN
Adatbázis Rendszerek II.
8. Oracle - PHP
B IT MAN127/2
Témakörök
A kategória tábla PHP programja
Univerzális Sql Commander
PHP előkészületek
PHP adatbázis alapok
Tárolt rutinok hívása PHP-ből
HTML, PHP alapok (gyorstalpaló)
Melós (miniprogram)
Tranzakció kezelés PHP-ből
B IT MAN127/3
HTML, PHP alapok (gyorstalpaló)
HTML alapok (gyorstalpaló)
PHP alapok (gyorstalpaló)
B IT MAN127/4
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…
B IT MAN127/5
HTML alapok 2.
<html>
<head>
<title>Első weboldalam</title>
</head>
<body>
<p>Helló Világ!</p>
</body>
</html>
1. Jegyzettömb, beírás2. Mentés: pl. prb.htm3. Megnézés
böngészőben2x
B IT MAN127/6
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>
</html>
B IT MAN127/7
Milyen szerkesztőt használjunk
Jegyzettömb Notepad++
B IT MAN127/8 B IT MAN
Az igazi kód…
B IT MAN127/9
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>
B IT MAN127/10
Címszintek, igazítás
www.minta.hu
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>
B IT MAN127/11
A dokumentum tagolása – Bekezdések, blokkok
<div align= "irány"> <!–névtelen blokk -->szövegek, képek…
</div>
<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 class= "név" align= "irány"><!–nevesített blokk-->szövegek, képek…
</div>
B IT MAN127/12
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>
www
B IT MAN127/13
<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>
Karakterformátumok
www.bitman.hu
Forráskód
B IT MAN127/14
Színkódok
A színkódok megadhatók:
– Névvel: "darkblue",
– Hexa kóddal: "#00008b",
– RGB kóddal: "rgb(0,0,139)",
B IT MAN127/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.
B IT MAN
B IT MAN127/16
<ul> <li>Hapci</li><li>Morgó</li> <li>Szundi</li>
</ul>
<ol> <li>Elment vadászni,</li><li>Meglőtte,</li> <li>Hazavitte,</li> <li>Mind megette.</li>
</ol>
Felsorolás – számozás
www.bitman.hu
Forráskód
B IT MAN127/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>
Táblázatok
Táblázat
kezdete
Sor
Oszlop
www.bitman.hu
B IT MAN127/18
Külső szegély,
és mérete
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>
<TD><P align=right>1</P></TD>
<TD><P>Béla</P></TD>
<TD><P>1975</P></TD>
<TD><P>Budapest</P></TD></TR>
Háttérszín Cellák közti
távolság Cellamagasság
Teljes szélesség
Cella szélességwww.bitman.hu
B IT MAN127/19
Linkek a webhelyen
index.html
www.origo.hu3
2
2
1
1. Weblapon belülre mutató link
2. Webhelyen belülre mutató link
3. Webhelyen kívülre mutató link
1
2
3
B IT MAN127/20
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>
1
www.bitman.hu
Forráskód
B IT MAN127/21
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>
2
3
B IT MAN127/22
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
B IT MAN127/23
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
B IT MAN127/24
Feldolgozás – be_feldolgozo.php
www.bitman.hu
be_feldolgozo.php
<?php
$aa = $_POST['tm'];
print 'Szia '.$aa.'!';
?>
<form action="Be.html">
<br>
<input type=submit name="vissza" value="Vissza">
</form>
B IT MAN127/25
www.bitman.hu
HTML űrlap – Beviteli elemek
<input type= xxx >
text
password
checkbox
radio
select
submit
reset
B IT MAN
B IT MAN127/26
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>
B IT MAN127/27
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> B IT MAN
B IT MAN127/28
HTML, PHP alapok (gyorstalpaló)
HTML alapok (gyorstalpaló)
PHP alapok (gyorstalpaló)
B IT MAN127/29
A cél:
Webes kliensről manipulálni az adatbázist.
B IT MAN127/30
A megoldás:
PHP alkalmazása
Szerver-oldal
<HTML>
<HEAD>
<TITLE>
PHP
</TITLE>
</HEAD>
HTTP SQL
HTML
Kliens-oldal
<?php $connect
PirosKékZöld
Piros, Kék, Zöld
B IT MAN127/31
Név
Web böngésző
http://helo.php
PHP
feldolgozó
PHP
file
HTML
Jelszó DBMS
Adatbázis
szerver
Web szerver
A PHP működése
B IT MAN127/32
PHP történet
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)1994
1995
1996
1997
2000
2004
2010
2015
B IT MAN127/33
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.
B IT MAN
B IT MAN127/34
Tudattágítók
Rasmus Lerdorf, Andi Gutmans, Zeev Suraski
B IT MAN127/35
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>
phppl_1.php
<?php – a php kód kezdeteecho – a php kód kimenete, vissza-adott értéke?> – a php kód vége
phppl_1.php
<html><head>
<title>HTML PHP-vel!</title></head><body>
Helló Világ!</body></html>
Az oldal forráskódja
B IT MAN127/36
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
F5Mitől dinamikus?
B IT MAN127/37
PHP 2 perc alatt – 1. perc
A PHP kód kezdete: <?php . . . vége: ?>
Szintaxis:
– Változók: – Gyengén típusos nyelv!
• $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,
B IT MAN127/38
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 //, #
B IT MAN127/39
Az adatbázis-programozás lépései
Lekérdezés
Lekapcsolódás
Kapcsolódás
Eredmények
feldolgozása
B IT MAN127/40
Az adatbázis-programozás lépései
Lekapcsolódás
Driver regisztrálása
Kapcsolódás a DBMS-hez
Kapcsolódás
Lekérdezés
Eredmények
feldolgozása
B IT MAN127/41
Az adatbázis-programozás lépései
Lekapcsolódás
Eredmények
feldolgozása
SQL kérés (STATEMENT)
összeállítása
SQL kérés elküldése
Kapcsolódás
Lekérdezés
B IT MAN127/42
Az adatbázis-programozás lépései
Lekapcsolódás
Kapcsolódás
Az eredményhalmaz (CURSOR)
rekordonkénti bejárása
Az értékek átadása
programváltozóknak
Lekérdezés
Eredmények
feldolgozása
B IT MAN127/43
Az adatbázis-programozás lépései
Kapcsolódás
Lekérdezés
Eredmények
feldolgozása
Eredményhalmaz lezárása
SQL kérés lezárása
Kapcsolat lezárásaLekapcsolódás
B IT MAN127/44
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>
B IT MAN127/45
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
B IT MAN127/46
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);
?>
B IT MAN127/47
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
B IT MAN127/48
DB szerver: Oracle 11g Express Edition
B IT MAN127/49
PHP – Oracle kapcsolat
B IT MAN127/50
Webszerver: Apache (XAMPP)
B IT MAN127/51
XAMPP Kezelőpult
B IT MAN
B IT MAN127/52
Témakörök
A kategória tábla PHP programja
Univerzális Sql Commander
PHP előkészületek
PHP adatbázis alapok
Tárolt rutinok hívása PHP-ből
HTML, PHP alapok (gyorstalpaló)
Melós (miniprogram)
Tranzakció kezelés PHP-ből
B IT MAN127/53
PHP – Oracle kapcsolat
B IT MAN127/54
PHP – Oracle kapcsolat
connect
password
B IT MAN127/55
A feladat alapja:
A Melos tábla:
Create table Melos(
Azon char(3) primary key,
Nev varchar2(30),
Fizetes integer);
Melos
Nev
Fizetes
Azon
Parancssor
Melos
FizetesAzon Nev
B IT MAN127/56
abkezel.htm (1. rész)
B IT MAN
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)
B IT MAN127/57
abkezel.htm (2. rész)
B IT MAN
abkezel.htm
<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>
(3/2)
B IT MAN127/58
abkezel.htm (3. rész)
B IT MAN
abkezel.htm
<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>
(3/3)
B IT MAN127/59
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
B IT MAN127/60
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
B IT MAN127/61
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);$ne = oci_result($stmt, 2);$fi = oci_result($stmt, 3);echo "Azonosító: ".$az." - Név: ".$ne." - Fizetés: ".$fi;
}oci_free_statement($stmt);
}oci_close($conn);
?>abkiir.php
A mezők számozása1-től indul!
B IT MAN127/62
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
B IT MAN127/63
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);
?>
abkiir.php
A tömb indexe0-tól indul!
B IT MAN127/64
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
B IT MAN127/65
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
B IT MAN127/66
Témakörök
A kategória tábla PHP programja
Univerzális Sql Commander
PHP előkészületek
PHP adatbázis alapok
Tárolt rutinok hívása PHP-ből
HTML, PHP alapok (gyorstalpaló)
Melós (miniprogram)
Tranzakció kezelés PHP-ből
B IT MAN127/67 B IT MAN
B IT MAN127/68
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
B IT MAN127/69
Témakörök
A kategória tábla PHP programja
Univerzális Sql Commander
PHP előkészületek
PHP adatbázis alapok
Tárolt rutinok hívása PHP-ből
HTML, PHP alapok (gyorstalpaló)
Melós (miniprogram)
Tranzakció kezelés PHP-ből
B IT MAN127/70
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);?>
Ha nem működik a szerver, vagy hibás a szerver neve:
www.bitman.hu
Hibás Oracle kapcsolódás: ORA-12514:
TNS:listener does not currently know of
service requested in connect descriptor
B IT MAN127/71
A kapcsolódás
Hibás név vagy jelszó esetén:
www.bitman.hu
Hibás Oracle kapcsolódás:
ORA-01017: invalid
username/password; logon
denied
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);?>
B IT MAN127/72
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);
?>
B IT MAN127/73
sqlc.inc
<?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);
}?>
A kapcsolódás – Elegáns megoldás
kiir2.php
<?phpinclude "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();
?> B IT MAN
B IT MAN127/74
HTML – „Elegáns” megoldás
Táblázatos formátumú kiíratáskatlista1.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> <?phpinclude "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>
B IT MAN127/75
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> <?phpinclude "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>
B IT MAN127/76 B IT MAN
B IT MAN127/77 B IT MAN
B IT MAN127/78
Témakörök
A kategória tábla PHP programja
Univerzális Sql Commander
PHP előkészületek
PHP adatbázis alapok
Tárolt rutinok hívása PHP-ből
HTML, PHP alapok (gyorstalpaló)
Melós (miniprogram)
Tranzakció kezelés PHP-ből
B IT MAN127/79
MiniBolt ER modell
Termek
Tkod Nev
Leiras
Ar
Vasarlas
Kategoria
Kkod Nev
K-T
Vasarlo
VID
Nev
Cim
Sorszam
Idopont
Darab
FizModok
Fkod Leiras
V-F
B IT MAN127/80
MiniBolt struktúra modell
Termek
Vasarlas
IdopontSorszam DarabTkod VID
Nev
Kategoria
Leiras
FizModok
NevTkod Ar Leiras
Vasarlo
Nev
Kategoria
VID Cim
Kkod
Fizmod Fkod
B IT MAN127/81
Táblajáték – Kategória
Nev
Kategoria
Kkod
Create table Kategoria(
Kkod char(3) primary key,
Nev varchar(20) not null,
Unique (Nev));
Parancssor
Ha nem létezne a tábla, hozd létre!
B IT MAN127/82
A Kategória tábla kezelő felülete
KategoriaKezelo.php
3
1
2
4
B IT MAN127/83
KategóriKezelő.php
KategoriaKezelo.php
<html><head><title> Kategória Kezelő </title>
</head><body BGCOLOR="66CC99" TEXT="003300">
<p><b>Kategória lista</b></p><form action="katlista.php" method=post><input type=submit name="lista" value="Listázás">
</form>
(3/1)
1
B IT MAN127/84
KategóriKezelő.php
KategoriaKezelo.php
<p><b>Kategória kereső</b></p><form action="katnev.php" method=post><select name="kkodok"><?phpinclude "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>
(3/2)
2
B IT MAN127/85
KategóriKezelő.phpKategoriaKezelo.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"><?phpMakeConn();$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></html>
(3/3)
3
4
B IT MAN
B IT MAN127/86
katlista.php v1katlista.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 type=submit name="vissza" value="Vissza"></form>
1
B IT MAN
Kurzor deklarálása
Megnyitás
Kiolvasás
Lezárás
B IT MAN127/87
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> <?phpinclude "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"></form>
1
B IT MAN
B IT MAN127/88
katnev.php
katnev.php
<body BGCOLOR="FFFF99"><?phpinclude "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>
2
B IT MAN127/89
Kategória keresés – B-verzió
KategoriaKezelo3.php
<p><b>Kategória kereső</b></p><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"><select name="kkodok"><?phpinclude "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>
2b(2/1)
B IT MAN127/90
Kategória keresés – B-verzió
KategoriaKezelo3.php
<?phpif($_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();
}}
}?>
2b(2/2)
B IT MAN127/91
ujkat.php
ujkat.php
<body BGCOLOR="FFFF99"><?phpinclude "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>
3
ujkat.php
B IT MAN127/92
kattorol.php
kattorol.php
<body BGCOLOR="FFFF99"><?phpinclude "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>
4
B IT MAN127/93
Témakörök
A kategória tábla PHP programja
Univerzális Sql Commander
PHP előkészületek
PHP adatbázis alapok
Tárolt rutinok hívása PHP-ből
HTML, PHP alapok (gyorstalpaló)
Melós (miniprogram)
Tranzakció kezelés PHP-ből
B IT MAN127/94
Univerzális sql commander
B IT MAN127/95
sqlc.htm
<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>
(2/1)
Univerzális sql commander
B IT MAN127/96
sqlc.htm
<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>
(2/2)
Univerzális sql commander
B IT MAN127/97
sqlc.css
@charset "utf-8";body {background: url(htk.jpg) no-repeatcenter 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;
}
www.bitman.hu
Univerzális sql commander
B IT MAN127/98
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 onclick='window.history.back();'>Vissza</button>
Univerzális sql commander
www.bitman.hu
www.bitman.hu
B IT MAN127/99
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);
}?>
Univerzális sql commander
B IT MAN127/100
sqlc2.php
<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>");
}}CloseConn();?><br><button onclick='window.history.back();'>Vissza</button>
Univerzális sql commander www.bitman.hu
www.bitman.hu
B IT MAN127/101
sqlc3.php
<body BGCOLOR="FFFF99"><font face="arial" ><?php$tn = strtoupper($_POST['tlb']);print "Tábla neve: ".$tn."<br><br>";print "Mezőnevek - típusok: <br>";
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>");
}
(3/1)
www.bitman.hu
Univerzális sql commander
www.bitman.hu
B IT MAN127/102
sqlc3.php
$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>";
}
(3/2)
Univerzális sql commander
B IT MAN127/103
sqlc1.php
$sqlp = "SELECT UCC1.TABLE_NAME||'.'||UCC1.COLUMN_NAME CSN, UCC2.TABLE_NAME||'.'||UCC2.COLUMN_NAME RFNFROM USER_CONSTRAINTS uc, USER_CONS_COLUMNS ucc1, USER_CONS_COLUMNS ucc2WHERE UC.CONSTRAINT_NAME = UCC1.CONSTRAINT_NAME
AND UC.R_CONSTRAINT_NAME = UCC2.CONSTRAINT_NAMEAND UCC1.POSITION = UCC2.POSITIONAND 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 onclick='window.history.back();'>Vissza</button>
(3/3)Univerzális sql commander
B IT MAN127/104
Témakörök
A kategória tábla PHP programja
Univerzális Sql Commander
PHP előkészületek
PHP adatbázis alapok
Tárolt rutinok hívása PHP-ből
HTML, PHP alapok (gyorstalpaló)
Melós (miniprogram)
Tranzakció kezelés PHP-ből
B IT MAN127/105
Bolt – KatNev tárolt eljárás
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) asdb int;begin
select count(*) into db from Kategoria where Kkod = kk;if db = 1 thenselect nev into uz from Kategoria where Kkod = kk;
elseuz := 'Nem létezik ez a Kategória kód!';
end if;end;
kkod
kategorianev
B IT MAN127/106
Bolt – KatNev tárolt eljárás
www.bitman.hu
www.bitman.hu
B IT MAN127/107
katnev.php
katnev.php
<body BGCOLOR="FFFF99"><?phpinclude "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>
kkod
kategorianev
B IT MAN127/108
Bolt – UjKat tárolt eljárás
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) asbegin
insert into Kategoria values (kk, kn);end;
www.bitman.hu
kkod
kategorianev
B IT MAN127/109
ujkat.php
ujkat.php
<body BGCOLOR="FFFF99"><?phpinclude "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>
B IT MAN127/110
KatTermAtlagAr fgv.
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 isdb int;atlag int := 0;beginselect count(*) into db from kategoria where nev=knevbe;if db = 0 thenatlag := -1;
elseselect 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;
tkod
termeknev ar leiraskategoriakkod
kategorianev
B IT MAN127/111
Bolt – KatTermAtlagAr tárolt függvény
www.bitman.hu
www.bitman.hu
select KatTermAtlagAr(′Egyéb′) from dual;
B IT MAN127/112
kattermatlagar.php
kattermatlagar.php
<body BGCOLOR="FFFF99"><?phpinclude "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>
B IT MAN127/113
Bolt – KatTermAtlagAr tárolt függvény
www.bitman.hu
www.bitman.hu
B IT MAN127/114
TermKat fgv.
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 isdb 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;
tkod
termeknev ar leiraskategoriakkod
kategorianev
B IT MAN127/115
Bolt – TermKat tárolt függvény
www.bitman.hu
www.bitman.hu
select TermKat(′sör′) from dual;
B IT MAN127/116
termkat.php
termkat.php
<body BGCOLOR="FFFF99"><?phpinclude "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>
B IT MAN127/117
Bolt – TermKat tárolt függvény
www.bitman.hu
www.bitman.hu www.bitman.hu
B IT MAN127/118
Bevetel fgv.
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 asbev int:=0;beginselect 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;
tkod
vasarlasidopont darabtkod
termeknev arkategoria
B IT MAN127/119
Bolt – Bevetel tárolt függvény
www.bitman.hu
www.bitman.hu
select Bevetel(′2016.03.11′) from dual;
B IT MAN127/120
termkat.php
termkat.php
<body BGCOLOR="FFFF99"><?phpinclude "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>
B IT MAN127/121
Bolt – TermKat tárolt függvény
www.bitman.hu
www.bitman.hu www.bitman.hu
B IT MAN127/122
Témakörök
A kategória tábla PHP programja
Univerzális Sql Commander
PHP előkészületek
PHP adatbázis alapok
Tárolt rutinok hívása PHP-ből
HTML, PHP alapok (gyorstalpaló)
Melós (miniprogram)
Tranzakció kezelés PHP-ből
B IT MAN127/123
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.
B IT MAN127/124
Tranzakció kezelés PHP-ben
<?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);
?>
col1
mytab
Véglegesíti az összes új értéket: 1, 2, 3, 4, 5
B IT MAN127/125
Izolációs szint beállítása
set transaction [READ ONLY | READ WRITE]
[isolation level [SERIALIZABLE | READ COMMITED]
B I T MAN
Parancssor
Parancssor
B IT MAN127/126
Izolációs szintek
Isolation level
Elkülönítési szint
Phantom
read
Fantom
olvasás
Non repeatable
read
Nem megismé-
telhető olvasás
Dirty read
Piszkos olvasás
SERIALIZABLE
Sorba rendezhető
Nem
lehetségesNem lehetséges Nem lehetséges
READ COMMITED
Ismételhető olvasásúLehetséges Nem lehetséges Nem lehetséges
READ ONLY
Olvasás biztosLehetséges Lehetséges Nem lehetséges
READ WRITE
Nem olvasás biztosLehetséges Lehetséges Lehetséges
B IT MAN127/127
VÉGEVÉGE