Az eddigiek
során megismertük, hogyan lehet a PHP segítségével dinamikus weblapokat
készíteni. A dinamikus weboldalak az esetek többségében valamilyen
adatbázist használnak az oldalon megjelenített adatok forrásaként. Példák:
Webárúház: áruk, ügyfelek, rendelések Fórum: témák, hozzászólások, felhasználók Képgaléria: albumok, képek A MySQL a legnépszerűbb nyílt-forráskódú relációs
adatbázis-kezelő rendszer. A
leggyakrabban a PHP-val együtt használjákdinamikus weboldalak készítésére. Míg a
PHP-t az Apache webszerver egy beépülő moduljaként használtuk, addig a MySQL
egy különálló szerverként fut. Ehhez tudunk konzolos vagy grafikus kliens alkalmazásokkal,
vagy a különböző programozási nyelvekben API-kon keresztül kapcsolódni Windows
alatt a XAMPP (Lite) csomag Linux alatt a következő csomagok: apache2 php5,
php5-mysql mysql-client, mysql-server phpMyAdmin: a MySQL könnyebb kezelhetőségétszolgáló,
böngészőn keresztül elérhető alkalmazás Első
lépésként csatlakoznunk kell egy MySQL kiszolgálóhoz, és azon kiválasztani egy
adatbázist. Készítsük el a dbconfig.php
fájlt: <?php $kapcsolat =
mysql_connect("szerver","azonosító", "jelszó"); mysql_select_db("proba",
$kapcsolat); ?> A mysql_connect() sikeres csatlakozás esetén a kapcsolatra
mutató változóval tér vissza, ellenkező esetben pedig FALSE-szal. A
mysql_select_db("adatbázis neve", $kapcsolat) paranccsal tudjuk
kiválasztani azt az adatbázist, amelyet használni szeretnénk. A MySQL
kiszolgálóval létesített kapcsolat a szkript lefutásáig él, utána automatikusan
megszakad. szokás ezt a két műveletet egy külön fájlban elhelyezni, és azt
minden adatbázist is használó szkript elején ”include-olni”, a require_once("dbconfig.php");
paranccsal. Ezáltal csak egyszer kell megírnunk, és
szükség esetén csak egy helyen kell módosítanunk az adatbázishoz való
kapcsolódást végző kódrészletet. Az ”include-olás” miatt az ”include-olt”
szkript nem ér véget, így a tartalmazó szkriptben is élni fog az adatbáziskapcsolat.
A kapcsolódás után hibakezelést is végezhetünk: if
(!$kapcsolat) { die('Hiba a csatlakozáskor: ' . mysql_error()); } A
die(”Hibaüzenet”) paranccsal félbeszakíthatjuk a program futását, és
kiírathatjuk a hiba okát. A mysql_error() függvény a legutóbbi MySQLnek
küldött utasítás során keletkezett esetleges hibaüzenettel tér vissza. Feladat:
Szeretnénk nyilvántartani a kurzusainkat egy adatbázisban. Szükségünk van egy
weblapra, ahol kilistázhatjuk a kurzusaink nevét és kreditértékét, valamint új
kurzusokat szúrhatunk be az adatbázisunkba. Relációséma: Kurzus (kód, név, kredit) Ezt a
táblát fogjuk létrehozni és adatokkal feltölteni a phpMyAdmin segítségével.
Később ezt SQLparancsokkal is meg tudjuk majd oldani Lépjünk be a phpMyAdmin
alkalmazásba a következő címen: http://localhost/phpmyadmin
Hozzunk létre egy új adatbázist ”proba” néven!
Ebben hozzunk létre egy új táblát ”kurzusok” néven
3 mezővel! Adjuk meg a 3 mezőt a következők szerint: kod:
VACHAR típusú, 10 hosszúságú, PRIMARY Index nev:
VACHAR típusú, 30 hosszúságú kredit: INT típusú Az Importálás fülön adjuk
meg a ”kurzusok.csv” fájlt. Az elejétől kihagyandó rekordok számát
állítsuk 1-re! Válasszuk ki a ”CSV” opciót a fájlformátum
esetén! Ha minden rendben zajlott, a Tartalom fülön
láthatjuk az adattáblánk tartalmát. Megjegyzés: az adatainkat és a táblák
szerkezetét is exportálhatjuk számos formátumban az Exportálás fülön. Listázzuk
ki a kurzusaink nevét és kreditértékét! Készítsük el a listaz.php fájlt: <?php require_once("dbconfig.php");
$res = mysql_query("SELECT * FROM kurzusok"); while($sor =
mysql_fetch_array($res)) { echo $sor['nev']." ".$sor['kredit']; echo
"<br />";}?>A mysql_query("SELECT * FROM kurzusok")
parancs végrehajtja a paraméterben kapott lekérdezést és visszatér az
eredménnyel. Ebben az esetben a kurzusok táblával. A
fetch_array függvény lekérdezi egy eredménytábla következő sorát, amit
asszociatív és egyszerű tömbként is használhatunk! Asszociatív tömbként kezelve az adattábla oszlopainak
nevére hivatkozva érhetjük el a tábla sorainak egyes mezőit. echo
"<table border='1'><tr> <th>Név</th> <th>Kredit</th>
</tr>"; while($sor = mysql_fetch_array($res)) { echo
"<tr>"; echo "<td>" . $sor['nev'] .
"</td>"; echo "<td>" . $sor['kredit'] .
"</td>"; echo "</tr>";}echo
"</table>"; Készítsük el az alább látható űrlapot, és afeldolgozást
végző PHP-lapot (kurzus.{html,php})! $sql="INSERT INTO kurzusok (kod, nev, kredit)
VALUES ('$_POST[kod]','$_POST[nev]','$_POST[ kredit]')"; $res =
mysql_query($sql); Az INSERT INTO tábla(mezők) VALUES (értékek) utasítással
adatokat szúrhatunk be egy táblába. Az adatokat bekérő űrlap, és a feldolgozását végző
kód gyakran egy fájlban található. Ekkor vigyázni kell arra, hogy az űrlap első betöltésekor,
és újratöltésekor ne próbáljunk megadatokat beszúrni az adatbázisunkba, mivel
azelőtt az űrlap még üres volt! Ez megoldható úgy, hogy az űrlap rendelkezik
egy rejtett beviteli mezővel, és csak akkor szúrúnk be adatokat, ha ez a mező
is értéket kapott, ami a ”Küldés” gombra való kattintással meg is történik Az
insert.php fájl a módosítás után: <form action="insert.php" method="post">
… <input type="hidden" name="kuld"></form><?php
if (isset($_POST['kuld'])) {… // beszúrjuk az adatokat}?> Hozzuk létre a
következő sémával rendelkező táblát: Könyv (sorszám, szerző, cím) ! Készítsünk egy oldalt, amelyen megjelennek a táblában
lévő könyvek adatai táblázatos formában! Készítsünk egy oldalt az új könyvek
felvételéhez! Készítsünk egy legördülő listát, amely a
könyvek címét tartalmazza (, a kulcsa pedig a könyvek sorszáma). Ezt helyezzük
el egy űrlapba, amiről egy olyan oldalra juthatunk, ami a kiválasztott könyv
adatait jeleníti meg! Oldjuk meg az előzőt egy fájlban!
Nincsenek megjegyzések:
Megjegyzés küldése