Arkusz E.14 : 2017 - czerwiec - zad. 02 (php)

Oznaczenie: E.14-02-17.06    Limit czasu: 150 minut

Zadanie egzaminacyjne

Wykonaj aplikację internetową dla poradni zdrowia. Wykorzystaj pakiet XAMPP jako środowisko bazodanowo - aplikacyjne. Stronę internetową zbuduj przy wykorzystaniu edytora zaznaczającego składnię.

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

Archiwum należy rozpakować.

Wyniki swojej pracy zapisz w folderze utworzonym na pulpicie konta Egzamin. Jako nazwy folderu użyj swojego numeru PESEL. Rozpakowany plik umieść w tym folderze.

Operacje na bazie danych

Na Obrazie 1 przedstawiono tabelę Pacjenci, która jest fragmentem bazy danych poradni.

Obraz 1. Tabela Pacjenci

Uruchom usługi MySQL i Apache z XAMPP Control Panel i przejdź do narzędzia phpMyAdmin. Następnie wykonaj operacje na bazie danych:

  • Utwórz nową bazę danych o nazwie poradnia
  • Do bazy poradnia zaimportuj tabele z pliku przychodnia.sql z rozpakowanego archiwum
  • Wykonaj zrzut ekranu po imporcie. Zrzut zapisz w folderze z Twoim numerem PESEL w formacie PNG i nazwij import-poradnia.png. Na zrzucie powinny być widoczne elementy wskazujące na poprawnie wykonany import bazy. Nie skaluj, ani nie przycinaj obrazu
  • Utwórz następujące zapytania SQL do bazy poradnia i sprawdź poprawność ich działania:
    • Zapytanie 1: wybierające jedynie pola id, imie, nazwisko, choroba z tabeli Pacjenci
    • Zapytanie 2: wybierające jedynie pola imie, nazwisko, leki_przepisane, opis z tabeli pacjenci dla id równego 1
    • Zapytanie 3: wybierające jedynie pola imie, nazwisko z tabeli pacjenci dla tych rekordów, dla których wartość pola choroba jest równa ‘J05
  • Utworzone zapytania zapisz w folderze z Twoim numerem PESEL, w pliku kwerendy.txt. Zapytania ponumeruj stosując format zapisu: „zapytanie 1: … treść zapytania …”
  • Wykonaj zrzuty ekranu przedstawiające wyniki działania kwerend. Zrzuty zapisz w formacie JPEG i nadaj im nazwy kw1, kw2, kw3. Zrzuty powinny być czytelne oraz wykonane bez skalowania i kadrowania, a także z widocznym paskiem zadań i godziną ich wykonania.

Witryna internetowa

Obraz 2. Strona przychodnia.php

Obraz 2. Strona pacjent.php

Cechy witryny wspólne dla obu stron:

  • Dwie strony: poradnia.php oraz pacjent.php
  • Zastosowany właściwy standard kodowania polskich znaków
  • Tytuł strony, widoczny na karcie przeglądarki: „Poradnia”
  • Arkusz stylów w pliku o nazwie poradnia.css, prawidłowo połączony z kodem strony
  • Podział strony na bloki: baner, panele lewy i prawy, stopka zrealizowany za pomocą znaczników sekcji
  • Zawartość banera: nagłówek pierwszego stopnia o treści: „PORADNIA SPECJALISTYCZNA”
  • Zawartość panelu lewego:
    • Nagłówek trzeciego stopnia o treści: „LEKARZE SPECJALIŚCI”
    • Tabela 2 kolumny na 4 wiersze, treść w wierszach:
      • Wiersz 1: „Poniedziałek” (komórki scalone)
      • Wiersz 2: „Anna Kowalska”, „otolaryngolog”
      • Wiersz 3: „Wtorek” (komórki scalone)
      • Wiersz 4: „Jan Nowak”, „kardiolog”
    • Nagłówek trzeciego stopnia o treści: „LISTA PACJENTÓW”
    • Wyniki działania skryptu nr 1
    • Odstęp na dwie linie
    • Formularz, który po zatwierdzeniu wyświetla stronę pacjent.php
    • Zawartość formularza: tekst „Podaj id:”, w kolejnej linii pole do wprowadzania danych typu numerycznego oraz przycisk z napisem „Pokaż szczegóły” zatwierdzający formularz
  • Zawartość panelu prawego:
    • Nagłówek drugiego stopnia o treści: „KARTA PACJENTA”
  • Zawartość stopki:
    • Tekst akapitu (paragrafu) o treści: „utworzone przez: ”, dalej Twój numer PESEL
    • Odnośnik o treści: „Kwerendy do pobrania”, wskazujący na plik kwerendy.txt

Dodatkowe cechy strony poradnia.php dla panelu prawego:

  • Pod napisem „KARTA PACJENTA” znajduje się akapit (paragraf) „Nie wybrano pacjenta”

Dodatkowe cechy strony pacjent.php dla panelu prawego:

  • Pod napisem „KARTA PACJENTA” jest wyświetlony efekt działania skryptu nr 2

Styl CSS witryny internetowej

Plik poradnia.css zawiera formatowanie dla:

  • Banera: kolor RGB tła (48, 27, 94), biały kolor czcionki, rozmiar czcionki 120%, wyrównanie tekstu do środka, wysokość 80 px
  • Panelu lewego: kolor RGB tła (127, 118, 158), szerokość 25%, wysokość 500 px, biały kolor czcionki
  • Panelu prawego: kolor RGB tła (220, 220, 220), szerokość 75%, wysokość 500 px, rozmiar czcionki 110%
  • Stopki: kolor RGB tła (127, 118, 158), biały kolor czcionki, wyrównanie tekstu do środka, wysokość 80 px

Niewymienione właściwości obiektów przybierają wartości domyślne.

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
  • Nie jest wymagane sprawdzenie czy operacja na bazie powiodła się
  • Skrypt łączy się z serwerem bazodanowym na localhost, użytkownik root bez hasła, baza danych o nazwie poradnia
  • Na końcu działania skryptu powinno zostać obsłużone zamknięcie połączenia z serwerem
  • Działanie skryptu nr 1:
    • Skrypt wysyła do bazy zapytanie 1 (z pliku kwerendy.txt)
    • Każdy zwrócony rekord jest wyświetlany w osobnej linii
  • Działanie skryptu nr 2:
    • Skrypt wykorzystuje dane wysłane z formularza
    • Wykorzystując zapytanie 2 (z pliku kwerendy.txt), należy je tak przekształcić, aby w klauzuli warunku pole id było równe wartości przesłanej z formularza
    • Skrypt wysyła do bazy zmodyfikowane zapytanie 2
    • Dane zwrócone wypisywane są w kolejnych akapitach (paragrafach), tekst napisany w nawiasach < > oznacza zwrócone zapytaniem pole:
      • Imię i nazwisko: <imie> <nazwisko>
      • Przepisane leki: <leki_przepisane>
      • Opis choroby: <opis>

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 nagraj płytę z rezultatami pracy. W folderze z Twoim numerem PESEL powinny się znajdować pliki: import_poradnia.png, kw1.jpg, kw2.jpg, kw3.jpg, kwerendy.txt, pacjent.php, poradnia.css, poradnia.php, ewentualnie inne przygotowane przez Ciebie pliki.
Po nagraniu płyty sprawdź poprawność nagrania i opisz płytę swoim numerem PESEL.

Czas przeznaczony na wykonanie zadania wynosi 150 minut.

Ocenie będą podlegać 4 rezultaty:

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