Aplikacja feedbacku i ocen kursów
Aplikacja do zbierania opinii i ocen gwiazdkowych kursów lub zajęć. Użytkownicy wystawiają ocenę (1–5 gwiazdek) i opcjonalny komentarz. System oblicza średnią i pokazuje rozkład ocen.
Aplikacja feedbacku i ocen kursów
Aplikacja do zbierania opinii i ocen gwiazdkowych kursów lub zajęć. Użytkownicy wystawiają ocenę (1–5 gwiazdek) i opcjonalny komentarz. System oblicza średnią i pokazuje rozkład ocen.
{ "courses": [ { "id": 1, "name": "Programowanie w PHP", "description": "Kurs podstawowy PHP dla klas 3TI", "teacher": "mgr Kowalski" } ], "ratings": [ { "id": 1, "course_id": 1, "stars": 5, "comment": "Świetne zajęcia, dużo praktyki!", "hidden": false, "created_at": "2026-02-10 14:30:00" } ]}Wymagane funkcje:
Wszystko z A, plus:
Wszystko z B, plus:
Obliczanie średniej i rozkładu:
function getCourseStats(array $ratings, int $courseId): array { $courseRatings = array_filter($ratings, fn($r) => $r['course_id'] === $courseId && !$r['hidden']); $values = array_column(array_values($courseRatings), 'stars');
if (empty($values)) { return ['avg' => 0, 'count' => 0, 'distribution' => array_fill(1, 5, 0)]; }
$dist = array_fill(1, 5, 0); foreach ($values as $v) $dist[$v]++;
return [ 'avg' => round(array_sum($values) / count($values), 1), 'count' => count($values), 'distribution' => $dist, ];}Ochrona przed duplikatem przez cookie:
function hasAlreadyRated(int $courseId): bool { return isset($_COOKIE["rated_$courseId"]);}
function markAsRated(int $courseId): void { setcookie("rated_$courseId", '1', time() + 86400 * 365, '/');}