Czego się nauczysz?
- Przetwarzania złożonych formularzy w PHP
- Dynamicznego generowania dokumentów HTML
- Pracy z szablonami i stylami CSS do druku
- Tworzenia i zapisywania plików na serwerze
Stworzysz Generator CV - aplikację webową, która na podstawie danych wprowadzonych w formularzu generuje profesjonalnie wyglądające CV w formacie HTML. Użytkownik wypełnia pola (dane osobowe, doświadczenie, umiejętności), a aplikacja tworzy gotowy dokument do wydruku lub zapisania.
Czego się nauczysz?
W prawdziwej pracy...
Generatory dokumentów to popularna kategoria aplikacji webowych - od CV po faktury, umowy i certyfikaty. Umiejętność dynamicznego tworzenia dokumentów HTML/PDF jest ceniona w każdej firmie i otwiera drogę do projektów z zakresu automatyzacji biurowej.
Formularz danych Użytkownik wprowadza dane osobowe (imię, nazwisko, email, telefon), doświadczenie zawodowe i umiejętności w rozbudowanym formularzu.
Generowanie CV Na podstawie wprowadzonych danych aplikacja tworzy sformatowany dokument HTML z odpowiednim układem i stylami.
Podgląd i zapis Wygenerowane CV jest wyświetlane do podglądu, z możliwością wydruku lub zapisania jako plik HTML.
Przykładowa struktura pliku JSON (historia CV):
{ "cvs": [ { "id": 1, "first_name": "Jan", "last_name": "Kowalski", "email": "jan.kowalski@email.pl", "phone": "123456789", "experience": "Programista PHP - Firma XYZ (2023-2026)", "skills": "PHP, HTML, CSS, JavaScript", "template": "modern", "created_at": "2026-02-13 10:30:00" } ]}Wymagane funkcje:
Przykładowy scenariusz:
Ocena: 3.0Anna szuka pracy i potrzebuje CV. Otwiera aplikację, wypełnia formularz swoimi danymi, klika “Generuj CV”. Wyświetla się sformatowane CV, które drukuje używając przycisku “Drukuj”.
Wszystko z wariantu A, plus:
Przykładowy scenariusz:
Ocena: 4.0-5.0Marek generuje CV i klika “Zapisz jako plik”. Aplikacja tworzy plik “cv_marek_kowalski_2026.html” i wyświetla link do pobrania. Marek pobiera plik i wysyła go mailem do pracodawcy.
Wszystko z wariantu B, plus:
Przykładowy scenariusz:
Ocena: 5.0-6.0Kasia tworzy CV i wybiera szablon “Nowoczesny”. Dodaje swoje zdjęcie i widzi podgląd na żywo. Nie jest zadowolona - zmienia na “Minimalistyczny”. Generuje CV i zapisuje. Tydzień później wraca do aplikacji i pobiera swoje CV z historii.
Generowanie CV w HTML:
<?php$html = '<!DOCTYPE html><html lang="pl"><head> <meta charset="UTF-8"> <title>CV - ' . htmlspecialchars($firstName . ' ' . $lastName) . '</title> <style> body { font-family: Arial, sans-serif; max-width: 800px; margin: 0 auto; } h1 { color: #333; border-bottom: 2px solid #007bff; } .section { margin: 20px 0; } @media print { .no-print { display: none; } } </style></head><body> <h1>' . htmlspecialchars($firstName . ' ' . $lastName) . '</h1> <div class="contact"> <p>Email: ' . htmlspecialchars($email) . '</p> <p>Telefon: ' . htmlspecialchars($phone) . '</p> </div> <div class="section"> <h2>Doświadczenie</h2> <p>' . nl2br(htmlspecialchars($experience)) . '</p> </div> <div class="section"> <h2>Umiejętności</h2> <p>' . htmlspecialchars($skills) . '</p> </div> <button class="no-print" onclick="window.print()">Drukuj CV</button></body></html>';?>Zapis CV do pliku:
<?php$filename = 'cv_' . strtolower($lastName) . '_' . date('Y-m-d') . '.html';$filepath = 'generated/' . $filename;
// Upewnij się, że katalog istniejeif (!is_dir('generated')) { mkdir('generated', 0755, true);}
file_put_contents($filepath, $html);echo '<a href="' . $filepath . '" download>Pobierz CV</a>';?>Walidacja email i telefonu:
<?php$errors = [];
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $errors[] = 'Nieprawidłowy format email';}
if (!preg_match('/^[0-9]{9}$/', $phone)) { $errors[] = 'Telefon musi zawierać 9 cyfr';}?>Wykorzystaj lekcje!
Cotygodniowe spotkania podczas lekcji to idealny moment, by:
Pracuj iteracyjnie - lepiej mieć działający wariant A niż niedokończony C!