Wypożyczalnia płyt 1.0 Projekt zaliczeniowy z przedmiotu Laboratoria Systemy Baz Danych 2 Prowadząca/y: mgr inż. A. Leśniewska Zespół: Wajcht Maciej inf Szydło Kamil inf66315 1.Wstęp Naszym celem było zaimplementowanie wypożyczalni płyt korzystającej z relacyjnego systemu bazy danych opartego na języku SQL ( dokładniej Oraclowego SQL). Zdecydowaliśmy się na użycie języka PHP gdyż ta nowoczesna technologia jest powszechnie uznanym standardem,z którym spotykamy się dosłownie, na co dzień korzystając z szeroko pojętego Internetu ( np. robiąc zakupy internetowe, biorąc udział w aukcjach internetowych, lub po prostu przeglądając zasoby sieci ). Zrezygnowaliśmy z zaproponowanego narzędzia Oracle Developer gdyż technologia PHP stworzona na potrzeby przeglądarek internetowych i serwerów http jest znacznie wygodniejszym narzędziem w użyciu i w pewnym sensie znacznie efektywniejszym ( ze względu na swoją modularność ). Najistotniejszym czynnikiem jest jednak fakt iż potencjalny użytkownik nie musi posiadać nic prócz zwykłej przeglądarki IE , FireFox lub Opera by moc skorzystać z programów napisanych w PHP ,które są uruchamiane po stronie serwera, co za tym idzie taka aplikacja jest niezależna od systemu operacyjnego z jakiego korzystamy ( czego nie można powiedzieć o aplikacjach zbudowanych za pomocą Orcale Developer ). 2.Impelementacja bazy danych. W naszym projekcie skorzystaliśmy z Oraclowego serwera bazy danych działającego na dblab.cs.put.poznan.pl. Zbudowaliśmy następuje relacje : CREATE TABLE WYTWORNIE ( id_wytworni NUMBER(15) NOT NULL, nazwa VARCHAR2(30) NOT NULL, ulica VARCHAR2(30) NOT NULL, kod VARCHAR2(6) NOT NULL, miasto VARCHAR2(20) NOT NULL, tel NUMBER(15) NOT NULL, PRIMARY KEY(id_wytworni) ); CREATE TABLE SLUCHACZE ( id_karty NUMBER(15) NOT NULL, imie VARCHAR2(20) NOT NULL, nazwisko VARCHAR2(20) NOT NULL, adres VARCHAR2(40) NOT NULL, nr_tel NUMBER(15), PRIMARY KEY(id_karty) ); CREATE TABLE PLYTY ( id_wytworni NUMBER(15) NOT NULL, rok_wydania NUMBER(4) NOT NULL, id_plyty NUMBER(15) NOT NULL, zespol VARCHAR2(20) NOT NULL, tytul VARCHAR2(40) NOT NULL, gatunek VARCHAR2(20) NOT NULL, status VARCHAR2(20) CHECK (status in ('WYPOZYCZONY','DOSTEPNY')), PRIMARY KEY(id_plyty), FOREIGN KEY(id_wytworni) CREATE TABLE WYPOZYCZENIA ( id_wyp NUMBER(15) NOT NULL, id_karty NUMBER(15) NOT NULL, id_wewn NUMBER(15) NOT NULL, data_wyp DATE default sysdate, data_zwrotu DATE NULL, okres_wypozyczenia NUMBER(15) NOT NULL, PRIMARY KEY(id_wyp), FOREIGN KEY(id_karty) REFERENCES SLUCHACZE(id_karty) ON DELETE CASCADE, REFERENCES WYTWORNIE(id_wytworni) ON DELETE CASCADE, CONSTRAINT gatunek CHECK (gatunek in ('BLACK METAL', 'DEATH METAL', 'THRASH METAL')) ); FOREIGN KEY(id_wewn) REFERENCES PLYTY(id_plyty) ON DELETE CASCADE, CONSTRAINT daty CHECK (data_wyp < data_zwrotu) ); Schemat relacji: PLYTY id_plyty id_wytworni rok_wydania zespol tytul gatunek status WYPOZYCZENIA id_wyp id_karty id_wewn data_wyp data_zwrotu okres_wypozyczenia SLUCHACZE id_karty imie nazwisko adres nr_tel WYTWORNIE id_wytworni nazwa ulica kod miasto tel 3.Opis niektórych modułów programowych składających się na „Wypożyczalnię”: index.php – plik z modułem logującym , odpowiedzialny za pierwsze połączenie do bazy danych i utworzenie nowej sesji. bazd.php – plik z modułem zawierającym główne okno(formularz) programu. Za pomocą formularza wywołuje następujące funkcje: „Wypożycz płytę” wypozycz.php zawierający formularz z tytułem i nazwa użytkownika, jeśli dane będą poprawne to zostanie uruchomiony plik katalog.php w którym potwierdzamy wypożyczeni płyty(lub moduł zwraca błąd jeśli dane są niepoprawne). Po naciśnięciu przycisku wypożycz moduł wykonuje się ponownie generując odpowiednie instrukcje SQL na bazie danych ) (instruckje w źródłach) „Zwróć płytę” zwroc.php zawierający formularz zwrotu gdzie wpisujemy imię i nazwisko słuchacza,dane przekazywane są do modułu konto.php generującego stan konta słuchacza i opcje zwrotu danej pozycji ( gdy zostanie naciśnięty przycisk „zwrot” moduł wywołuje się sam ,wykonując odpowiednie instrukcje SQL) „Dodaj płytę” dodaj.php formularz dodający nową płytę ( wywołuje się sam aż do naciśnięcia cofnij) „Usuń płytę” usun.php formularz usuwający płytę (j.w.) „Dodaj wytwórnię” dodwytw.php formularz dodający wytwórnię, wytwórnia nie zostanie usunięta jeśli odwołują się do niej jakieś dane „Usuń wytwórnię” usunwytw.php wytwórnia nie zostanie usunięta jeśli odwołują się do niej jakieś inne zasoby (płyty) „Dodaj słuchacza” „Usuń słuchacza” dodsluch.php formularz dodający słuchacza usunsluch.php słuchacz nie zostanie usunięty jeśli odwołują się do niego jakieś inne zasoby (wypożyczenia) „Pokaż płyty” plyty.php przesyłający wybrana wytwornie do modułu raport1.php wyświetlającego listę płyt „Pokaż wytwórnie” raport2.php wyświetlający tabelę wytwórnie „Pokaż słuchaczy” „Pokaż wypożyczenia” raport3.php wyświetlający listę słuchaczy i liczbę dokonanych wypożyczeń wypozyczenia.php formularz gdzie wpisujemy imię słuchacza dla którego chcemy wyświetlić listę wypożyczeń (raport4.php) 4.Przykłady metod dostępu do bazy danych Oracle w technologii PHP a)Logowanie: logowanie odbywa się za pomocą sekwencji instrukcji PHP: $db = "(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = dblab.cs.put.poznan.pl)(PORT = 1521)))(CONNECT_DATA =(SID = lab92)))"; $db = @ocilogon($_POST['login'], $_POST['haslo'], $db); wynik : false/true b)Zapytania: (przykład) $sql = OCIParse($db,'SELECT nazwa,tytul,zespol,rok_wydania,status FROM wytwornie w,plyty p WHERE w.id_wytworni=p.id_wytworni ORDER BY tytul ASC'); OCIExecute($sql); while (ociFetchInto($sql, $rzad,OCI_ASSOC).... wynik: true(sukces) /porazka 5.Technologia Ajax “Asynchronous JavaScript and XML” jest technologią umożliwiającą podpowiadanie użytkownikowi podczas wypełniania formularzy. Moduły AJAX łączą się bezpośrednio z baza danych by pobrać z niej możliwe podpowiedzi. Oto przykład użycia AJAX ( podpowiedź wypożyczanej płyty): <td> <script type="text/javascript"> new Ajax.Autocompleter('plyta', 'contact_name_auto_complete', 'ajax/plyta.php', { paramName: "tytul", minChars: 2}) </script> </td> (plik plyta.php zawiera skrypt lączacy z baza danych i genereujący podpowiedzi) 6.Podsumowanie Celem projektu było stworzenie systemu wypożyczeń o następującej funkcjonalności: 1.Ewidencja płyt. 2. Ewidencja słuchaczy. 3. Obsługa wypożyczeń. 4. Wydruk nie oddanych pozycji danego słuchacza. „Wpożyczalnia płyt” realizuje wszystkie te funkcje w powrzechnie dostępnym środowisku przeglądarek internetowych. 7.Załączniki -kod źródłowy projektu w języku PHP -kod źródłowy operacji SQL użytych to stworzenia relacji i wprowadzenia początkowych danych