Arkusz EE.09 : 2020 - styczeń - zad. 03 (php)

Oznaczenie: EE.09-03-20.01-SG   Limit czasu: 150 minut

Zadanie egzaminacyjne

Wykonaj aplikację internetową portalu prognozy pogody, wykorzystując pakiet XAMPP oraz edytor zaznaczający składnię.

Aby wykonać zadanie, zaloguj się na konto Egzamin bez hasła. Na pulpicie znajdziesz archiwum ZIP o nazwie pogoda.zip zabezpieczone hasłem: !Pogod4!

Archiwum należy rozpakować.

Na pulpicie konta Egzamin utwórz folder. Jako nazwy folderu użyj swojego numeru PESEL. Rozpakowane pliki umieść w tym folderze. Wyniki swojej pracy również zapisz w tym folderze.

Operacje na bazie danych

Do wykonania zadania należy użyć tabel: miasta i pogoda przedstawionych na obrazie 1. Tabela pogoda jest powiązana relacją z tabelą miasta. Pole opady wyrażone jest w [mm/h], pole ciśnienie w [hPa]

Obraz 1. Tabele miasta i pogoda

Uruchom usługi MySQL i Apache za pomocą XAMPP Control Panel. Za pomocą narzędzia phpMyAdmin wykonaj podane operacje na bazie danych:

  • utwórz bazę danych o nazwie prognoza
  • do bazy prognoza zaimportuj tabele z pliku baza2.sql z rozpakowanego archiwum
  • wykonaj zrzut ekranu po imporcie. Zrzut zapisz w folderze z numerem PESEL, w formacie PNG i nazwij import. Nie kadruj zrzutu. Powinien on obejmować cały ekran monitora, z widocznym paskiem zadań. Na zrzucie powinny być widoczne elementy wskazujące na poprawnie wykonany import tabel
  • zapisz i wykonaj podane niżej zapytania SQL działające na bazie prognoza. Zapytania zapisz w pliku kwerendy.txt, w folderze z numerem PESEL. Wykonaj zrzuty ekranu przedstawiające wyniki działania kwerend. Zrzuty zapisz w formacie JPG i nadaj im nazwy kw1, kw2, kw3, kw4. Zrzuty powinny obejmować cały ekran monitora z widocznym paskiem zadań
    • zapytanie 1: wybierające wszystkie pola z tabeli pogoda dla miast o id równym 2, posortowane malejąco według daty prognozy
    • zapytanie 2: wybierające jedynie pola id oraz temperatura_dzien z tabeli pogoda dla tych rekordów, dla których ciśnienie jest poniżej 1000 hPa
    • zapytanie 3: wybierające jedynie pola data_prognozy, opady z tabeli pogoda oraz nazwa z tabeli miasta dla temperatur dziennych powyżej 20 stopni. Zapytanie wykorzystuje relację
    • zapytanie 4: usuwające z tabeli pogoda rekord o id równym 8

Witryna internetowa

Obraz 2. Witryna internetowa

Przygotowanie grafiki:

  • plik logo.png, wypakowany z archiwum, należy przeskalować z zachowaniem proporcji tak, aby jego wysokość wynosiła dokładnie 90 px, obraz ma zachować przezroczystość
  • plik obraz.jpg, wypakowany z archiwum, należy przeskalować z zachowaniem proporcji tak, aby jego wysokość wynosiła dokładnie 250 px

Cechy witryny:

  • składa się ze strony o nazwie meteo.php
  • zastosowany właściwy standard kodowania polskich znaków
  • tytuł strony widoczny na karcie przeglądarki: „Prognoza pogody Poznań”
  • arkusz stylów w pliku o nazwie styl4.css prawidłowo połączony z kodem strony
  • podział strony na bloki: na górze trzy bloki banera: lewy, środkowy, prawy, poniżej dwa bloki: lewy i prawy, poniżej blok główny, na dole blok stopki. Podział zrealizowany za pomocą znaczników sekcji, zgodnie z obrazem 2
  • zawartość lewego bloku banera: akapit (paragraf) o treści „maj, 2019 r.”
  • zawartość środkowego bloku banera: nagłówek drugiego stopnia o treści „Prognoza dla Poznania”
  • zawartość prawego bloku banera: obraz logo.png z tekstem alternatywnym o treści „prognoza”
  • zawartość bloku lewego: odnośnik do pliku kwerendy.txt z treścią: „Kwerendy”
  • zawartość bloku prawego: obraz.jpg z tekstem alternatywnym o treści „Polska, Poznań”
  • zawartość bloku głównego:
    • tabela o sześciu kolumnach
    • wiersz nagłówkowy tabeli zawiera wpisy: „Lp.” „DATA”, „NOC - TEMPERATURA”, „DZIEŃ - TEMPERATURA”, „OPADY [mm/h]”, „CIŚNIENIE [hPa]”
    • wiersze z danymi tabeli są wypełnione za pomocą skryptu
  • zawartość bloku stopki: akapit (paragraf) o treści: „Stronę wykonał: ”, dalej wstawiony numer PESEL zdającego

Styl CSS witryny internetowej

Cechy formatowania CSS, działające na stronie:

  • domyślne dla całej strony: krój czcionki Garamond
  • wspólne dla lewego i prawego bloku banera: kolor tła RGB 95, 158, 160; żółty kolor czcionki, szerokość 20%, wysokość 90 px, wyrównanie tekstu do prawej strony
  • dla środkowego bloku banera: kolor tła RGB 95, 158, 160; żółty kolor czcionki, szerokość 60%, wysokość 90 px, wyrównanie tekstu do środka
  • dla bloku lewego i bloku prawego: kolor tła RGB 175, 238, 238, szerokość 50%, wysokość 250 px
  • dla bloku głównego: kolor tła RGB 95, 158, 160; marginesy wewnętrzne 30 px
  • dla bloku stopki: kolor tła RGB 175, 238, 238; marginesy wewnętrzne 10 px
  • dla znacznika tabeli: obramowanie 2 px, linią kropkowaną o zielonym kolorze, szerokość 100%, obramowanie połączone (za pomocą jednej linii, jak na obrazie 2)
  • dla znacznika komórki danych: obramowanie 2 px, linią kropkowaną o zielonym kolorze
  • dla znacznika komórki nagłówka tabeli: obramowanie 2 px, linią kropkowaną o zielonym kolorze, kolor tła zielony, kolor czcionki żółty

Skrypt połączenia z bazą

W tabeli 1 podano wybór funkcji PHP do obsługi bazy danych. Wymagania dotyczące skryptu:

  • napisany w języku PHP
  • skrypt łączy się z serwerem bazodanowym na localhost, użytkownik root bez hasła, baza danych o nazwie prognoza
  • skrypt wysyła do bazy danych zapytanie 1
  • w pierwszej kolumnie tabeli wyświetlana jest liczba porządkowa rozpoczynająca się w pierwszym wierszu z danymi od wartości 1
  • w pozostałych kolumnach tabeli wyświetlane są dane z bazy
  • każdy zwrócony zapytaniem wiersz jest wyświetlany w osobnym wierszu tabeli w bloku głównym. Dane pobrane z bazy należy umieścić w odpowiednich kolumnach tabeli zgodnie z obrazem 2
  • na końcu działania skrypt zamyka połączenie z serwerem

Tabela 1. Wybór funkcji języka PHP do obsługi bazy MySQLi i MariaDB

Funkcje bilioteki mysqli Zwracana wartość
mysqli_connect(serwer, uzytkownik, haslo, nazwa_bazy) id połączenia lub FALSE, gdy niepowodzenie
mysqli_select_db(id_polaczenia, nazwa_bazy) TRUE / FALSE, w zależności od stanu operacji
mysqli_error(id_polaczenia) Tekst komunikatu błędu
mysqli_close(id_polaczenia) TRUE / FALSE, w zależności od stanu operacji
mysqli_query(id_polaczenia, zapytanie) Wynik zapytania
mysqli_fetch_row(wynik_zapytania) Tablica numeryczna odpowiadająca wierszowi zapytania
mysqli_fetch_array(wynik_zapytania) Tablica zawierająca kolejny wiersz z podanych w wyniku zapytania lub FALSE, jeżeli nie ma więcej wierszy w wyniku zapytania
mysqli_num_rows(wynik_zapytania) Liczba wierszy w podanym zapytaniu
mysqli_num_fields (wynik_zapytania) Liczba kolumn w podanym zapytaniu
UWAGA!
Po zakończeniu pracy utwórz plik tekstowy o nazwie przeglądarka.txt. Zapisz w nim nazwę przeglądarki internetowej, w której weryfikowałeś poprawność działania witryny. Umieść go w folderze z numerem PESEL.
Nagraj płytę z rezultatami pracy. W folderze z numerem PESEL powinny się znajdować pliki: import.png, kw1.jpg, kw2.jpg, kw3.jpg, kw4.jpg, kwerendy.txt, logo.png, meteo.php, obraz.jpg, przeglądarka.txt, styl4.css, ewentualnie inne przygotowane pliki.
Po nagraniu płyty sprawdź poprawność jej odczytu. Opisz płytę swoim numerem PESEL i pozostaw zapakowaną w pudełku na stanowisku wraz z arkuszem egzaminacyjnym.

Czas przeznaczony na wykonanie zadania wynosi 150 minut.

Ocenie będzie podlegać 5 rezultatów:

  • operacje na bazie danych
  • zawartość witryny internetowej
  • działanie witryny internetowej
  • styl CSS witryny internetowej
  • skrypt połączenia z bazą.