connect_error) die("DB Connection failed"); /* ===== PRACTICE BEHAVIOUR ===== */ $practice = $conn->query(" SELECT COUNT(*) AS attempts, MAX(last_attempt_at) AS last_practice, COUNT(DISTINCT DATE(last_attempt_at)) AS active_days FROM practice_attempts WHERE roll_no = '$roll_no' ")->fetch_assoc(); /* ===== SAFE DEFAULTS ===== */ $attempts = (int)($practice['attempts'] ?? 0); $active_days = (int)($practice['active_days'] ?? 0); if ($practice['last_practice']) { $days_since_last = (new DateTime())->diff(new DateTime($practice['last_practice']))->days; } else { $days_since_last = 999; // never practiced } /* ===== LEI CALCULATION ===== */ $effort_score = min(40, $attempts * 2); $consistency_score = min(40, $active_days * 3); $recency_score = max(0, 20 - $days_since_last); $lei = $effort_score + $consistency_score + $recency_score; $lei = min(100, $lei); /* ===== LEI BAND ===== */ if ($lei >= 70) { $lei_status = "Stable Learner"; $lei_color = "green"; } elseif ($lei >= 40) { $lei_status = "Needs Reinforcement"; $lei_color = "yellow"; } else { $lei_status = "Immediate Support"; $lei_color = "red"; } $conn->close(); ?>
= $attempts ?>
= $active_days ?>
= $days_since_last < 999 ? $days_since_last : "Never" ?>