Dla początkujących
Podstawy MySQL
22
luty 2009
Dla początkujących
Podstawy MySQL
23
www.lpmagazine.org
lin
ux
@
so
ftw
ar
e.
co
m
.p
l
Podstawy MySQL
MySQL to darmowe narzędzie służące tworzeniu i zarządzaniu bazami danych. Jest to oprogramowanie
wydajne, stabilne i niewymagające dużych nakładów finansowych.
Sylwester Zdanowski
N
iezależnie od platformy praca z bazą danych
wygląda tak samo dzięki językowi programo-
wania Structured Query Language. Przy czym
MySQL nie musi być kompatybilny z imple-
mentacjami SQL firm Microsoft czy Oracle. Jedną z moż-
liwości wykorzystania MySQL jest połączenie go z serwe-
rem WWW aby umożliwić użytkownikom stron interneto-
wych zapisywanie i przeszukiwanie danych. Tym właśnie
zajmiemy się w tym artykule, na przykładzie małego ka-
talogu stron internetowych który kiedyś stworzyłem http:
//katalognauki.100webspace.net/. Przykład ten będzie skraj-
nie uproszczony. Wszystkie operacje będą wykonywane na
jednej tablicy, bez wykorzystania relacji.
Co będzie potrzebne
W dalszej części artykułu potrzebny będzie serwer Apache2
współdziałający z bazą danych MySQL. Wystarczy w tym
celu zainstalować kilka pakietów, dla dystrybucji Debian bę-
dą to: apache2 php5 libapache2-mod-php5 mysql-server my-
sql-client php5-mysql. Alternatywą jest instalacja oprogra-
mowania z wykorzystaniem źródeł. Po instalacji potrzebne
będzie konto z którego będą korzystać skrypty umieszczone
na stronie. Aby je utworzyć należy wykonać polecenie My-
SQL, następnie w programie dodać użytkownika i zagwaran-
tować mu uprawnienia.
Powyższe polecenia utworzą konto
janko
z hasłem
ha-
slo
. Użytkownik ten będzie miał wymienione uprawnienia
na wszystkich bazach danych, nie będzie mógł jednak ich
tworzyć. Pozostaje jedynie opuścić MySQL i zalogować się
ponownie jako utworzony użytkownik.
Zakładając, że mamy do dyspozycji prawidłowo skonfi-
gurowany serwer Apache możemy przejść do tworzenia stro-
ny wykorzystującej MySQL.
Tworzenie bazy danych i tablic
Po zalogowaniu się do MySQL z odpowiednimi uprawnie-
niami należy wykonań czynności widoczne na Listingu 3.
Podstawą jest utworzenie samej bazy danych, następnie moż-
na zobaczyć wszystkie istniejące bazy danych. Linia 3 służy
przejściu do wybranej bazy danych aby kolejne polecenia by-
ły wykonywane na niej. Czas utworzyć tabele na której będą
operowały skrypty php. Składa się ona z trzech pól, wszyst-
kich formatu tekstowego. Na koniec można się upewnić, że
w bazie niema innych tablic.
Dla początkujących
Podstawy MySQL
22
luty 2009
Dla początkujących
Podstawy MySQL
23
www.lpmagazine.org
Mając tak przygotowaną bazę danych mo-
żemy przejść do pisania skryptów potrafiących
ją wykorzystać.
Skrypty
pracujące na bazie danych
Przede wszystkim aby bazę można było wy-
korzystać należy wstawić do niej jakieś dane.
Można to zrobić zarówno za pomocą klien-
ta MySQL, w sposób podobny do tworzenia
bazy i tablic lub za pomocą przeglądarki in-
ternetowej. Zadanie to wykonamy za pomo-
cą dwóch plików. Jeden będzie zawierał for-
mularz do wprowadzania danych widoczny na
Listingu 4, drugi zaś funkcje operującą na ba-
zie danych. Aby ułatwić późniejsze modyfika-
cje i utrzymanie strony dobrym zwyczajem jest
umieszczanie wszystkich funkcji w jednym pli-
ku. Jeżeli ich ilość jest duża należy je rozbić w
logiczny sposób wynikający z zadań przez nie
wykonywanych.
W linijce drugiej dodane są wszystkie
funkcje znajdujące się w pliku lib.php. Znajdu-
je się on w tym samym katalogu co formularz.
Nic nie stoi na przeszkodzie aby plik ten znaj-
dował się w innym katalogu. Należy wówczas
uwzględnić to podając ścieżkę. W linii ósmej
rozpoczyna się formularz przyjmujący trzy
istotne dla nas informacje, adres, słowa kluczo-
we i opis. Formularz ten po naciśnięciu przyci-
sku Dodaj wywoła ponownie stronę na której
się znajduje. Wprowadzone dane zostaną jed-
nak przekazane do funkcji znajdującej się w li-
nii 15. W efekcie strona zostanie dodana i moż-
liwe będzie wykonanie kolejnego wpisu. Sama
funkcja pokazana na Listingu 5 znajduje się w
pliku lib.php.
Funkcja ta w linii 3 sprawdza czy został
podany jakikolwiek adres, jest to konieczne
gdyż jest wywoływana przy każdym wczy-
taniu strony. W linii 5 z początku i końca
poddanego adresu zostają obcięte znaki spa-
cji. Funkcja wykorzystana w linii 7 spraw-
dza czy tekst podany jako adres rzeczywi-
ście go przypomina. Linia 8 służy nawiąza-
niu połączenia z serwerem MySQL. Ważne
jest aby przed rozpoczęciem funkcji zdefi-
niować wymagane dla niej informacje, kom-
puter na którym znajduje się serwer, nazwę
użytkownika oraz jego hasło. Dane te będą
również wykorzystywane przy pozostałych
funkcjach. Podobnie jak przy korzystaniu z
wiersza poleceń konieczne jest również wy-
branie bazy dodanych na której skrypt ma
pracować. Funkcja w linii 9 wybiera bazę
która zostanie jej przekazana w formie para-
metru. Jeżeli wybranie bazy danych się nie
powiedzie wyświetlony zostanie komunikat.
Wszystkie parametry dla funkcji łączących
się z serwerem i wybierającej konkretną ba-
zę, można podać poprzez zmienne lub bez-
pośrednio w funkcji. W przypadku zmien-
nych wystarczy ich jednorazowa definicja,
aby wykorzystać je przy każdym wywoła-
niu funkcji. Jest to rozwiązanie dużo prak-
tyczniejsze niż każdorazowe wpisywanie
wszystkich danych. Linie 11 i 12 składają
się na sprawdzenie czy podany adres już ist-
nieje w bazie danych. Jeżeli zostanie on zna-
leziony zamiast dopisania go do bazy poja-
wi się odpowiedni komunikat. W linii 16
słowa podane jako kluczowe dla tematyki
strony są rozbijane do tablicy, po czym usu-
wane są powtórzenia tych samych słów. Ko-
lejna linijka 17 powoduje złożenie słów do
jednej zmiennej przy rozdzieleniu ich zna-
kiem spacji. W linii 19 podane przez użyt-
kownika dane zostają zapisane do bazy da-
nych. Wykonanie tego zapytania w linii po-
leceń, po podstawieniu zmiennych dało by
taki sam efekt.
Listing 1.
Tworzenie konta użytkownika MySQL
mysql>CREATE USER 'janko'@'localhost' identified by 'haslo';
mysql>GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'janko'@'localhost';
Listing 2.
Logowanie do MySQL
debian:~# mysql --user=janko -p
Listing 3.
Tworzenie bazy danych i tablicy
1: mysql>CREATE DATABASE katalog;
2: mysql>SHOW DATABASE;
3: mysql>USE katalog
4: mysql>CREATE TABLE `adres` (
-> `adres` text,
-> `slowa` text,
-> `opis` text);
5: mysql>SHOW TABLES;
Tabela 1.
Przydatne polecenia MySQL
Polecenie
Opis
CREATE DATABASE nazwa
Tworzy bazę danych o podanej nazwie
USE nazwa
Wybiera bazę danych do dalszej pracy
DROP DATABASE nazwa
Kasuje bazę danych o podanej nazwie
CREATE TABLE `nazwa` ()
Tworzy tablice o podanej nazwie i zdefiniowanych
polach
SHOW TABLES
Wyświetla listę tablic znajdujących się w używanej
bazie danych
DROP TABLE nazwa;
Kasuje wybraną tablice
SELECT * FROM nazwa_tabeli
Wyświetla całą zawartość tablicy o podanej nazwie
INSERT INTO nazwa_tabeli ( nazwy_kolumn)
VALUE (dane)
Wstawia dane do podanych kolumn
DELETE FROM nazwa_tabeli WHERE nazwa_kolum-
ny=wartosc
Usuwa wpis w tabeli
Tabela 2.
Popularne typy danych
Typ
Rozmiar
Opis
VARCHAR
Długość łańcucha + 1 bajt
Pole tekstowe o zmiennej długości, w MySQL do
wersji 5.0.3 maksymalnie 255 znaków
TINYTEXT
Długość łańcucha + 1 bajt
Maksymalnie 255 znaków
TEXT
Długość łańcucha + 2 bajty
Maksymalnie 65535 znaków
SMALLINT
2 bajty
Liczba z zakresu -32768 do 32767
INT
4 bajty
Liczba z zakresu -2147483648 do 2147483647
DATE
3 bajty
Data w formacie YYYY-MM-DD
24
Dla początkujących
Podstawy MySQL
luty 2009
25
Dla początkujących
Podstawy MySQL
www.lpmagazine.org
Dodawanie wpisów jest jedynie środkiem
do celu jakim jest szybkie wyszukiwanie infor-
macji. Tak samo jak w przypadku dodawania
wpisów do wyszukiwania potrzebny jest for-
mularz, widoczny na Listingu 6 oraz funkcja
operująca na bazie danych.
Formularz jak i każdy fragment HTML
można umieścić w zmiennej za pomocą:
<<<
.
Wyraz po tym znaku stanowi zarówno początek
jak i znak końcowy informacji umieszczonej w
zmiennej. Umieszczenie formularza w zmien-
nej php ułatwia wstawienie go do dowolnej ilo-
ści stron w serwisie. Formularz po wykonaniu
przechodzi do innej strony w której znajduje się
wywołanie funkcji wyszukującej i wyświetlony
zostanie wynik wyszukiwania.
Listing 7 pokazuje wyszukiwanie i wy-
świetlanie zawartości tablicy.
W linii 3 wykonywane jest sprawdzenie
czy mamy co wyszukiwać. Jeżeli przekazana
została pusta zmienna funkcja kończy działa-
nie. Funkcja w linii 5 likwiduje spacje z po-
czątku i końca zapytania. Następna funkcja
w linii 6 powoduje rozbicie zmiennej na ta-
blice w której każda komórka zawiera kolej-
ny wyszukiwany wyraz. Rozbicie to następu-
je na podstawie podanego znaku podziału w
tym przypadku spacji. Kolejne linijki nawią-
zują połączenie z serwerem i wybierają ba-
zę danych. W linii 10 zerowana jest zmienna
służąca obliczeniu który adres w bazie najle-
piej odpowiada wyszukiwanym słowom. Pę-
tla rozpoczynająca się w linii 11 razem z li-
nią 15 służy obliczeniu w procentach która
ze stron w bazie najlepiej odpowiada wyszu-
kiwanym słowom. W linii 16 do zmiennej za-
pisane zostaje zapytanie do bazy danych. Po-
woduje ono wyszukanie wszystkich wpisów
w których znaleziono słowa kluczowe. Zo-
stają one również posortowane według ilo-
ści trafień. W linii 17 wykonane zostaje za-
pytanie do bazy danych. Pętla rozpoczynają-
ca się w linii 18 służy wyświetleniu pobra-
nych z bazy danych informacji. Linia 20 słu-
ży utworzeniu linku do strony która została
odnaleziona, do adresu należy dodać http:
// przyjmując, iż przechowywane adresy nie
posiadają tej części. Adres z bazy danych jest
umieszczony na początku tablicy do której
wczytywane są kolejne wiersze tablicy. Rów-
nież w tej samej linii wyświetlana jest infor-
macja o trafności pokazanej strony. Pamięta-
jąc, że numerowanie zaczyna się od 0 widać,
iż pola tablicy mają zawartość zgodną z ko-
lejnością wpisania w zapytanie MySQL. Ko-
lejne linie od 22 do 31 sprawdzają czy stro-
na posiada opis który można wyświetlić, w
przeciwnym razie wyświetlone zostają jej
słowa kluczowe.
Skrypty administracyjne
Dając użytkownikom strony swobodną możli-
wość dodawania adresów, można kontrolować
i zmieniać wpisy za pomocą linii poleceń. In-
ną metodą jest utworzenie zabezpieczonej ha-
słem strony z narzędziami do zarządzania ba-
zą. Dzięki temu można w dużo szybszy spo-
sób przeglądać zawartość bazy, zmieniać i ka-
sować wpisy.
Stworzenie takiego zestawu narzędzi trze-
ba zacząć od zabezpieczenia dostępu. Podsta-
wą zabezpieczenia jest utworzenie dwóch stron
posługujących się sesją. W jednej z nich może
znajdować się hasło gdyż serwer nie przekazu-
je kodu php klientom. Inną możliwością jest
Listing 4.
Formularz przyjmujące dane do zapisu w bazie
1: <?php
2: include("lib.php");
3: ?>
4: <h3 align="center">
5: Na Tej stronie możliwe jest dodanie adresu strony do bazy.
6: </h3><br/>
7: <a href="index.php">Powrót do strony głównej</a>
8: <form action="dodanie.php" method="post">
9: <div>Pole adresu np: www.strona.pl</div><input type="text" size="50"
name="adres" value=""><br/>
10: <div>słowa kluczowe dla strony</div><input type="text" size="70"
name="temat" value=""><br/>
11: <div>opis strony</div><input type="text" size="200" name="opis"
value=""><br/>
12: <input type="submit" value="dodaj">
13: </form>
14: <?php
15: dodanie();
16: ?>
Listing 5.
Funkcja dodająca wpisy do bazy danych
1:
function
dodanie
()
2: {
3:
if
(
!empty
(
$_POST[
'adres'
]
))
4: {
5: $adres=trim
(
$_POST[
'adres'
]
)
;
6: $regx=
'/^((?:[a-z0-9]+)(?:(?:\.\w+)+))(?::(\d+))?(\/.+?)?(?:
\?(.+?))?(?:\#(.+?))?$/'
;
7:
if
(
preg_match
(
$regx,$adres,$match
))
{
8:: $sql_conn=mysql_connect
(
"$serwer","$uzytkownik","$haslo"
)
;
9: mysql_select_db
(
"$baza",$sql_conn
)
10:
or
die
(
"blad wyboru bazy"
)
;
11: $zapytanie=mysql_query
(
"
Select
adres
from
adres
where
adres=
'$adres'
"
)
;
12:
if
(
mysql_fetch_row
(
$zapytanie
))
echo "Taka strona już
istnieje w bazie";
13:
else
14: {
15: $temat=trim
(
$_POST[
'temat'
]
)
;
16: $unikatowe = array_unique
(
explode
(
" ", $temat
))
;
17: $slowa = implode
(
" ", $unikatowe
)
;
18: $opis=trim
(
$_POST[
'opis'
]
)
;
19: mysql_query
(
"
INSERT
INTO
adres
(
adres,slowa,opis
)
VALUE
(
'$
adres'
,
'$temat'
,
'$opis'
)
;"
)
;
20: }
21: }
22:
else
echo "zły adres";
23: }
24
Dla początkujących
Podstawy MySQL
luty 2009
25
Dla początkujących
Podstawy MySQL
www.lpmagazine.org
umieszczenie hasła w bazie danych. Wykorzy-
stanie bazy danych ułatwia zadanie przy dużej
ilości kont. Posłużymy się jednak prostszą me-
todą uwierzytelniania, wykorzystującą plik lo-
gowania sesja.php oraz plik z narzędziami my-
sqladmin.php.
Na Listingu 8 w linii 2 znajduje się
funkcja rozpoczynająca sesję. Musi ona za-
wsze znajdować się na początku pliku. W li-
nii 3 porównane zostają nazwa użytkowni-
ka oraz hasło ze zdefiniowanymi wartościa-
mi. W zależności od wyniku porównania od-
powiednia wartość logiczna zostanie przypi-
sana do zmiennej logowanie w tablicy
SES-
SION
. Zmienne znajdujące się w tej tablicy są
dostępne na wszystkich stronach otwartych w
ramach sesji. Jeżeli logowanie zakończy się
powodzeniem, użytkownik zostanie przekie-
rowany do zabezpieczonej strony. W linii 9
przed przekierowaniem ustawione zostają pa-
rametry chroniące przed zapisaniem danych
w przeglądarce. Uniemożliwia to późniejsze
wczytanie strony z pamięci podręcznej prze-
glądarki. W linii 10 następuje przekierowa-
nie przeglądarki. Jeżeli logowanie nie powio-
dło się użytkownik zobaczy jedynie formularz
umożliwiający logowanie.
Plik zawierający narzędzia administracyj-
ne musi się rozpoczynać od sprawdzenia czy
użytkownik jest zalogowany, Listing 9.
W linii 2 ponownie widać rozpoczęcie se-
sji, bez takiego zapisu sesja wywołana na po-
przedniej stronie uległaby zakończeniu. Je-
żeli użytkownik nie jest zalogowany zostanie
on przekierowany do strony logowania, zanim
wczytana zostanie dalsza część strony.
Narzędzia dostępne po zalogowaniu czę-
ściowo pokrywają się z opcjami jakie ma do
dyspozycji każdy użytkownik. Można je jed-
nak lepiej dostosować do zarządzania bazą.
Przydatną możliwością jest wyświetlanie za-
wartości bazy, widoczne na Listingu 10.
Taki sposób wyświetlenia bazy różni się
w znaczny sposób od metody dostępnej zwy-
kłym użytkownikom. Po naciśnięciu jednego
przycisku, skrypt wyświetla w tabeli całą za-
wartość bazy danych. W linii 1 widać warunek
do którego spełnienia wystarczy utworzyć for-
mularz z samym przyciskiem wysłania. Mu-
si on utworzyć zmienną
wyswietl
i wywołać
stronę na której znajduje się razem ze skryp-
tem. W linii 5 widać zapytanie do bazy danych
które powoduje wczytanie całej zawartości ta-
blicy. W linii 9 za pomocą pętli i funkcji dzie-
lącej odpowiedź bazy danych na wiersze, ca-
łość wyświetlana jest w formie kolejnych ele-
mentów tablicy. Po zamknięciu tablicy w li-
nii 14 likwidowana jest zmienna która urucho-
miła skrypt.
Kolejną czynnością przydatną przy utrzy-
mywaniu bazy danych jest kasowanie znajdu-
jących się w niej wpisów. Jak widać na Listin-
gu 11 jest to czynność dość prosta.
Skrypt ten przyjmuje z formularza zmien-
ną
kasuj
zawierająca adres strony do usunię-
cia. Zmienną tą z tablicy zmiennych POST
przepisuje do zmiennej
usun
, po czym w linii 6
tworzy odpowiednie zapytanie do bazy danych.
Metoda taka ma pewien słaby punkt. Jeżeli ad-
res strony jest długi nie sposób wpisać go z pa-
mięci. Można w tym celu wyświetlić zawartość
całej tablicy i skopiować adres do formularza.
Bardziej eleganckim rozwiązaniem jest utwo-
rzenie tablicy z kluczem podstawowym zapew-
niającym jednoznaczną identyfikacje każdego
wpisu. Polecenie tworzące taką tablicę widać
na Listingu 12.
Listing 6.
Formularz przyjmujący dane do wyszukania
1: $form =<<< EOF
2:
<div align="center">
3:
<form action="znalezione.php" method="post">
4:
<input type="text" size="50" name="szukane" value=""><br/>
5:
<input type="submit" value="szukaj">
6:
</form>
7:
</div><hr>
8:EOF;
Listing 7.
Funkcja przeszukująca bezę danych
1:
function
szukanie
()
2: {
3:
if
(
!empty
(
$_POST[
'szukane'
]
))
4: {
5: $szukane=trim
(
$_POST[
'szukane'
]
)
;
6: $szukane=explode
(
" ", $szukane
)
;
7: $sql_conn=mysql_connect
(
"$serwer","$uzytkownik","$haslo"
)
;
8: mysql_select_db
(
"$baza",$sql_conn
)
9:
or
die
(
"blad wyboru bazy"
)
;
10: $hits=
'0'
;
11: foreach
(
$szukane
as
$slowo
)
12: {
13: $hits .= "+
(
slowa
LIKE
'%{$slowo}%'
)
";
14: }
15: $hits ="
(
$hits
)
/".count
(
$szukane
)
." * 100";
16: $sql ="
SELECT
adres, slowa, opis, $hits
as
hits
FROM
adres HAVING
hits > 0
ORDER BY
hits
DESC
, adres ASC";
17: $zapytanie=mysql_query
(
$sql
)
or
die
(
"Błąd zapytania"
)
;
18: while
(
$tab=mysql_fetch_row
(
$zapytanie
))
19: {
20: echo "<b><a href=http://$tab[0]>".$tab[0]."</a></b>";printf
(
"
%.0f", $tab[3]
)
;
21: echo
'%<br>'
;
22:
if
(
$tab[2]
)
23: {
24: echo $tab[2];
25: echo "<br>";
26: }
27:
else
28: {
29: echo $tab[1];
30: echo "<br>";
31: }
32: };
33: unset
(
$_POST[
'szukane'
]
)
;
34: }
35:}
26
Dla początkujących
Podstawy MySQL
luty 2009
27
Dla początkujących
Podstawy MySQL
www.lpmagazine.org
W linii 2 tworzone jest pole liczbowe o
długości 11 znaków, które będzie automatycz-
nie zwiększane dla każdego nowego wpisu. Po-
le takie jest koniecznością przy relacyjnych ba-
zach danych. W naszym prostym przykładzie
możemy się jednak obyć bez takiego pola.
Ostatnim elementem potrzebnym do zarzą-
dzania bazą danych jest dodawanie elementów.
Do tego celu można wykorzystać skrypt prze-
znaczony dla wszystkich użytkowników z Li-
stingu 5.
Zarządzanie serwerem MySQL
Do zarządzania serwerem MySQL można wy-
korzystań narzędzie phpMyAdmin.
Jest ono dostępne pod adresem http://
www.phpmyadmin.net/home_page/index.php.
Sama instalacja sprowadza się do rozpako-
wania pobranego pliku i skierowania do nie-
go posiadanego serwera WWW. Po instalacji
należy zacząć od zabezpieczenia narzędzia
przed niepowołanym dostępem. Jeżeli do ser-
wera MySQL ma dostęp użytkownik root bez
hasła, główna strona zostanie wyświetlona z
jego uprawnieniami, co widać na Rysunku 1.
W takiej sytuacji trzeba wykorzystać zakładkę
Uprawnienia aby utworzyć hasła dla wszyst-
kich kont użytkowników. Po zabezpiecze-
niu hasłem domyślnie wykorzystanego kon-
ta niemożliwy stanie się dostęp do phpMyAd-
min. Aby móc się zalogować należy najpierw
utworzyć plik config.inc.php. Najprostszą me-
todą jest zmienienie nazwy pliku config.sam-
ple.inc.php znajdującego się w głównym ka-
talogu phpMyAdmin. Następnie należy edyto-
wać powstały plik, aby w linii 17 wstawić fra-
zę służącą szyfrowaniu. Po takiej podstawo-
wej konfiguracji możliwe powinno być zalo-
gowanie się do phpMyAdmin.
Po zalogowaniu się widoczne mogą być in-
formacje o braku modułów mcrypt i mbstring.
W pierwszym wypadku jest to biblioteka słu-
żąca szyfrowaniu, którą należy zainstalować.
W drugim przypadku jest to wbudowane roz-
szerzenie PHP które w trakcie kompilacji jest
domyślnie wyłączone. Aby je uruchomić nale-
ży przeprowadzić kompilacje z właściwym pa-
rametrem.
Pomimo powyżej wspomnianych infor-
macji o brakach można spokojnie wyko-
rzystać możliwości phpMyAdmin. Na stro-
nie domowej po zalogowaniu widoczne są
przede wszystkim informacje dotyczące ser-
wera MySQL oraz WWW. Możliwe jest rów-
nież w tym oknie utworzenie nowej bazy da-
nych. Korzystając z tej opcji możemy utwo-
rzyć bazę danych wykorzystaną w powyż-
szych przykładach. Trzeba pamiętać o usu-
nięciu już istniejącej bazy lub nadaniu ba-
zie nowej nazwy. Po jej utworzeniu poja-
wi się możliwość dodania tablic. Możemy w
tym miejscu utworzyć tablicę adres z 3 pola-
mi. Kolejne okno będzie wymagało podania
nazw 3 pól oraz rodzaju danych jakie mają
przechowywać. W prostym przypadku nie są
Listing 8.
Nawiązanie sesji i identyfikacja użytkownika
1: <?php
2: session_start
()
;
3:
if
((
$_POST[
'user'
]==
'user'
)
&&
(
$_POST[
'password'
]==
'hasło'
))
$_SESSION
[
'logowanie'
]=
'true'
;
4:
else
$_SESSION[
'logowanie'
]=
'false'
;
5:
if
(
$_SESSION[
'logowanie'
] ==
'true'
)
6: {
7: $przenies = "mysqladmin.php";
8: header
(
"HTTP/1.1"
)
;
9: header
(
"Cache-Control: no-cache, must-revalidate"
)
;
10: header
(
"Location: ".$przenies
)
;
11: }
12:
else
13: {
14: $form = <<< EOF
15: <form action="sesja.php" method="post">
16: <p>użytkownik:<input type="text" name="
user
"></p><br>
17: <p>hasło:<input type="
password
" name="
password
"></p>
18: <input type="submit" value="zaloguj">
19: </form>
20: EOF;
21: echo $form;
22: }
23: ?>
Listing 9.
Weryfikacja uprawnień użytkownika
1: <?php
2: session_start
()
;
3:
if
(
$_SESSION[
'logowanie'
]!=
'true'
)
4: {
5: $przenies = "sesja.php";
6: header
(
"Location: ".$przenies
)
;
7: }
8: ?>
Rysunek 1.
Główna strona phpMyAdmin
26
Dla początkujących
Podstawy MySQL
luty 2009
27
Dla początkujących
Podstawy MySQL
www.lpmagazine.org
potrzebne żadne więcej informacje. Efekt do-
dania tablicy widoczny jest na Rysunku 2. Na
koniec wystarczy dodać wpisy do bazy da-
nych. Warto zwrócić uwagę, iż wszystkie wy-
konywane czynności są od razu pokazywane
w formie poleceń MySQL jakie należało by
wpisać w konsoli.
Inną możliwością wykonywania operacji
na bazach danych jest zakładka SQL. Po jej wy-
braniu możliwe jest wprowadzanie poleceń tak
samo jak w linii poleceń.
Tworzenie i wprowadzanie zmian w ba-
zie danych to tylko część możliwości php-
MyAdmin. Warto zwrócić uwagę na zakład-
ki Status pokazującą ruch na serwerze. Za-
kładki Eksportuj i Importuj, bardzo ułatwia-
ją tworzenie kopii zapasowych i ich przy-
wracanie. Oczywiście pozostaje jeszcze za-
kładka Uprawnienia, pomagająca zarządzać
użytkownikami bazy danych. Opcja ta od-
daje nam do dyspozycji bardzo przejrzysty
interfejs pozwalający w prosty sposób zde-
finiować uprawnienia każdego użytkowni-
ka. Możliwe jest również ograniczenie za-
sobów jakie może wykorzystać konkretny
użytkownik.
Podsumowanie
Implementacja bazy danych nie jest czyn-
nością trudną, szczególnie przy wykorzysta-
niu narzędzia jakim jest phpMyAdmin. Naj-
więcej trudu i doświadczenia wymaga samo
projektowanie baz danych aby była ona zop-
tymalizowane pod kontem wydajności i roz-
miarów. Nabiera to szczególnego znaczenia
przy dużych projektach, gdy konieczne jest
przeszukiwanie wielu tabel zawierających
tysiące wpisów. Takie bazy danych choć
często niezauważane znajdują się w każdym
miejscu, począwszy od szpitali na giełdzie
kończąc. Artykuł pokazał jedynie prostszą
część implementacji składającą się na pro-
ces powstawania baz danych. Należy zda-
wać sobie sprawę, iż do stworzenia bazy da-
nych wymagany jest również proces projek-
towania. Od niego zależy użyteczność ba-
zy danych.
Listing 10.
Metoda wyświetlenia całej bazy danych
1:
if
(
isset
(
$_POST[
'wyswietl'
]
))
2: {
3: $sql_conn=mysql_connect
(
"$serwer","$uzytkownik","$haslo"
)
;
4: mysql_select_db
(
"$baza",$sql_conn
)
or
die
(
"błąd podczas wybierania
bazy"
)
;
5: $query=
(
'SELECT * FROM adres'
)
;
6: $wynik=mysql_query
(
$query
)
;
7: echo "<
TABLE
border=2>";
8: echo
'<tr align="center"><td>adres</td><td>slowa</td><td>opis</td></
tr>'
;
9: while
(
$wiersz=mysql_fetch_row
(
$wynik
))
10: {
11: echo "<tr><td>". $wiersz[0]."</td><td>".$wiersz[1]."</
td><td>".$wiersz[2] ."</td></tr>";
12: }
13: echo"</
TABLE
>";
14: unset
(
$_POST[
'wyswietl'
]
)
;
15: };
Listing 11.
Metoda kasowania wpisów w bazie danych
1:
if
(
isset
(
$_POST[
'kasuj'
]
))
2: {
3: $sql_conn=mysql_connect
(
"$serwer","$uzytkownik","$haslo"
)
;
4: mysql_select_db
(
"$baza",$sql_conn
)
or
die
(
"błąd podczas wybierania
bazy"
)
;
5: $usun=$_POST[
'kasuj'
];
6: $query="DELETE
FROM
`adres`
WHERE
`adres`=
'$usun'
";
7: mysql_query
(
$query
)
;
8: unset
(
$_POST[
'kasuj'
]
)
;
9:};
Listing 12.
Tworzenie tablicy z kluczem podstawowym
1: mysql>
CREATE TABLE
`adres`
(
2: -> `id' INT
(
11
)
NOT
NULL
AUTO_INCREMENT
PRIMARY
KEY
,
3: -> `adres` text,
4: -> `slowa` text,
5: -> `opis` text
)
;
Rysunek 2.
Widok polecenia tworzącego tablicę
Absolwent technikum policealnego na kie-
runku informatyki w Szczecinie. Obecnie
student 2 roku Europeistyki na Uniwersy-
tecie Szczecińskim. Od ponad roku pra-
cownik firmy świadczącej usługi interneto-
we w Gryfinie.
Kontakt z autorem:
sylwesterzdanowski@o2.pl
O autorze