Arkusz E.14 : 2016 - czerwiec - zad. 01 (php)

Oznaczenie: E.14-01-16.05   Limit czasu: 150 minut

Zadanie egzaminacyjne

Wykonaj projekt polegający na opracowaniu zapytań do bazy i stworzeniu witryny internetowej wykorzystującej te zapytania. Wykorzystaj do tego celu pakiet XAMPP z bazą MySQL i narzędziem phpMyAdmin. Stronę internetową zbuduj przy wykorzystaniu edytora zaznaczającego składnię lub edytora WYSIWYG.

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

Archiwum nalezy rozpakować.

Wyniki swojej pracy zapisz w folderze stworzonym na pulpicie konta Egzamin. Jako nazwy folderu użyj swojego numeru PESEL.

Baza danych szkola jest zgodna ze strukturą przedstawioną na obrazie 1. Tabela ocena ma dwa klucze obce: przedmiot_id oraz uczen_id odpowiadające relacjom między tabelami.

Obraz 1. Struktura bazy danych

Dla uproszczenia operacji, pomiń tabelę przedmiot i przyjmij, że pole przedmiot_id zawiera identyfikatory przedmiotów zgodne z Tabelą 1.

Tabela 1. Przedmoty i ich identyfikatory

przedmiot identyfikator
język polski 1
matematyka 2
język angielski 3
biologia 4
chemia 5

Wykonaj następujące operacje na bazie danych:

  • wybierz program XAMPP Control Panel i uruchom usługi Apache oraz MySQL.  Wybierz w przeglądarce adres //localhost/, a następnie narzędzie phpMyAdmin
  • utwórz nową bazę danych o nazwie szkola
  • zaimportuj bazę szkola.sql z wcześniej rozpakowanego archiwum
  • wykonaj zrzut ekranu po imporcie. Zrzut zapisz w formacie PNG i nazwij import.png.  Na zrzucie powinny być widoczne elementy wskazujące na poprawnie wykonany import (okno programu phpMyAdmin, widoczna baza danych, np. tabele, pola)
  • stwórz następujące zapytania SQL do bazy szkola i sprawdź poprawność ich działania:
    • zapytanie 1: wybierające wszystkie imiona i nazwiska z tabeli uczen
    • zapytanie 2: wybierające imię i nazwisko ucznia o id = 2
    • zapytanie 3: wybierające oceny z przedmiotu język polski dla ucznia o id = 2
    • zapytanie 4: liczące średnią ocen z przedmiotu język polski dla ucznia o id = 2
  • zapytania zapisz w pliku kwerendy.txt. Ponumeruj je, stosując format zapisu: "zapytanie 1: (treść zapytania)"

Witryna internetowa

Obraz 2. Witryna internetowa

Cechy witryny:

  • nazwa pliku: polski.php
  • zastosowany właściwy standard kodowania polskich znaków
  • tytuł strony, widoczny na karcie przeglądarki: "Szkoła Ponadgimnazjalna"
  • arkusz stylów w pliku o nazwie styl.css, prawidłowo dołączony do pliku z kodem strony
  • podział strony na bloki: baner, panele lewy i prawy, stopka zrealizowany za pomocną znaczników sekcji
  • zawartość banera: nagłówek pierwszego stopnia o treści: "Oceny uczniów: język polski"
  • zawartość panelu lewego: nagłowek drugiego stopnia o treści: „Lista uczniów: ”,  poniżej lista numerowana wypełniana za pomocą skryptu
  • zawartość panelu prawego: nagłówek drugiego stopnia o treści: „Uczeń: ”, dalej skrypt; paragraf (akapit) o treści: „Średnia ocen z języka polskiego: ”, dalej skrypt
  • zawartość stopki: nagłówek trzeciego stopnia o treści: "Zespół Szkół Ponadgimnazjalnych", poniżej paragraf o treści: "Stronę opracował: ", dalej wpisany numer PESEL zdającego

Styl CSS witryny internetowej

Cechy stylu css:

  • definicja w pliku styl.css, prawidłowo podpięty pod plik z kodem strony
  • formatowanie banera: kolor tła: #3A7AD9, wyrównanie tekstu: do środka, wysokość: 50 px
  • formatowanie panelu lewego: kolor tła: #5D93E2, wysokość: 400 px, szerokość: 30%
  • formatowanie panelu prawego: kolor tła: #88B0EC, wysokość: 400 px, szerokość 70%
  • formatowanie stopki: kolor tła: #3A7AD9, wyrówanie tekstu: do prawej strony

Skrypt połączenia z bazą

W tabeli 2 podano wybór funkcji php do obsługi bazy MySQL

Wymagania dotyczące skryptu:

  • jest napisany w języku PHP
  • nie jest wymagane sprawdzenie, czy operacja powiodła się, i wyświetlenie stosownego komunikatu
  • skrypt powinien połączyć się z serwerem MySQL, parametry połączenia: localhost, użytkownik root, bez hasła
  • skrypt powinien wybrać bazę danych o nazwie szkola
  • na końcu działania skryptu powinno zostać obsłużone zamknięcie połączenia z serwerem
  • działanie skryptu w lewym panelu:
    • skrypt wysyła do bazy zapytanie 1 (z pliku kwerendy.txt)
    • następnie wyświetla wszystkie zwrócone w wyniku zapytania rekordy w liście numerowanej. Należy założyć, że baza będzie się rozrastać, więc skrypt powinien wyświetlać taką liczbę wierszy jaką zwróci zapytanie (nie należy na sztywno wypisywać dwóch wierszy, jak w przykładzie)
  • działanie skryptu w prawym panelu:
    • skrypt wysyła do bazy zapytanie 2 (z pliku kwerendy.txt)
    • w kodzie strony, po słowie "Uczeń:" wypisuje imię i nazwisko zwrócone zapytaniem. Imię i nazwisko powinno zawierać się w nagłówku drugiego stopnia
    • skrypt wysyła do bazy zapytanie 4  (z pliku kwerendy.txt)
    • w kodzie strony po tekście "Średnia ocen z języka polskiego:" wypisuje średnią ocen zwróconą zapytaniem

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

Funkcje biblioteki mysql Funkcje bilioteki mysqli Zwracana wartość
mysql_connect(serwer, użytkownik, hasło) mysqli_connect(serwer, uzytkownik, haslo, nazwa_bazy) id połączenia lub FALSE, gdy niepowodzenie
mysql_select_db ('nazwa_bazy' [,id_polaczenia]) mysqli_select_db(id_polaczenia, nazwa_bazy) TRUE / FALSE, w zależności od stanu operacji
mysql_error([id_polaczenia]) mysqli_error(id_polaczenia) Tekst komunikatu błędu
mysql_close([id_polaczenia]) mysqli_close(id_polaczenia) TRUE / FALSE, w zależności od stanu operacji
mysql_query(zapytanie [,id_polaczenia]) mysqli_query(id_polaczenia, zapytanie) Wynik zapytania
mysql_fetch_row (wynik_zapytania) mysqli_fetch_row(wynik_zapytania) Tablica numeryczna odpowiadająca wierszowi zapytania
mysql_fetch_array (wynik_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
mysql_num_rows (wynik_zapytania) mysqli_num_rows(wynik_zapytania) Liczba wierszy w podanym zapytaniu
mysql_num_fields (wynik_zapytania) mysqli_num_fields (wynik_zapytania) Liczba kolumn w podanym zapytaniu
UWAGA!
Po zakończeniu pracy zgłoś przewodniczącemu ZN gotowość do nagrania płyty z  rezultatami pracy. W folderze z Twoim numerem PESEL powinny się znajdować pliki:  import.png, kwerendy.txt, polski.php, styl.css, ewentualnie inne przygotowane przez Ciebie pliki.
Po nagraniu płyty sprawdź jej poprawność.

Czas przeznaczony na wykonanie zadania wynosi 150 minut.

Ocenie podlegać będą 4 rezultaty:

  • operacje na bazie danych
  • witryna internetowa
  • styl CSS witryny internetowej
  • skrypt połączenia z bazą.