background image

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.

background image

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

background image

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: }

background image

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:}

background image

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

background image

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