WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK



Hasonló dokumentumok
WEBFEJLESZTÉS 2. ADATTÁROLÁS, FÁJLOK

WEBFEJLESZTÉS 2. MUNKAMENET-KEZELÉS, HITELESÍTÉS

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Osztályok. 4. gyakorlat

Web-technológia PHP-vel

Természetesen készíts egy csempe nevű könyvtárat és ide mentsd az index.html állományt.

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

Programozás és adatbázis kezelés PHP ben

Megtanuljuk, hogyan lehet egy web-alkalmazással adatbázishoz csatlakozni Pontosan megnézzük a PHP lehetőségeit o MySQL-hez o Oracle-höz

A jquery.clickheat egy jquery plugin, ami lekezeli a kattintásokat a kijelölt tartományban. jquery.clickheat

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

PHP. Adatbázisok gyakorlat

Adatbázisok webalkalmazásokban

OOP: Java 8.Gy: Abstract osztályok, interfészek

Java és web programozás

PHP-MySQL. Adatbázisok gyakorlat

Blahota István. SQLite alapok

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

WEBFEJLESZTÉS 2. ADATTÁROLÁS, MUNKAMENET- KEZELÉS, AJAX

Extrémen brutál, gyors talpaló PHP nyelvhez (database). v2.1

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

PHP MySQL, Java JDBC MySQL. Adatbázisok az iskolában 2012 Dr. Balázs Péter Palatinus Endre és Erdőhelyi Balázs diái alapján

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Adatbáziskezelés php-ben MySQL adatbáziskezelı rendszert használva

WEB-PROGRAMOZÁS II. 1. Egészítse ki a következő PHP kódot a következők szerint: a,b,c,d: <?php. interface Kiir { public function kiir();

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

PHP gyorstalpaló, avagy a Hello World-től az űrlapellenőrzésig

10.óra CodeIgniter Framework #3. Gyimesi Ákos

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő A PHP programozási nyelv JDBC, ODBC

9.óra CodeIgniter Framework #1. Gyimesi Ákos

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN

Adatbázis. AMP! (Apache + MySql + PHP) XAMPP, LAMP, MAMP, WAMP et cetera

Model View Controller alapú alkalmazásfejlesztés

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

WEBES ALKALMAZÁSFEJLESZTÉS 1.

Java és web programozás

JavaServer Pages (JSP) (folytatás)

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Szerver oldali technológiák Szerver oldali script nyelvek PHP

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

BME MOGI Gépészeti informatika 8.

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

Java programozási nyelv 5. rész Osztályok III.

WEBES ALKALMAZÁSFEJLESZTÉS 1.

Osztály és objektum fogalma

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

OOP: Java 8.Gy: Gyakorlás

PHP5 Új generáció (2. rész)

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

Java és web programozás

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

AdoDB a gyakorlatban

WEBFEJLESZTÉS 2. PHP NYELVI ALAPOK

Adatbázis Rendszerek II. 8. Gyakorló környezet

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Adatbázis Rendszerek II. 2. Gyakorló környezet

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Az SQL adatbázisnyelv: DML

Collections. Összetett adatstruktúrák

Elemi Alkalmazások Fejlesztése II.

API tervezése mobil környezetbe. gyakorlat

5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?

Symfony kurzus 2014/2015 I. félév. Controller, Routing

Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák

BEVEZETÉS Az objektum fogalma

B I T M A N B I v: T M A N

Adatbázis-kezelés. Harmadik előadás

A Http és a PHP kapcsolata. Web-Sky Consulting Kft Tóth Imre 2009

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

A PHP nyelv alapjai. Web-Sky Consulting Kft Tóth Imre 2009

Biztonságos PHP a gyakorlatban

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

Adatbázis használata PHP-ből

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

Vizuális programozás gyakorlat

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS. Fájlkezelés PHP-ben

Web-fejlesztés NGM_IN002_1

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

Adatbázis tartalmának módosítása

Az SQL*Plus használata

Tartalomjegyzék. I. rész Az elsõ lépések

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

RIA Rich Internet Application

Bevezető. Servlet alapgondolatok

Átírás:

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK Horváth Győző Egyetemi adjunktus 1117 Budapest, Pázmány Péter sétány 1/C, 2.420 Tel: (1) 372-2500/1816

2 Ismétlés

Ismétlés 3 Fájl/Adatbázis 3 4 Szerver 2 CGI 5 PHP 1 HTTP 6 Kliens

Ismétlés 4 Kliens Futtatókörnyezet Fájl (alkalmazásszintű) Változók (memória) PHP Adatbázis (alkalmazásszintű) Munkamenet (kliensszintű)

5 Adatbázisok

Fájl vs adatbázis 6 Fájl bármikor elérhető, nincs szükség plusz szoftverekre könnyen értelmezhető (ember, program) könnyen használható viszonylag kis méretű Adatbázis biztonságos típusos adatok bonyolult adatszerkezetek összetett kereshetőség fejlett konkurenciakezelés

Adatbázis-kezelő rendszerek 7 Adatbázis-kezelők MySQL PostgreSQL MSSQL Oracle SQLite stb. Specifikus függvények PHP-ban SQL utasítások 1 Szerver HTTP Kliens 6 2 CGI 5 Adatbázis 3 4 PHP

SQL utasítások 8 -- Lekérdezés select id, cim from filmek; select id, cim from filmek where id > 10; create table filmek ( id integer primary key, cim varchar(40), rendezo varchar(20), ev integer); -- Beszúrás insert into filmek (cim, rendezo, ev) values ('A hobbit 2', 'Michael Jackson', 2013); -- Módosítás update filmek set cim = 'A hobbit: Smaug Pusztasága', rendezo = 'Peter Jackson' where id = 11; -- Törlés delete from filmek where id = 12;

Feldolgozás lépései 9 kapcsolódás az adatbázis-kezelő rendszerhez az adatbázis kiválasztása SQL utasítások futtatása az adatbázis-kezelő rendszerben az SQL utasítás eredményének lekérdezése (ha van) a kapcsolat bontása

SQLite 10 Átmenet a fájl és adatbázis között adatbázis = fájl Verziók SQLite 2: minden szöveg (kivéve elsődeleges kulcs) SQLite 3: típusok, összetettebb SQL utasítások Kis projekteknél gyakori

SQLite függvények PHP-ban 11 $db = sqlite_open($fájlnév): megnyitja vagy létrehozza az adatbázist sqlite_close($db): adatbázis bezárása $eredmény = sqlite_query($db, $sql): SQL utasítás futtatására szolgál $siker = sqlite_exec($db, $exec): visszatérési érték nélküli SQL utasítások futtatására szolgál $tömb = sqlite_fetch_array($eredmény): eredménysorok lekérdezése $tömb = sqlite_array_query($db, $sql): eredménysorok tömbben sqlite_escape_string($s): érzékeny karakterek kódolása

Segédfüggvények 12 //Adatbázis megnyitása function adatbazis_nyit($fajlnev) { $db = sqlite_open($fajlnev, 0666, $sqliteerror); if (!$db) { die($sqliteerror); return $db; //Adatbázis-kapcsolat bezárása function adatbazis_zar($db) { sqlite_close($db);

Segédfüggvények 13 //Tábla létrehozása, ha még nem létezik function tabla_init($fajlnev, $tablanev, $create_sql) { $db = adatbazis_nyit($fajlnev); $siker = true; $result = sqlite_query($db, "SELECT name FROM sqlite_master WHERE type='table' AND name='{$tablanev'"); if (sqlite_num_rows($result) == 0) { $siker = sqlite_exec($db, $create_sql); //Lekérdezés végrehajtása, eredmény tömbbe adatbazis_zar($db); function lekerdezes_tombbe($sql) { $db = adatbazis_nyit('filmek.sqlite'); return $siker; $ered = sqlite_array_query($db, $sql, SQLITE_ASSOC); adatbazis_zar($db); return $ered;

Feladat 14 Adott filmek listája. Minden filmről tároljuk a címét, rendezőjét és megjelenési évét. Listázzuk ki a nyilvántartásunkban lévő filmeket! Adjunk lehetőséget új film felvételére!

15 Lista oldal <!doctype html> <html> <meta charset="utf-8"> <head> <title></title> </head> <body> <h1>filmlista</h1> <a href="ujfilm.php">új film...</a> <table> <tr> <th>cím</th> <th>rendezo</th> <th>év</th> </tr> <?php foreach ($filmek as $f) :?> <tr> <td><?php echo $f['cim'];?></td> <td><?php echo $f['rendezo'];?></td> <td><?php echo $f['ev'];?></td> </tr> <?php endforeach;?> </table> </body> </html> <?php //Feldolgozó függvények function osszes_film() { //??? //--------- //A "fõprogram" $filmek = osszes_film();?>

Lista oldal lényegi rész 16 //Tábla inicializálása Adatbázis $filmek_create_sql = 'create table filmek ( id integer primary key, cim, rendezo, ev)'; tabla_init('filmek.sqlite', 'filmek', $filmek_create_sql); //Feldolgozó függvények function osszes_film() { return lekerdezes_tombbe('select * from filmek'); //Feldolgozó függvény Fájl function osszes_film() { return fajlbol_betolt('filmek.json');

Új film oldal 17 <!doctype html> <html> <meta charset="utf-8"> <head> <title></title> </head> <body> <h1>új film</h1> <?php if ($hibak) :?> <ul> <?php foreach ($hibak as $hiba) :?> <li><?php echo $hiba;?></li> <?php endforeach;?> </ul> <?php endif;?> <form action="" method="post"> Cím: <br> <input type="text" name="cim" value="<?php echo $cim;?>"> <br> Rendező: <br> <input type="text" name="rendezo" value="<?php echo $rendezo;?>"> <br> Év: <br> <input type="text" name="ev" value="<?php echo $ev;?>"> <br> <input type="submit"> </form> </body> </html>

Új film oldal 18 <?php //Feldolgozó függvények function film_beszur($cim, $rendezo, $ev) { //??? //-------- //A "főprogram" $hibak = array(); $cim = ''; $rendezo = ''; $ev = ''; if ($_POST) { $cim = $_POST['cim']; $rendezo = $_POST['rendezo']; $ev = $_POST['ev']; if ($cim == '') { $hibak[] = 'Cím kötelező!'; if ($rendezo == '') { $hibak[] = 'Rendező kötelező!'; if (!is_numeric($ev) strlen($ev)!= 4) { $hibak[] = 'Rossz évszám!'; if (!$hibak) { if (film_beszur($cim, $rendezo, $ev)) { header('location: lista_fajl.php'); ;?>

Új film oldal lényegi rész //Tábla inicializálása 19 //... //Feldolgozó függvények function film_beszur($cim, $rendezo, $ev) { $cim = sqlite_escape_string($cim); $rendezo = sqlite_escape_string($rendezo); $ev = sqlite_escape_string($ev); Adatbázis $db = adatbazis_nyit('filmek.sqlite'); $result = sqlite_exec($db, "insert into filmek (id, cim, rendezo, ev) values ( null, '{$cim', '{$rendezo', '{$ev' )"); adatbazis_zar($db); return $result; Fájl function film_beszur($cim, $rendezo, $ev) { $filmek = fajlbol_betolt('filmek.json'); $filmek[] = array( 'cim' => $cim, 'rendezo' => $rendezo, 'ev' => $ev, ); return fajlba_ment('filmek.json', $filmek);

20 Osztályok PHP-ban

Kódszervezés objektumokkal 21 Problémák névütközés globális változók egységbe zárás Objektumok Klasszikus OOP Osztályok

Objektum-orientáltság PHP-ban 22 osztályok (class), láthatóság szabályozása (public, protected, private), konstruktorok, destruktorok ( construct, destruct), statikus adattagok és metódusok (static), absztrakt osztályok (abstract), interfészek (interface), öröklés (extends), stb.

Osztályok létrehozása 23 class Gyerek { public $kor; public $nev; public function construct($nev, $kor) { $this->nev = $nev; $this->kor = $kor; public function bemutatkozik() { echo "A nevem: {$this->nev\n"; public function alszik() { echo "Zzzzzzz...\n";

Objektum példányosítása 24 $zsofi = new Gyerek('Zsófia', 7); $matyi = new Gyerek('Mátyás', 2); $zsofi->bemutatkozik(); $matyi->bemutatkozik(); A nevem: Zsófia A nevem: Mátyás A nevem: Zsozsó $zsofi->nev = 'Zsozsó'; $zsofi->bemutatkozik();

Getterek és setterek 25 class Gyerek { private $kor; private $nev; public function construct($nev, $kor) { $this->nev = $nev; $this->kor = $kor; public function getnev() { return $this->nev; public function setnev($value) { $this->nev = $value; public function getkor() { return $this->kor; public function setkor($value) { $this->kor = $value; public function bemutatkozik() { /*...*/ public function alszik() { /*...*/ $sari = new Gyerek('Sári', 7); $sari->bemutatkozik(); $sari->setnev('sarah'); $sari->bemutatkozik(); A nevem: Sári A nevem: Sarah

Öröklés class 26 Ovodas extends Gyerek { private $jel; public function construct($nev, $kor, $jel) { parent:: construct($nev, $kor); $this->jel = $jel; $zsofi = new Gyerek('Zsófia,7); $zsofi->bemutatkozik(); public function getjel() { return $this->jel; public function setjel($value) { $this->jel = $value; $david = new Ovodas('Dávid',4,'perec'); $david->bemutatkozik(); $david->miajeled(); A nevem: Zsófia A nevem: Dávid A jelem: perec public function miajeled() { echo "A jelem: {$this->jel\n";

Példa 27 Filmek listázása Új film beszúrása Osztályokba szervezve

fileio.php 28 class FileIO { public static function fajlbol_betolt($fajlnev, $alap = array()) { $s = @file_get_contents($fajlnev); return ($s === false? $alap : json_decode($s, true)); public static function fajlba_ment($fajlnev, $adat) { $s = json_encode($adat); return file_put_contents($fajlnev, $s, LOCK_EX);

29 class FilmAdat { private $filmek; private $fajlnev; public function construct($fajlnev = '') { if (!$fajlnev) { die('nincs adatfájl!'); $this->fajlnev = $fajlnev; $this->filmek = FileIO::fajlbol_betolt($this->fajlnev); public function destruct() { FileIO::fajlba_ment($this->fajlnev, $this->filmek); public function osszes_film() { return $this->filmek; public function film_beszur($cim, $rendezo, $ev) { $this->filmek[] = array( 'cim' => $cim, 'rendezo' => $rendezo, 'ev' => $ev, ); return true; filmadat.php

lista_fajl.php 30 define('token', 'Védelem'); include('kozos/fileio.php'); include('adat/filmadat.php'); $fajlnev = dirname( FILE ). '/filmek.json'; $filmadat = new FilmAdat($fajlnev); $filmek = $filmadat->osszes_film(); include('kimenet/lista_sablon.php');

31 define('token', 'Védelem'); ujfilm_fajl.php include('kozos/fileio.php'); include('adat/filmadat.php'); //--------- $fajlnev = dirname( FILE ). '/filmek.json'; $hibak = array(); $cim = ''; $rendezo = ''; $ev = ''; if ($_POST) { $cim = $_POST['cim']; $rendezo = $_POST['rendezo']; $ev = $_POST['ev']; if ($cim == '') { $hibak[] = 'Cím kötelező!'; if ($rendezo == '') { $hibak[] = 'Rendező kötelező!'; if (!is_numeric($ev) strlen($ev)!= 4) { $hibak[] = 'Rossz évszám!'; if (!$hibak) { $filmadat = new FilmAdat($fajlnev); if ($filmadat->film_beszur($cim, $rendezo, $ev)) { header('location: lista_fajl.php'); ; include('kimenet/ujfilm_sablon.php');

32 JSON kommunikáció

Feltöltés 33 Tetszőleges adatszerkezet objektum, tömb Sorosítás szöveg sz = JSON.stringify(adat) Felküldés Űrlap AJAX

Felküldés űrlap 34 <form id="formment" action="" method="post"> <input type="hidden" name="adat" id="adat"> <input type="submit" value="mentés"> </form> //Eseménykezelők hozzárendelése function init () { $('formment').addeventlistener('submit', mentes, false); //Elküldéskor function mentes (e) { var adat =...; $('adat').value = JSON.stringify(adat);

Felküldés AJAX 35 //Eseménykezelők hozzárendelése function init () { $('gombment').addeventlistener('click', mentes, false); //Elküldéskor function mentes (e) { var adat =...; var s = JSON.stringify(adat); ajax({ url: 'mentes.php', mod: 'post', postadat: 'adat=' + s, siker: function () { //... );

Fogadás űrlap, AJAX 36 $s = $_POST['adat']; //s feldolgozása, elmentése, pl. $tomb[] = $s; // vagy $adat = json_decode($s, true);

Leküldés AJAX 37 $s = json_encode($adat); echo $s; function leker(e) { ajax({ url: 'leker.php', mod: 'get', getadat: 'azon=12', siker: function (xhr, text) { var json = JSON.parse(text); console.log(json); //JSON feldolgozása );

Leküldés szkript 38 <?php $s = json_encode($adat);?> var adat = <?php echo $s;?> <?php $id = $_GET['id'];?> <!doctype html> <html> <head> <!--... --> <script type="text/javascript" src="adat.php?id=<?php echo $id;?>"></script> <!--... --> </head>

Összefoglalás 39 Adatbázisok kezelése PHP-ban SQLite adatbázisok Osztályok és objektumok PHP-ban AJAX kommunikáció