EE.09 Nr 6 Czerwiec 2019

Kolejny ciekawy egzamin z czerwca 2019. Tym razem z naciskiem na php.

Należy uruchomić XAMPP’a, utworzyć nową bazę o nazwie ratownictwo. Następnie zaimportować tabele z pliku baza3.sql. Jak już wszystko mamy zrobione – musimy stworzyć cztery kwerendy na podstawie pytań:

  1. Dodaj rekord do tabeli zgloszenia o wartościach: id ratowników – 1; id dyspozytora – 4; adres – Warszawa, Staszica 34/5; aktualny czas w formacie hh:mm:ss, np. 10:24:00.

Zgłoszenie to jest pilne. Baza powinna sama nadać wartość pola id dla tabeli.

W treści opisującej tabele była wzmianka, że rekord pilne jest typu logicznego i przyjmuje wartości 1 lub 0. 1 jest dla zgłoszenia pilnego.

INSERT INTO zgloszenia (ratownicy_id, dyspozytorzy_id, adres, pilne, czas_zgloszenia) VALUES (1,4,’Warszawa, Staszica 34/5′,  1,  CURRENT_TIME())

Zupełnie pominąłem id. W treści pytania jest napisane i rzeczywiście działa, ża baza powinna sama nadać tę wartość.

     2. Wybierz jedynie pola adres oraz dyspozytorzy_id z tabeli zgloszenia, dla tych rekordów, dla których pole ratownicy_id jest równe 3

SELECT adres, dyspozytorzy_id FROM zgloszenia WHERE ratownicy_id=3

  1. Utwórz użytkownika anna z hasłem Anna4!

CREATE USER anna identified BY ‚Anna4!’

  1. Nadaj użytkownikowi anna prawa wstawiania rekordu, aktualizacji danych w rekordzie, przeglądania danych dla tabeli zgloszenia

GRANT SELECT, INSERT, UPDATE ON zgloszenia TO anna

Po drodze należy przygotować zdjęcie aby miało odpowiednią wysokość.

html

Przygotować stronę pogotowie.html:

  • Zastosowany właściwy standard kodowania polskich znaków
  • Tytuł strony widoczny na karcie przeglądarki: „Pogotowie Ratunkowe”
  • Arkusz stylów w pliku o nazwie styl5.css prawidłowo połączony z kodem strony
  • Podział strony na bloki: na górze trzy bloki banera, poniżej blok główny, na dole trzy bloki stopki.
  • Podział zrealizowany za pomocą znaczników sekcji tak, aby po uruchomieniu w przeglądarce wygląd układu bloków był zgodny z obrazem
  • Zawartość pierwszego bloku banera: obraz.jpg z tekstem alternatywnym o treści: „pogotowie”
  • Zawartość drugiego bloku banera: nagłówek pierwszego stopnia o treści „Pogotowie Ratunkowe”, łamanie linii po słowie „Pogotowie”
  • Zawartość trzeciego bloku banera: akapit (paragraf) o treści „Kontakt: 022 222 11 333”, łamanie linii po słowie „Kontakt:”
  • Zawartość bloku głównego:

 Nagłówek drugiego stopnia o treści: „Dodaj nowe zgłoszenie”

 Formularz wysyłający dane metodą POST do pliku zgloszenie.php zawierający pola

 Pole edycyjne typu numerycznego podpisane powyżej tekstem: „Numer zespołu ratowniczego:”

 Pole edycyjne typu numerycznego podpisane powyżej tekstem: „Numer dyspozytora:”

 Pole edycyjne podpisane powyżej tekstem: „Adres:”. Pole ma rozmiar 100

 Przycisk czyszczący zawartość formularza z etykietą „WYCZYŚĆ”

 Przycisk wysyłający zawartość formularza z etykietą „ZGŁOŚ”

  • Zawartość pierwszego bloku stopki:

                 Nagłówek czwartego stopnia o treści: „Numery alarmowe”

                 Lista punktowa (nieuporządkowana) zawierająca elementy: 999 i 112

                 Zawartość drugiego bloku stopki: odnośnik o treści „Pobierz kwerendy”, jego kliknięcie otwiera lub pobiera plik kwerendy.txt

                 Zawartość trzeciego bloku stopki: akapit (paragraf) o treści: „Autor”, łamanie linii, dalej wstawiony numer PESEL zdającego

Na co należy zwrócić uwagę? Na formularz. Na akcję przekierowania do właściwej strony oraz na sposób przekazania tu jest to POST.

Nie wygląda to jeszcze dobrze ale ma zasadniczą zaletę – ma wszystko co było w treści.

css

Przejdźmy do stylu:

  • Domyślne dla całej strony: krój czcionki Georgia
  • Wspólne dla wszystkich bloków banera i stopki: kolor tła Sienna, biały kolor czcionki, wysokość 150 px
  • Dodatkowo dla pierwszego bloku banera i pierwszego bloku stopki: szerokość 40%
  • Dodatkowo dla drugiego bloku banera i drugiego bloku stopki: szerokość 50%, rozmiar czcionki 150%
  • Dodatkowo dla trzeciego bloku banera i trzeciego bloku stopki: szerokość 10%, wyrównanie tekstu do środka
  • Dla bloku głównego: kolor tła Tan, marginesy wewnętrzne 100 px
  • Dla znacznika odnośnika: obramowanie linią kreskowaną o szerokości 1 px i kolorze Sienna, kolor tła Tan, kolor czcionki Sienna, marginesy wewnętrzne 40 px, wysokość linii 150 px
  • Dla znacznika elementu listy: punktor w kształcie okręgu

Nic więcej, nic mniej. Jedziemy:

I proszę – rezultat:

php

Została jeszcze wisienka na torcie w postaci skryptu połączenia z bazą. Zgodnie z treścią:

  • Napisany w języku PHP, w pliku zgloszenie.php
  • Skrypt działa na danych przesłanych z formularza
  • Skrypt łączy się z serwerem bazodanowym na localhost, użytkownik root bez hasła, baza danych nazwie ratownictwo
  • Skrypt wysyła do bazy danych zapytanie wstawiające rekord do tabeli zgloszenia z danymi pobranymi z formularza, które w polu pilne powinno zawierać wartość 0, a w polu czas_zgloszenia aktualny czas zwrócony odpowiednią funkcją języka, klucz główny powinien być automatycznie nadany przez bazę (zmodyfikowane zapytanie 1, opisane w punkcie „Operacje na bazie danych”)
  • Na końcu działania skrypt zamyka połączenie z serwerem.

Najpierw zastanówmy się jak powinno wyglądać zapytanie?

INSERT INTO zgloszenia (ratownicy_id, dyspozytorzy_id, adres, pilne, czas_zgloszenia) VALUES (‚$zformularza1′,’$zformularza2′,’$zformularza3’, 0, CURRENT_TIME())

Utworzony plik php (do którego odwołujemy się w formularzu – action). Tworzymy nasze zmienne (ze znakami $) i przejmujemy dane z formularza za pomocą POST.

Łączymy się z bazą danych ratownictwo. Notujemy nasze zapytanie a następnie wysyłamy je do konkretnego miejsca tzn. do bazy i do tabeli.

Nie zapomnij zamknąć połączenia z serwerem.