Tworzenie tabeli w bazie danych

advertisement
Przygotowanie zajęć lekcyjnych
z informatyki dotyczących zastosowania
MySQL i PHP w tworzeniu
zaawansowanych stron internetowych
Autor:
Tadeusz Koziemczyk
kontakt: [email protected]
MySQL i PHP w tworzeniu zaawansowanych stron internetowych na lekcjach informatyki
Wstęp
Jeśli prowadzący zajęcia zamierza w sposób praktyczny zapoznać uczniów
z zaawansowanymi technikami tworzenia stron internetowych to z pewnością będzie musiał
poświęcić około 14 godzin lekcyjnych na języki SQL i PHP. Należy zwrócić uwagę, że
przygotowanie takich lekcji od strony oprogramowania na komputerach uczniowskich,
w porównaniu z innymi zagadnieniami, wymaga większego zaangażowania ze strony
prowadzącego zajęcia. Również od strony dydaktycznej takie zajęcia nie są łatwe do
przygotowania i poprowadzenia. Z pewnością łatwiej znaleźć właściwą koncepcje
przeprowadzenia tych tematów na kółku informatycznym niż na zwykłych lekcjach.
W korzystniejszej sytuacji są nauczyciele, którzy wcześniej mogli, w ramach przydziałowych
godzin na lekcje informatyki, realizować SQL w Access’ie i składnię języka C. W takim
przypadku zaprezentowane techniki posługiwania się SQL i PHP nie będą dużym
zaskoczeniem, a prowadzący zajęcia będzie miał możliwość nawiązania do wcześniej
realizowanych tematów.
Poniższy artykuł zawiera informacje o przygotowaniu środowiska na komputerach
uczniowskich oraz merytoryczny materiał dotyczący podstawowych zapytań MySQL.
Do każdej części dodane zostały propozycje ćwiczeń sprawdzających opanowanie materiału.
Artykuł nie przedstawia treści związanych z posługiwaniem się językiem PHP, zakładając, że
język ten został opanowany przez uczniów w sposób podstawowy. Natomiast obecnie
prowadzący zajęcia ma za zadanie zachęcić uczniów do zastosowania tego języka do
komunikacji z bazą danych oraz przedstawić możliwości uzyskania interaktywności stron w
oparciu o PHP i MySQL.
2
MySQL i PHP w tworzeniu zaawansowanych stron internetowych na lekcjach informatyki
Przygotowanie środowiska pracy na stacjach uczniowskich
Środowisko pracy do ćwiczeń z zaawansowanych technik stron internetowych powinno
składać się:
o z serwera WWW Apache, do pobrania z http://httpd.apache.org (2.0.49). Opis
instalacji znajdują się w oficjalnej dokumentacji, którą można znaleźć pod adresem
http://httpd.apache.org/docs-2.0/platform/windows.html.
o z Interpretera PHP, do pobrania z http://php.net (4.3.4)
o z serwer baz danych MySQL http://mysql.com (4.0.18)
o z Edytora kodu PHP (i innych) Notepad++, można pobrać ze strony http://notepadplus.sourceforge.net
Ostatnia opcja nie jest konieczna, stanowi tylko ułatwienie pisania składni języka PHP.
Oczywiście podana wyżej propozycja może być w niektórych przypadkach uciążliwa
i pracochłonna w konfiguracji. Dlatego też można przygotować środowisko pracy w prostszy
sposób. Zainstalować oprogramowanie KRASNAL Serv 2.7 ze strony www.krasnal.tk.
W skład KRASNAL Serv 2.7 wchodzą:
o
o
o
o
o
o
o
o
o
o
o
Apache 1.3.31
PHP 4.3.9 + SQLite
PHP 5.0.2
MySQL 3.23.58
ActivePerl 5.6.1.628
phpMyAdmin 2.6.2 pl2
Zend Optimizer 2.0.3
CesarFTP 0.99g
WebAlizer 2.1
Free SMTP Server
SQLiteManager 1.0.1
Wszystko to uzyskamy przy pomocy jednej instalacji, nie jest wymagana konfiguracja (tylko
ustalenie katalogu na strony www).
Kolejna propozycja to VertrigoServ, można pobrać ze strony http://vertrigo.sourceforge.net/
Komponenty VertrigoServ:
o
o
o
o
o
o
o
Apache 2.0.55
PHP 5.1.2
MySQL 5.0.19
SQLite 3.3.4
PhpMyAdmin 2.8.0.1
ZendOptimizer 2.6.2
SQLiteManager 1.1.3
Tak jak i w poprzedniej propozycji wszystko to uzyskamy przy pomocy jednej instalacji, nie
jest wymagana konfiguracja.
3
MySQL i PHP w tworzeniu zaawansowanych stron internetowych na lekcjach informatyki
Ćwiczenie 1.
Jakie środowisko musi być zainstalowane na twoim komputerze oraz jakie procesy powinny
być uruchomione aby mogły poprawnie funkcjonować strony internetowe wykonane w
oparciu o technologię PHP i MySQL?
SQL - Structured Query Language
MySQL jest to darmowy systemem obsługi baz danych, licencja GPL (General Public
License). Jest wykorzystywany do stworzenia serwera obsługującego bazy danych. MySQL
jest jednym z najpopularniejszych interfejsów języka SQL
Do połączenia się z serwerem baz danych należy użyć odpowiedniego oprogramowania
tzw. klienta lub języka skryptowego (umieszczanego na serwerach WWW), który posiada
wbudowaną obsługę baz danych. Programem klienckim może być oprogramowanie
dostarczane razem z pakietem MySQL. Można oczywiście korzystać z bazy danych przez
połączenie wywoływane odpowiednim skryptem.
Zalecanym narzędziem do obsługi SQL, jest panel administracyjny do baz danych –
phpMyAdmin (oczywiście jeśli usługodawca nam go oferuje). Połączenie z bazą MySQL
można uzyskać z poziomu skryptów PHP lub Perl oraz kompilowanych CGI (możliwości te
zależą od oprogramowania na serwerze).
Aby uzyskać połączenie z serwerem baz danych należy znać:
- adres domenowy lub adres IP
- nazwę użytkownika
- oraz hasło
Ćwiczenie 2. Jakie warunki muszą być spełnione aby można było wykonywać operacje w
bazie danych?
Ćwiczenie 3. Wymień podstawowe narzędzie do obsługi bazy SQL z poziomu przeglądarki
internetowej.
Łączenie się z bazą danych
Aby dokonać oczekiwanych operacji w bazie danych należy: połączyć się z bazą danych,
wysłać do niej informacje. Informacje przesłane do bazy danych są w postaci zapytań. Aby
nawiązać połączenie z serwerem MySQL należy użyć odpowiedniej funkcji języka PHP,
wygląda to następująco:
$db = mysql_connect ("adres", "użytkownik", "hasło"); gdzie adres, użytkownik, hasło
są danymi wartościami otrzymanymi od usługodawcy hostingu.
Jeśli praca z bazą danych jest zakończona należy użyć funkcji: mysql_close ($db);
Ćwiczenie 4. Napisz skrypt PHP (config.php), który umożliwia połączenie z serwerem
MySQL. W jaki sposób należy posłużyć się tym skryptem (podaj listę kroków)?
4
MySQL i PHP w tworzeniu zaawansowanych stron internetowych na lekcjach informatyki
Tworzenie nowej bazy i wybieranie bazy
Do stworzenia nowej bazy używamy funkcji mysql_create_db(nazwa_bazy). Jeśli chcemy
założyć bazę o nazwie „baza1” używamy polecenia mysql_create_db("baza1");. Po
prawidłowym podłączeniu do serwera MySQL należy wskazać bazę, na której chce się
pracować (ilość możliwych baz do utworzenia zależy od ustalenia z usługodawcą hostingu).
Jeśli będziemy wykonywać operacje na określonej bazie musimy ją wybrać, używając funkcji
mysql_select_db(nazwa_bazy);.
Dla
„bazy1”
będzie
następująca
składnia:
mysql_select_db("baza1");. Baza1 jest od tego momentu dostępna, jeśli została wcześniej
utworzona. Aby wykonywać podstawowe operacje w bazie1 tworzymy zapytania. Tworzy się
je stosując funkcję mysql_query(zapytanie_SQL);. W praktyce wygląda to następująco:
$zaptanie="miejsce na twoje zapytanie SQL";
$zrealizuj=mysql_query($zapytanie);
Funkcja mysql_query zwróci wartość TRUE, jeśli operacja zostanie zrealizowana, w
przeciwnym wypadku - zwróci wartość FALSE.
Ćwiczenie 5. Napisz skrypt PHP, który tworzy bazę danych o nazwie absolwenci.
Tworzenie tabeli w bazie danych
Tabele służą do przechowywania informacji. W celu utworzenia tabeli należy zaplanować jej
pola określające jakie dane będzie zawierał pojedynczy rekord. Aby utworzyć tabelę
przechowującą dane o studentach projektujemy pola: imię, nazwisko, data_urodzenia.
Przykładowy rekord będzie wyglądał następująco: 'Jan', 'Kowalski', '1968-09-10'.
Podane dane są różnego typu. imię i nazwisko to dane tekstowe, data_urodzenia to pole
zawierające datę. Oczywiście można projektować pola reprezentuje dane liczbowe. Polecenie
SQL CREATE TABLE służące do utworzenia tabeli jest następujące:
CREATE TABLE nazwa_tabeli struktura_tabeli;
nazwa_tabeli - oznacza nazwę definiowanej tabeli, struktura_tabeli - zawiera dokładną
specyfikację poszczególnych pól tabeli. Przykładowe polecenie SQL dla utworzenia tabeli
studenci
CREATE TABLE studenci (
imie VARCHAR(20),
nazwisko VARCHAR(40),
data_urodzenia DATE
);
Jak widać dokładny schematu składni SQL dla tego polecenia można przedstawić w
następujący sposób:
CREATE TABLE nazwa_tabeli (
nazwa1 typ1,
nazwa2 typ2,
5
MySQL i PHP w tworzeniu zaawansowanych stron internetowych na lekcjach informatyki
....................
nazwa typ,
PRIMARY KEY(nazwa_id)
);
PRIMARY KEY oznacza, że pole nazwa_id stanowi klucz główny, a klucz główny nie może
się powtarzać
Oto kilka typów pól:
TINYINT - 1-bajtowe pole, przechowujące wartości całkowite bez znaku z przedziału od 0 do
255 lub ze znakiem z przedziału od -127 do 127
FLOAT(dokładność) - Liczba zmiennoprzecinkowa z precyzją wyrażaną liczbą bajtów. Dwie
wartości akceptowane jako precyzja to 4 i 8. Użycie 4 tworzy liczbę zmiennoprzecinkową o
pojedynczej precyzji, natomiast 8 - liczbę zmiennoprzecinkową o podwójnej precyzji.
Szczegóły dotyczące tych dwóch typów danych opisują pola FLOAT i DOUBLE
FLOAT - 4-bajtowa liczba zmiennoprzecinkowa z zakresu od -1.402823466E+38 do 1.175494351E-38, 0 i 1.175494351E-38 do 3.402823466E+38
DOUBLE - 8-bajtowa liczba zmiennoprzecinkowa przechowująca wartości z zakresu od 1.7976931348623157E+308 do -2.2250738585072014E-308, 0, i 2.2250738585072014E-308
do 1.7976931348623157E+308
DECIMAL - Pole zmiennoprzecinkowe o takiej samej pojemności jak DOUBLE. Liczba,
zamiast zostać zredukowana do postaci szesnastkowej, pamiętana jest w formacie znakowym
DATE - Data (bez czasu), wyświetlana w formacie RRRR-MM-DD. Akceptuje daty w
różnych formatach z zakresu od 1000-01-01 do 9999-12-31
TIME - Czas mieszczący się w przedziale od -838:59:59 do 838:59:59
YEAR - Rok. Dozwolone wartości to przedział od 1901 do 2155 oraz wartość 0000. MySQL
wyświetla wartość typu YEAR w formacie RRRR
CHAR Pole znakowe o stałej długości z zakresu od 1 do 255 bajtów. Po wstawieniu wartości
puste miejsca pola CHAR są uzupełniane z prawej strony spacjami
VARCHAR - Pole znakowe o zmiennej długości z zakresu od 1 do 255 bajtów. Zajmowany
jest jedynie taki obszar pamięci, jakiego wymaga wartość wstawiona w to pole
BLOB, TEXT - Kolumna binarna lub tekstowa o rozmiarze nie przekraczającym 65 535
bajtów
Ćwiczenie 6. W jaki sposób z poziomu PHP utworzyć w bazie danych absolwenci
odpowiednią tabelę byli_uczniowie przechowującą dane o absolwentach? Jak uruchomić taki
skrypt?
6
MySQL i PHP w tworzeniu zaawansowanych stron internetowych na lekcjach informatyki
Podstawowe polecenia SQL dotyczące tabeli
Polecenie INSERT. wstawia pojedynczy rekord do tabeli.
INSERT INTO nazwa_tabeli VALUES (
wartosc_pola1,
wartosc_pola2,
wartosc_pola3,
.......................
wartosc_pola
);
Aby wstawić rekord do tabeli studenci należy posłużyć się poleceniem:
INSERT INTO studenci VALUES ('Jan', 'Kowalski', '1980-04-24');
Powyższe polecenie można ponowić w celu wstawienia nowego rekordu. Należy tylko
zmodyfikować wartości pól dla nowego rekordu np.:
INSERT INTO studenci VALUES ('Aneta', 'Kaczmarek', '1982-05-16'); Jednak nie zawsze
chcemy wstawić wartości dla wszystkich pól tabeli. Wtedy polecenie INSERT należy
zmodyfikować. Po nazwie tabeli tworzymy listę pól, które będą wypełniane danymi. W takim
przypadku zapytanie należy zredagować w następujący sposób:
INSERT INTO studenci (imie, nazwisko) VALUES ('Alicja', 'Tomala'); Jak łatwo zauważyć
pole data_urodzenia zostało pominięte. W ten sposób można postąpić z dowolnym polem
tabeli studenci. Schemat polecenia SQL dla tego przypadku wygląda następująco:
INSERT INTO nazwa_tabeli (
nazwa_pola1,
nazwa_pola2,
nazwa_pola3
)
VALUES (
wartosc_pola1,
wartosc_pola2,
nazwa_pola3
);
Tak więc jeśli chcemy wstawiać nowe dane do istniejącej tabeli używamy polecenia INSERT.
Natomiast do modyfikacji danych będących w danej tabeli służy polecenie UPDATE. Jego
składnia jest następująca:
UPDATE nazwa_tabeli SET
nazwa_pola1='zmodyfikowana_wartość1',
nazwa_pola2='zmodyfikowana_wartość2',
nazwa_pola3='zmodyfikowana_wartość3';
Tak więc polecenie UPDATE studenci SET imie='Janek'; zmodyfikuje wszystkie rekordy w
taki sposób, że pole imie będzie miało wartość 'Janek'. Oczywiście jest to tylko przykład i
należy to wziąć pod uwagę. Bardziej przydatną konstrukcją dotyczącą modyfikacji danych z
7
MySQL i PHP w tworzeniu zaawansowanych stron internetowych na lekcjach informatyki
określonej tabeli jest zastosowanie w poleceniu UPDATE klauzuli WHERE. Wtedy zostaną
uaktualnione pola w danym rekordzie o ile dane z tego rekordu będą spełniać określony
warunek.
UPDATE studenci SET imie='Andrzej' WHERE nazwisko='Kowalski';
Powyższe polecenie zmodyfikuje pole imie na ‘Andrzej’ w tych rekordach, w których pole
nazwisko ma wartość ‘Kowalski’.
Ćwiczenie 7. W jaki sposób można wprowadzać dane do tabeli w bazie danych?
Ćwiczenie 8. Napisz kod strony internetowej, która umożliwi osobom mającym dostęp do
Internetu wprowadzanie swoich danych do bazy danych.
Ćwiczenie 9. Napisz kod strony internetowej, która umożliwi osobom mającym dostęp do
Internetu modyfikowanie swoich danych, które wcześniej wprowadzili do bazy danych.
Pobieranie danych z tabeli
Przechowywane dane w bazie danych mogą być pobierane z określonych tabel. Do tego celu
służy zapytanie SELECT. Nie jest konieczne pobranie wszystkich rekordów w pełnym
zestawie pól. Przykładowa składnia zapytania SELECT:
SELECT pole1, pole2, pole3 FROM nazwa_tabeli;
Jeśli interesuje nas pełny zestaw z danej tabeli wstawiamy zamiast wyszczególnionych pól
znak „*”.
SELECT * FROM nazwa_tabeli;
Można też podać warunek, który spowoduje znalezienie interesujących nas rekordów:
SELECT * FROM nazwa_tabeli WHERE warunek;
W praktyce takie zapytania dla naszej tabeli studenci będą miały postać:
SELECT * FROM studenci;
SELECT imie, nazwisko FROM studenci;
SELECT * FROM studenci WHERE imie = ‘Andrzej’;
Po WHERE stosując warunki wyboru można je łączyć ze sobą stosując operatory OR oraz.
AND. W warunkach wyboru można stosować następujące operatory porównań:
=
>
<
>=
<=
<> lub (!=)
like
równy
większy
mniejszy
większy równy
mniejszy równy
różny
porównanie
łańcuchów
Dane z tabeli można pobrać w określonym porządku. Wskazanie kolumn, według których
mają być posortowane dane podaje się po klauzuli ORDER BY oddzielone przecinkami. Jeśli
chcemy uzyskać listę studentów rosnąco (ASC) według nazwiska i malejąco (DESC) według
stypendium wpiszesz następujące polecenie:
SELECT * FROM studenci ORDER BY nazwisko ASC, stypendium DESC;
8
MySQL i PHP w tworzeniu zaawansowanych stron internetowych na lekcjach informatyki
Można też wpływać na ilość pobieranych rekordów stosując klauzulę LIMIT.
SELECT * FROM studenci LIMIT 5;
Odpowiedzią na to zapytanie będzie pięć pierwszych rekordów z tabeli studenci.
Ćwiczenie 10. Napisz kod strony internetowej, która umożliwi osobom znającym login i hasło
podgląd do danych z bazy danych.
Ćwiczenie 11. Napisz kod strony internetowej, która umożliwi osobom znającym login i hasło
podgląd do wybranych danych z bazy danych.
Ćwiczenie 12. Napisz kod strony internetowej, która umożliwi osobom znającym login i hasło
podgląd danych z bazy danych z możliwością sortowania ich wg trzech wybranych pól tabeli.
Ćwiczenie 13. Napisz kod strony internetowej, która umożliwi osobom znającym login i hasło
podgląd danych z bazy danych z możliwością wyświetlania rekordów wg określonego klucza
(np. tylko tych absolwentów, którzy ukończyli szkołę 5 lat temu, 2 lata temu).
Literatura:
MySQL
Autor: Leon Atkinson
Tłumaczenie: Jarosław Dobrzański, Tomasz Żmijewski
ISBN: 83-7361-170-3
Tytuł oryginału: Core MySQL
Format: B5, stron: 608
Bazy danych i MySQL. Od podstaw
Autorzy: Richard Stones, Neil Matthew
Tłumaczenie: Paweł Gonera
ISBN: 83-7197-728-X
Format: B5, stron: 560
PHP i MySQL. Dynamiczne strony WWW. Szybki start
Autor: Larry Ullman
Tłumaczenie: Michał Dadan (rozdz. 1-7), Piotr Pilch (rozdz. 8-13, dod. A - D)
ISBN: 83-7361-157-6
Format: B5, stron: 580
PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty. Wydanie trzecie
Autorzy: Luke Welling, Laura Thomson
Tłumaczenie: Paweł Gonera, Daniel Kaczmarek
ISBN: 83-7361-784-1
Format: B5, stron: 912
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
Autor: Kevin Yank
Tłumaczenie: Sławomir Dzieniszewski, Paweł Janociński
ISBN: 83-7361-967-4
Format: B5, stron: 336
9
Download