870 likes | 1.18k Views
Bazy danych i strony WWW. Przykład aplikacji. Internetowy system sprzedaży. Zamówienia składane są poprzez stronę WWW Przedmiotem sprzedaży są rury stalowe i złączki do rur System umożliwia przyjmowanie i edycję zamówień Efektem działania systemu są zestawienia ilości zamówionych produktów.
E N D
Bazy danych i strony WWW Przykład aplikacji
Internetowy system sprzedaży • Zamówienia składane są poprzez stronę WWW • Przedmiotem sprzedaży są rury stalowe i złączki do rur • System umożliwia przyjmowanie i edycję zamówień • Efektem działania systemu są zestawienia ilości zamówionych produktów
Tworzenie tabeli JednostkiMiary Create table sprzedaz.jednostkimiary ( IdJednostki Int(11) NOT NULL AUTO_INCREMENT, JednostkaMiary Char(20), UNIQUE (JednostkaMiary), Primary Key (IdJednostki)) ENGINE = MyISAM ROW_FORMAT = Fixed;
Tworzenie tabeli Klient Create table sprzedaz.Klient ( IdKlienta Int(11) NOT NULL AUTO_INCREMENT, NazwaKlienta Char(50), Adres Char(50), Primary Key (IdKlienta)) ENGINE = MyISAM ROW_FORMAT = Fixed;
Tworzenie tabeli Towary Create table sprzedaz.Towary ( IdTowaru Int(11) NOT NULL AUTO_INCREMENT, NazwaTowaru Char(50), Primary Key (IdTowaru)) ENGINE = MyISAM ROW_FORMAT = Fixed;
Tworzenie tabeli Zamowienie Create table sprzedaz.Zamowienie ( IdKlienta Int NOT NULL, IdZamowienia Int(11) NOT NULL AUTO_INCREMENT, DataZamowienia Date, NrZamowienia Char(20), Primary Key (IdZamowienia)) ENGINE = MyISAM ROW_FORMAT = Fixed;
Tworzenie tabeli Specyfikacja Create table sprzedaz.Specyfikacja ( IdTowaru Int NOT NULL, IdJednostki Int NOT NULL, IdZamowienia Int NOT NULL, Ilosc Float, Primary Key (IdTowaru,IdJednostki,IdZamowienia)) ENGINE = MyISAM ROW_FORMAT = Fixed;
Ustawianie więzów integralności Alter table sprzedaz.specyfikacja add Foreign Key (IdJednostki) references sprzedaz.jednostkimiary (IdJednostki) on delete restrict on update restrict; Alter table sprzedaz.zamowienie add Foreign Key (IdKlienta) references sprzedaz.klient (IdKlienta) on delete restrict on update restrict; Alter table sprzedaz.specyfikacja add Foreign Key (IdTowaru) references sprzedaz.towary (IdTowaru) on delete restrict on update restrict; Alter table sprzedaz.specyfikacja add Foreign Key (IdZamowienia) references sprzedaz.zamowienie (IdZamowienia) on delete restrict on update restrict;
Strona startowa • Do utworzenia strony sterującej systemem wystarczy kod HTML • Menu tworzymy wykorzystując znacznik listy <ul> • Odpowiednie moduły uruchamiane są odnośnikiem do dokumentu <li><a href="NoweZamowienie.php">Nowe zamówienie</a></li>
Dodawanie klienta • Proste dodawanie rekordu do tabeli wymaga użycia strony utworzonej w HTML • Formularz utworzony kodem <FORM METHOD="post" ACTION="dodajklienta.php"> pozwala pobrać dane i przekazać je w bloku POST do dokumentu dodajklienta.php
Dodawanie klienta • Dokument dodajklienta.php jest interpretowany przez parser PHP • Część kodowa dokumentu wykonuje połączenie z bazą danych i realizuje polecenie SQL • Dane przekazywane są ze strony dodajklienta.html jako zmienne PHP (tabela $_PHP[nazwa_pola])
sprawdzamy czy wprowadzono nazwę klienta INSERT INTO klient (NazwaKlienta, Adres) VALUES ('Fabryka wózków dziecięcych' , 'Krzeszowice ul, Krakowska 5')
Dodawanie klienta • W tym samym dokumencie umieszczono kod HTML • Kod HTML wyświetla wprowadzone dane i przekierowuje użytkownika do strony startowej lub strony dodawania klienta
Kontrola błędów • W tabeli JednostkiMiary zdefiniowano pole JednostkaMiary jakoUNIQUE • Próba wprowadzenie jednostki miary, która jest już w tabeli spowoduje błąd • Błąd ten identyfikowany jest funkcją mysql_error
czy wystąpił błąd? jeśli nie wystąpił błąd
Wprowadzanie zamówienia • Plik NoweZamowienie.php składa się z części kodowej oznaczonej znacznikami <? i ?> oraz kodu HTML • Pierwsza część kodu PHP pobiera listę klientów i umieszcza ją w tabeli blok_opcji_ZA za pośrednictwem tabeli wiersz
połączenie z bazą danych na komputerze macierzystym dla użytkownika root bez hasła odpowiednik use sprzedaz
Pobieranie listy klientów 5 Fabryka Mebli 4 Fabryka Rowerów 7 Fabryka wózków dziecięcych 1 Firma 3 Firma Kruk 6 Hurtownia Materiałów Budowlanych 2 Sklep Ogólny Tak wyglądają kolejne realizacje wiersza $wiersz
Przygotowanie formularza • Kod HTML powodujący wyświetlenie formularza do wprowadzania danych o nagłówku zamówienia umieszczany jest w tablicowej zmiennej tekstowej blok • Do formularza włączana jest lista klientów ze zmiennej tekstowej blok_opcji_ZA
od tego momentu wszelkie zmienne definiowane przez name= będą widoczne w DodajSpecyfikacje.php jako zmienne PHP ($POST_...)
Wyświetlenie formularza • Druga część pliku NoweZamówienie.php zawiera kod HTML i wstawkę PHP powodującą wyświetlenie formularza
Dopisywanie specyfikacji • Polecenie submit uruchamia akcję wyzwalającą dokument DodajSpecyfikacje.php • Pierwsza część kodu PHP powoduje zapisanie nowego zamówienia do bazy
INSERT INTO zamowienie (IdKlienta, DataZamowienia, NrZamowienia) VALUES ('7' , '2005-04-02', '2005/876') pobranie identyfikatora dopisanego rekordu
Przygotowanie formularza • Następnie do tabeli blok_opcji_TO pobierana jest lista towarów • i lista jednostek miary (tabela blok_opcji_JM)
Definicja formularza • W zmiennej l zapamiętujemy liczbę pozycji • Formularz zostaje związany z plikiem ZatwierdzSpecyfikacje.php • liczba pozycji oraz indeks wprowadzanego zamówienia zapisywane są do ukrytych zmiennych zbioru POST (Indeks i Lp)
Definicja formularza • W pętli przygotowywane są kolejne wiersze formularza • Na zakończenie wpisywane są instrukcje zamykające formularz
Wyświetlanie formularza • Kod HTML i wstawka PHP powoduję wyświetlenie formularza
Dopisanie specyfikacji • Polecenie submit przekazuje sterowanie do ZatwierdzSpecyfikacje.php • W pętli dopisywane są kolejne rekordy do tablicy specyfikacja
INSERT INTO specyfikacja (IdZamowienia, IdTowaru, Ilosc, IdJednostki) VALUES ('70' , '2', '150','1') INSERT INTO specyfikacja (IdZamowienia, IdTowaru, Ilosc, IdJednostki) VALUES ('70' , '3', '200','1') ....
Zakończenie dopisywania • Kod HTML dołączony do pliku ZatwierdzSpecyfikacje.php potwierdza zapisanie danych i umożliwia przejście do strony głównej lub do kolejnego zamówienia