WEB TECHNOLÓGIÁK

57
WEB TECHNOLÓGIÁK 6. előadás: PHP-MySQL Barabás Péter

description

6. előadás: PHP-MySQL Barabás Péter. WEB TECHNOLÓGIÁK. Tartalom. MySQL áttekintés PHP MySQL függvények Példák. MySQL – Parancssori kliens. MySQL documentáció {MYSQL_INSTALL_DIR}\ docs \ manual _ toc.html Telepítési instrukciók WAMP, XAMPP részeként MySQL önállóan - PowerPoint PPT Presentation

Transcript of WEB TECHNOLÓGIÁK

Page 1: WEB TECHNOLÓGIÁK

WEB TECHNOLÓGIÁK

6. előadás: PHP-MySQL

Barabás Péter

Page 2: WEB TECHNOLÓGIÁK

Tartalom

MySQL áttekintés PHP MySQL függvények Példák

Page 3: WEB TECHNOLÓGIÁK

MySQL – Parancssori kliens MySQL documentáció

{MYSQL_INSTALL_DIR}\docs\manual_toc.html Telepítési instrukciók

WAMP, XAMPP részeként MySQL önállóan

Csatlakozás parancssorból mysql [OPTIONS] [DB] mysql –u <usernév> –p <dbnév>

SQL script futtatás mysql –u <usernév> -p < script.sql

GUI client Mysql Control Center PhpMyAdmin

Page 4: WEB TECHNOLÓGIÁK

Adattábla létrehozás

Web_db adatbázis létrehozása: CREATE DATABASE web_db;

Notes nevű tábla létrehozása: USE web_db; CREATE TABLE notes (…); Teszt adatok beszúrása

Érdemes script fájlban megírni majd futtatni az előbb említett módokon

Page 5: WEB TECHNOLÓGIÁK

Alap utasítások(emlékeztető) CREATE

Adatbázisok és táblák (egyéb objektumok) létrehozása SELECT

Táblaadatok lekérdezése adott feltételre illeszkedően DELETE

Egy vagy több sor törlése a táblából INSERT

Új sor (vagy sorok) beszúrása a táblába UPDATE

Rekord módosítás ALTER

Tábla (egyéb db objektum) szerkezet módosítása

Page 6: WEB TECHNOLÓGIÁK

PHP-MySQL függvények

Kapcsolódás adatbázishoz Lekérdezés Eredmények kezelése Erőforrások felszabadítása Kapcsolat bezárás

Page 7: WEB TECHNOLÓGIÁK

Kapcsolódás adatbázishoz

mysql_connect(server, username, password) Kapcsolódás a MySQL szerverhez egy adott porton Alapértelmezetten: „localhost:3306” Username és password sztring típusúak Visszatérési érték FALSE hiba esetén

Példa $db_link =

mysql_connect("localhost:3306","test", "123");

Létezik perzisztens kapcsolat: mysql_pconnect

Page 8: WEB TECHNOLÓGIÁK

Példa

Page 9: WEB TECHNOLÓGIÁK

Adatbázis kiválasztása

mysql_select_db(name, link) Name: adatbázis neve (sztring) Link: opcionális, egy nyitott kapcsolat

referenciát vár, amit a connect visszaad Amennyiben a link nincs megadva, az

utolsó nyitott kapcsolatot használja Visszatési érték: TRUE sikeresség

esetén, egyébként FALSE Példa

mysql_select_db("web_db");

Page 10: WEB TECHNOLÓGIÁK

Példa

Page 11: WEB TECHNOLÓGIÁK

Hibakezelés – I.

mysql_error(link) Hibaüzenettel vagy hibakóddal tér vissza Link opcionális Az utolsó nyitott kapcsolatot használja,

amennyiben a link nincs megadva Ha nincs hiba, akkor üres stringgel

tér vissza Példa

mysql_error();

Page 12: WEB TECHNOLÓGIÁK

Hibakezelés – II.

mysql_no(link) A hiba kódjával tér vissza Link opcionális Az utolsó nyitott kapcsolatot használja,

amennyiben a link nincs megadva Ha nincs hiba, a visszatérési érték 0 Példa

mysql_no();

Page 13: WEB TECHNOLÓGIÁK

Példa

Page 14: WEB TECHNOLÓGIÁK

Utasítások készítése – I.

mysql_query(query, link) select lekérdezést készítése A query a lekérdezés szövege Ne tartalmazzon a query záró pontosvesszőt A visszatérési értéke egy erőforrás azonosító,

vagy FALSE, amennyiben a lekérdezés Hibás SHOW vagy DESCRIBE

Példa (a books tábla összes sorának lekérdezése) $query = "SELECT * FROM books"; $result = mysql_query($query);

Page 15: WEB TECHNOLÓGIÁK

Utasítások készítése – II. INSERT and UPDATE utasítások

erőforrás Visszatérési érték:

TRUE sikeresség esetén FALSE hiba esetén

Példa (a könyv tábla szerkezeti leírása) $query = "DESCRIBE books"; $status = mysql_query($query);

Page 16: WEB TECHNOLÓGIÁK

Példa

Page 17: WEB TECHNOLÓGIÁK

Metadatok kezelése

mysql_list_fields(database, table, link) Metadatokat szolgáltat az adott

adatbázis adott táblájáról A visszatérési érték tartalmazza a tábla

metaadatait (oszlopnevek, típusok) Példa

$fields = mysql_list_fields("web_db", "books");

Page 18: WEB TECHNOLÓGIÁK

Tábla mezőinek darabszáma

mysql_num_fields(result) A tábla mezőinek darabszámát adja vissza A result paraméter egy erőforrás

referencia, amit a mysql_list_fields függvény ad vissza

Példa $fields = mysql_list_fields("web_db",

"books"); $num_columns =

mysql_num_fields($fields);

Page 19: WEB TECHNOLÓGIÁK

Tábla mezőinek neve

mysql_field_name(result, index) A tábla index-edik mezőjének nevével tér

vissza (index: 0,1,…) A result paraméter egy erőforrás

referencia, amit a mysql_list_fields függvény ad vissza

Példa: az első mező neve $fields = mysql_list_fields("web_db",

"books"); $isbn = mysql_field_name($fields, 0);

Page 20: WEB TECHNOLÓGIÁK

Példa

Page 21: WEB TECHNOLÓGIÁK

Adatsorok kezelése – I.

mysql_fetch_row(result) Minden hívása egy indexelt tömb következő

sorával tér vissza A result paraméter egy erőforrás referencia,

amit a mysql_query függvény ad vissza A visszatérési érték FALSE, ha már nincs több

sor Példa

$query = "SELECT * FROM books"; $result = mysql_query($query); $row = mysql_fetch_row($result); // row 0 $isbn = $row[0]; // isbn for row 0

Page 22: WEB TECHNOLÓGIÁK

Adatsorok kezelése – II.

mysql_fetch_assoc(result) Működése hasonló a mysql_fetch_row

működéséhez, de a következő sorra egy asszociatív tömbként hivatkozhatunk

Példa $query = "SELECT * FROM books"; $result = mysql_query($query); $row =

mysql_fetch_assoc($result); // row 0 $isbn = $row['isbn']; // isbn for row 0

Page 23: WEB TECHNOLÓGIÁK

Adatsorok kezelése – III.

mysql_fetch_array(result) A mysql_fetch_row, mysql_fetch_assoc

kombinációja A következő sorra asszociatív és indexelt

tömbként is lehet hivatkozni Példa

$query = "SELECT * FROM books"; $result = mysql_query($query); $row = mysql_fetch_array($result); // row 0 $isbnA = $row[0]; // isbn for row 0 $isbnB = $row['isbn']; // can also get it this

way

Page 24: WEB TECHNOLÓGIÁK

Adatsorok kezelése – IV.

mysql_num_rows(result) Egy lekérdezés eredményrekordjainak

számát adja vissza Result a mysql_query által visszaadott

erőforrás mysql_affected_rows(result)

INSERT, UPDATE, or DELETE utasítások után használatosak

Visszatér az érintett rekordok számával result paraméter a mysql_query visszatérési

értéke

Page 25: WEB TECHNOLÓGIÁK

Egyéb függvények

mysql_real_escape_string(string,link) Visszatér egy átalakított sztinggel, amit

biztonságosan használhatunk a mysql_query-ben MySQL 4.1-től használhatóak a mysqli_...

Függvények Több lehetőség, Új funkcionalitások OO interface Tárolt eljárások támogatása Tranzakciókezelés Fejlettebb debugolási lehetőségek

Page 26: WEB TECHNOLÓGIÁK

Erőforrások felszabadítása mysql_free_result(result)

Egy adott erőforrás által lefoglalt memória felszabadítása

Result: erőforrás referencia Hívása nem szükséges, kivéve nagy

eredményhalmazok esetén Automatikusan lefut, amikor a script futása

véget ér mysql_close(link)

Bezárja az adatbázis kapcsolatot Perzisztens kapcsolatokra nincs hatással

Page 27: WEB TECHNOLÓGIÁK

Mezőnevek feldolgozása

Page 28: WEB TECHNOLÓGIÁK

Eredményrekordok feldolgozása – I.

Page 29: WEB TECHNOLÓGIÁK

Eredményrekordok feldolgozása – II.

Page 30: WEB TECHNOLÓGIÁK

Db_connect függvény

Scriptekben használatos Érdemes egy db_connect.php nevű

file-ba írni és includálni

Page 31: WEB TECHNOLÓGIÁK

Books adatbázis példa – I.Books.sql

Page 32: WEB TECHNOLÓGIÁK

Books adatbázis példa – II.

Books.sql

Page 33: WEB TECHNOLÓGIÁK

Books adatbázis példa – III. books.sql futtatása

parancssorban mysql -u xxxxx -p < c:/.../books.sql

Lehet phpMyAdmin-ban is Következő lépés:

Dbase.php írása A könvyadatokat megjeleníti HTML

táblázatban

Page 34: WEB TECHNOLÓGIÁK

Books adatbázis példa – IV.

Page 35: WEB TECHNOLÓGIÁK

Dbase.php – I.

HTML header info

Page 36: WEB TECHNOLÓGIÁK

Dbase.php – II.

Kapcsolódás $db_link = db_connect("web_db");

Ez a függvény a db_connect.php include file-ban van

Az include path a php.ini-ben definiált include_path=".;c:\Apache\

phpincludes"

Page 37: WEB TECHNOLÓGIÁK

Dbase.php – III.

Lekérdezzük az összes rekordot az összes mezővel $query = "SELECT * FROM books"; $result = mysql_query($query) or

die("SQL Query failed"); Tábla tulajdonságok lekérdezése

$fields = mysql_list_fields("web_db", "books");

$num_columns = mysql_num_fields($fields)

Page 38: WEB TECHNOLÓGIÁK

Dbase.php – IV.

A mezőfejléceket a HTML táblázat fejlécébe írjuk ki

Page 39: WEB TECHNOLÓGIÁK

Dbase.php – V.

A könyv adatokat egy HTML táblázatként írjuk ki

Page 40: WEB TECHNOLÓGIÁK

Dbase-php – VI.

Szabadítsuk fel az erőforrásokat és zárjuk be a kapcsolatot mysql_free_result($result); mysql_close($db_link); ?> </body> </html>

Page 41: WEB TECHNOLÓGIÁK

Script hívása gomb kattintásra – I. Adjunk nevet és értéket a nyomógombnak

<input type="submit" name="choice" value="Display">

Ha a form submitálódik, akkor a név index létező lesz if (isset($_REQUEST['choice']) {

// process the button click here } ...

Több submit gomb esetén a neveknek és értékeknek különbözniük kell

Page 42: WEB TECHNOLÓGIÁK

Script hívása gomb kattintásra – II. Másik előnye a submit gomb label-

jének (értékének) használatának, hogy meg tudunk különböztetni választási lehetőségeket

Több submit gombnak lehet ugyanaz a neve, de az értékekben különbözniük kell

Page 43: WEB TECHNOLÓGIÁK

Script hívása linkben

Egy link alkalmas lehet arra, hogy meghívjunk egy scriptet vele, vagy paramétereket adjunk át a GET metódust használva

Page 44: WEB TECHNOLÓGIÁK

Javaslatok weboldal

Felhasználók javaslatokat tehetnek azáltal, hogy egy textarea-t kitöltenek és elküldik

A javaslatok egy MySQL adatbázisban mentődnek el (web_db)

A javaslatok időrendben kerülnek megjelenítésre

Page 45: WEB TECHNOLÓGIÁK

Javaslat doboz megjelenés

Page 46: WEB TECHNOLÓGIÁK

Sbox.sql

Page 47: WEB TECHNOLÓGIÁK

Script logika

IF új javaslat kérelem érkezett THEN Jelenítsük meg az űrlapot

ELSE IF form submitálódott THEN

Szúrjuk be a javaslatot az adatbázisba ENDIF Kérdezzük le a javaslatokat az adatbázistáblából IF létezik javaslat, azaz a lekérdezés nem üres THEN

Jelenítsük meg ELSE

Javaslat táblázat üres ENDIF

ENDIF Kínáljuk fel a linket, hogy a felhasználó tudjon

megadni javaslatokat

Page 48: WEB TECHNOLÓGIÁK

Sbox.php – I.

Page 49: WEB TECHNOLÓGIÁK

Sbox.php – II.

Page 50: WEB TECHNOLÓGIÁK

Sbox.php – III.

Page 51: WEB TECHNOLÓGIÁK

Sbox.php – IV.

Page 52: WEB TECHNOLÓGIÁK

Más verziók

Létezik: sbox2, sbox3, sbox4 Sbox2 a HTML text értékeket kvótázza,

helyesen kezeli Sbox3-ban hiba ellenőrzés is van Sbox4 az sbox3 egyszerűsített verziója

Form mindig látható Nincs szükség linkre

Page 53: WEB TECHNOLÓGIÁK

Sbox4.php – I.

Page 54: WEB TECHNOLÓGIÁK

Sbox4.php – II.

Page 55: WEB TECHNOLÓGIÁK

Sbox4.php – III.

Page 56: WEB TECHNOLÓGIÁK

Sbox4.php – IV.

Page 57: WEB TECHNOLÓGIÁK

Köszönöm a figyelmet!