connect_error) die("DB Connection failed"); // Active learners (last 7 days) $active = $conn->query(" SELECT COUNT(DISTINCT roll_no) AS cnt FROM practice_attempts WHERE last_attempt_at >= NOW() - INTERVAL 7 DAY ")->fetch_assoc()['cnt'] ?? 0; // Slowing learners (8–10 days) $slowing = $conn->query(" SELECT COUNT(*) AS cnt FROM ( SELECT roll_no, MAX(last_attempt_at) last_practice FROM practice_attempts GROUP BY roll_no HAVING last_practice BETWEEN NOW() - INTERVAL 10 DAY AND NOW() - INTERVAL 8 DAY ) t ")->fetch_assoc()['cnt'] ?? 0; // Stalled learners (10+ days) $stalled = $conn->query(" SELECT COUNT(*) AS cnt FROM ( SELECT roll_no, MAX(last_attempt_at) last_practice FROM practice_attempts GROUP BY roll_no HAVING last_practice < NOW() - INTERVAL 10 DAY ) t ")->fetch_assoc()['cnt'] ?? 0; $conn->close(); ?>
Practiced in last 7 days
Practice gap forming
10+ days no practice