Czego się nauczysz?
- Generowania losowych ciagow znakow w PHP
- Walidacji unikalnosci danych
- Pracy z datami i ich porownywania
- Zapisu i odczytu danych z plikow JSON
This content is not available in your language yet.
Stworzysz Generator kodow rabatowych - aplikacje umozliwiajaca tworzenie unikalnych kodow promocyjnych dla sklepu lub usługi. Użytkownik może wygenerowac kod o okreslonej długości, ustawic jego wartość (procentowa lub kwotowa) oraz date waznosci. Wszystkie wygenerowane kody sa zapisywane do pliku JSON.
Czego się nauczysz?
W prawdziwej pracy...
Systemy kodow rabatowych sa podstawa marketingu w e-commerce. Każdy sklep internetowy, platforma subskrypcyjna czy aplikacja lojalnosciowa wykorzystuje kody promocyjne. Umiejetnosc generowania unikalnych, bezpiecznych kodow i zarzadzania nimi to cenna kompetencja w branzy IT.
Formularz generowania kodu Użytkownik okresla parametry kodu: długość, typ rabatu (procentowy/kwotowy), wartość rabatu oraz opcjonalnie date waznosci.
Generowanie unikalnego kodu System tworzy losowy kod składający się z liter i cyfr, sprawdzajac czy taki kod już nie istnieje w bazie.
Zapis do pliku JSON Każdy wygenerowany kod jest zapisywany wraz z parametrami i data utworzenia do pliku JSON.
Przykładowa struktura pliku JSON:
{ "codes": [ { "id": 1, "code": "RABAT2026XY", "discount_type": "percent", "discount_value": 15, "valid_until": "2026-03-31", "is_used": false, "created_at": "2026-02-17 10:30:00" }, { "id": 2, "code": "PROMO50ZL", "discount_type": "amount", "discount_value": 50, "valid_until": "2026-02-28", "is_used": true, "used_at": "2026-02-20 14:15:00", "created_at": "2026-02-17 11:00:00" } ]}Wymagane funkcje:
Przykładowy scenariusz:
Ocena: 3.0Użytkownik wchodzi na strone i widzi formularz. Wybiera długość kodu (np. 8 znakow) i wartość rabatu (np. 10%). Po kliknieciu “Generuj” widzi wygenerowany kod: “ABC12XY9”. Kod zostaje zapisany do pliku JSON.
Wszystko z wariantu A, plus:
Przykładowy scenariusz:
Ocena: 4.0-5.0Użytkownik generuje kod z data waznosci do końca miesiaca. Pod formularzem widzi tabele że wszystkimi kodami - aktywne sa zielone, przeterminowane szare. Może kliknac przycisk “Kopiuj” obok kodu.
Wszystko z wariantu B, plus:
Przykładowy scenariusz:
Ocena: 5.0-6.0Użytkownik generuje kod kwotowy na 50 zl ważny 7 dni. W panelu filtruje kody po statusie - widzi tylko aktywne. Gdy klient uzyje kodu, użytkownik oznacza go jako wykorzystany. Na koniec eksportuje liste do CSV dla działu marketingu.
Generowanie losowego kodu:
function generateCode($length = 8) { $characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; $code = ''; for ($i = 0; $i < $length; $i++) { $code .= $characters[random_int(0, strlen($characters) - 1)]; } return $code;}Sprawdzenie unikalnosci:
function isCodeUnique($code, $existingCodes) { foreach ($existingCodes as $existing) { if ($existing['code'] === $code) { return false; } } return true;}
// Generuj aż do uzyskania unikalnego kodudo { $newCode = generateCode(8);} while (!isCodeUnique($newCode, $data['codes']));Sprawdzenie daty waznosci:
$validUntil = new DateTime($_POST['valid_until']);$today = new DateTime();
if ($validUntil < $today) { $errors[] = "Data waznosci musi być w przyszłości";}Zapis do JSON:
$data = json_decode(file_get_contents('codes.json'), true) ?? ['codes' => []];$data['codes'][] = [ 'id' => count($data['codes']) + 1, 'code' => $newCode, 'discount_type' => $_POST['discount_type'], 'discount_value' => (float)$_POST['discount_value'], 'valid_until' => $_POST['valid_until'], 'is_used' => false, 'created_at' => date('Y-m-d H:i:s')];file_put_contents('codes.json', json_encode($data, JSON_PRETTY_PRINT));Wykorzystaj lekcje!
Cotygodniowe spotkania podczas lekcji to idealny moment, by:
Pracuj iteracyjnie - lepiej mieć działający wariant A niz niedokonczony C!