\documentclass[12pt,a4paper]{article} \usepackage[polish]{babel} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage{geometry} \geometry{ left=2.5cm, right=2.5cm, top=2.5cm, bottom=3cm } \begin{document} \begin{center} {\Large \textbf{ARKiSuz INF.03 – Wytyczne do zadania}}\\[1em] \end{center} %---------------------------------------------------------------------------------------- % TEMAT %---------------------------------------------------------------------------------------- \section{Temat zadania} Stwórz prostą aplikację internetową \textbf{„Zarządzanie zamówieniami klientów”}, która pozwoli na dodawanie nowych zamówień oraz wyświetlanie listy klientów wraz z ich zamówieniami (z użyciem klauzuli \texttt{JOIN} w bazie danych). %---------------------------------------------------------------------------------------- % OPIS ZADANIA %---------------------------------------------------------------------------------------- \section{Opis zadania} \begin{enumerate} \item \textbf{Struktura bazy danych (MySQL):} \begin{itemize} \item Utwórz co najmniej dwie tabele: \texttt{klienci} i \texttt{zamowienia}. \item Zaprojektuj odpowiednie klucze główne i obce (\texttt{klienci.id} oraz \texttt{zamowienia.id\_klienta}). \item Dodaj przykładowe dane (kilku klientów, kilka zamówień). \end{itemize} \item \textbf{Layout strony (HTML + CSS):} \begin{itemize} \item Utwórz \texttt{header} (z tytułem/nazwą aplikacji), \texttt{main} (główna treść) oraz \texttt{footer}. \item Dodatkowo możesz wykorzystać proste menu nawigacyjne. \item Zastosuj podstawowe reguły CSS, by wyróżnić np. nagłówki, tabele. \end{itemize} \item \textbf{Obsługa żądań (JavaScript – Fetch API):} \begin{itemize} \item \textbf{Dodawanie zamówienia}: Przygotuj formularz z polami: \begin{itemize} \item Wybór klienta (np. \texttt{}), \item Kwota (\texttt{} lub \texttt{}). \end{itemize} Po przesłaniu formularza dane powinny zostać wysłane metodą \textbf{POST} do skryptu \texttt{PHP}. \item \textbf{Wyświetlanie zamówień}: Użyj \textbf{GET} (Fetch API), aby pobrać dane (np. w formacie JSON) z \texttt{PHP}, wykonującego zapytanie \texttt{JOIN} w bazie danych. Wyświetl dane w tabeli HTML (np. kolumny: \textit{Imię, Nazwisko, Data zamówienia, Kwota}). \end{itemize} \item \textbf{Skrypty PHP (obsługa bazy danych):} \begin{enumerate} \item \texttt{get\_zamowienia.php}: Zapytanie \texttt{SELECT} z \texttt{JOIN} (tabele \texttt{klienci} i \texttt{zamowienia}), zwróć dane w formacie JSON. \item \texttt{insert\_zamowienie.php}: Wstaw dane (ID klienta, data, kwota) do tabeli \texttt{zamowienia} w bazie danych i zwróć komunikat o powodzeniu/niepowodzeniu. \end{enumerate} \item \textbf{Integracja i testy:} \begin{itemize} \item W pliku HTML umieść odwołanie do skryptu \texttt{.js} z funkcjami \texttt{fetch} (GET i POST). \item Po wczytaniu strony pobierz i wyświetl aktualne zamówienia (\texttt{get\_zamowienia.php}). \item Po dodaniu zamówienia (\texttt{insert\_zamowienie.php}) należy odświeżyć listę zamówień. \end{itemize} \item \textbf{Rozszerzenia (opcjonalne):} \begin{itemize} \item Walidacja danych w formularzu (po stronie klienta i/lub serwera). \item Komunikaty o błędach lub powodzeniu operacji. \item Możliwość edycji bądź usuwania zamówień (dodatkowe metody \texttt{PUT}, \texttt{DELETE}). \end{itemize} \end{enumerate} %---------------------------------------------------------------------------------------- % KRYTERIA OCENY %---------------------------------------------------------------------------------------- \section{Kryteria oceny} \begin{itemize} \item \textbf{Poprawność funkcjonalna} – formularz, tabela i obsługa danych w bazie. \item \textbf{Wykorzystanie Fetch API} – metody \texttt{GET} i \texttt{POST}, odpowiednia obsługa JSON. \item \textbf{Poprawność skryptów PHP} – pobieranie danych z \texttt{\$\_GET}/\texttt{\$\_POST}, zapytania SQL, zwracane komunikaty. \item \textbf{Zastosowanie JOIN} – poprawne łączenie danych z tabel \texttt{klienci} i \texttt{zamowienia}. \item \textbf{Estetyka i czytelność kodu} – komentarze, przejrzysta struktura plików, nazwy zmiennych. \item \textbf{Layout} – prosty, czytelny układ (nagłówek, tabela, stopka), podział na sekcje. \end{itemize} \vspace{1cm} \noindent \textbf{Powodzenia!} \end{document}