Wyprawy górskie — INF.03
Jedna strona ćwiczeniowa: treść zadania, instrukcje, pola do przepisania i rozwiązanie
Autor: Tomasz Puchała - materiały szkoleniowe

Treść zadania (skrót)

Stwórz prostą aplikację WWW dla biura organizującego Wyprawy górskie. Aplikacja ma umożliwiać:

  • przechowywanie tras (nazwa, rejon, długość_km, poziom_trudności, data, cena, opis),
  • dodawanie i edycję tras przez formularz (PHP + walidacja),
  • wyświetlanie listy tras z możliwością filtrowania (region / poziom),
  • tworzenie rezerwacji dla wybranej trasy (formularz rezerwacji),
  • zapisywanie rezerwacji w tabeli reservations powiązanej z trasami.
Wymagania techniczne: PHP 7.4+/8.x, MySQL/MariaDB, używać prepared statements, zabezpieczać wyjście przez htmlspecialchars().

Instrukcja krok-po-kroku (dla ucznia)

  1. Utwórz bazę danych i tabele (użyj fragmentu SQL w sekcji "Pola kodu (SQL)".)
  2. Utwórz plik config.php z danymi połączenia (host, user, pass, db) — nie zapomnij ustawić kodowania UTF-8.
  3. Skopiuj i wklej kod PHP do plików: index.php, route_add.php, route_edit.php, route_delete.php, reserve.php, reservations.php. (Pola do przepisywania poniżej.)
  4. Przetestuj lokalnie: dodawaj trasy, edytuj, usuwaj, rezerwuj.
  5. Upewnij się, że w kodzie używasz przygotowanych zapytań i escapujesz wyjścia — sprawdzamy bezpieczeństwo.
Dodatkowo: zaprojektuj prosty test walidujący dane (np. długość > 0, cena >= 0). W zadaniu egzaminacyjnym oceń: poprawność SQL, bezpieczeństwo, walidacja, oraz czy UI jest czytelne.

Pola kodu — przepisz lub wklej swoje rozwiązania

Po każdej sekcji znajdziesz przycisk Kopiuj (kopiuje zawartość pola). W dolnej części strony możesz rozwinąć pełne rozwiązanie referencyjne.

SQL — database.sqlKrok 1
Skopiuj poniższe CREATE TABLE i użyj mysql -u user -p < database.sql lub phpMyAdmin
Zadanie: dopisać 3 przykładowe trasy

PHP — konfiguracjaKrok 2
Uzupełnij swoje poświadczenia bazy w config.php. W produkcji trzymaj plik poza publicznym katalogiem.
Uwaga: w zadaniu sprawdzamy ustawienie charset

PHP — Główna lista tras (index.php)Krok 3
Zadanie: dopisać kod SELECT + filtrowanie

PHP — Dodawanie trasy (route_add.php)Krok 4
Zadanie: zapisać trasę do bazy

PHP — Rezerwacja (reserve.php)Krok 5
Zadanie: zapisać rezerwację