Przejdź do głównej zawartości

Generator kodow rabatowych

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?

  • Generowania losowych ciagow znakow w PHP
  • Walidacji unikalnosci danych
  • Pracy z datami i ich porownywania
  • Zapisu i odczytu danych z plikow JSON

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.

  1. Formularz generowania kodu Użytkownik okresla parametry kodu: długość, typ rabatu (procentowy/kwotowy), wartość rabatu oraz opcjonalnie date waznosci.

  2. Generowanie unikalnego kodu System tworzy losowy kod składający się z liter i cyfr, sprawdzajac czy taki kod już nie istnieje w bazie.

  3. 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:

  • Formularz z polami: długość kodu, wartość rabatu procentowego
  • Generowanie losowego kodu (litery i cyfry)
  • Wyświetlenie wygenerowanego kodu na stronie
  • Zapis kodu do pliku JSON
  • Prosty interfejs CSS (czytelny formularz)

Przykładowy scenariusz:

Uż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.

Ocena: 3.0

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 kodu
do {
$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:

  • Pokazac postepy - nawet małe kroki się licza
  • Wyjaśnić watpliwosci - pytaj, nie zgaduj
  • Skonsultowac rozwiązania - feedback pomoze Ci się rozwijac

Pracuj iteracyjnie - lepiej mieć działający wariant A niz niedokonczony C!