Database connection missing!"); } // Safe Data Mapping with Fallbacks $name = $s['name'] ?? $s['student_name'] ?? $r['name'] ?? ''; $father = $s['father_name'] ?? $s['father'] ?? $r['father_name'] ?? ''; $mother = $s['mother_name'] ?? $s['mother'] ?? $r['mother_name'] ?? ''; $dob = $s['dob'] ?? $r['dob'] ?? ''; $enroll_no = $s['enrollment_no'] ?? $s['enroll_no'] ?? ''; $roll_no = $r['roll_no'] ?? $s['roll_no'] ?? ''; // Initial Extraction for Course and Center $course_name = $s['courses'] ?? $s['course_name'] ?? $s['course'] ?? $r['courses'] ?? $r['course_name'] ?? $r['course'] ?? ''; $center_name = $s['center_name'] ?? $s['school_name'] ?? $s['center'] ?? $s['school'] ?? $r['center_name'] ?? $r['center'] ?? ''; // Get Session from database (SAME AS MARKSHEET) $session = $s['session'] ?? $r['session'] ?? ''; // Fallback Database Direct Fetch (if variables are empty) if ((empty($course_name) || empty($center_name) || empty($session)) && !empty($enroll_no)) { $clean_enroll = mysqli_real_escape_string($con, $enroll_no); try { $c_query = $con->query("SELECT * FROM students WHERE enrollment_no = '$clean_enroll' LIMIT 1"); if ($c_query && $c_query->num_rows > 0) { $c_row = $c_query->fetch_assoc(); if (empty($course_name)) { $course_name = $c_row['courses'] ?? $c_row['course_name'] ?? $c_row['course'] ?? $c_row['course_title'] ?? ''; } if (empty($center_name)) { $center_name = $c_row['center_name'] ?? $c_row['center'] ?? $c_row['school_name'] ?? $c_row['school'] ?? $c_row['center_code'] ?? ''; } if (empty($session)) { $session = $c_row['session'] ?? ''; } } // Also check results table for session if (empty($session)) { $r_query = $con->query("SELECT session FROM results WHERE enrollment_no = '$clean_enroll' LIMIT 1"); if ($r_query && $r_query->num_rows > 0) { $r_row = $r_query->fetch_assoc(); if (empty($session)) { $session = $r_row['session'] ?? ''; } } } } catch (Exception $e) { // Query safety } } // Final Smart Fallback Defaults if (empty(trim($course_name))) { $course_name = "SECONDARY SCHOOL CERTIFICATE (SSC)"; } if (empty(trim($center_name))) { $center_name = "GSOS MAIN CENTER"; } $du_end = $s['duration_end'] ?? ''; $isu_date = $r['issue_date'] ?? date('Y-m-d'); $place = $s['place'] ?? $r['place'] ?? 'AHMEDABAD'; // ============ FIXED: Exam Month/Year - Same logic as marksheet ============ if (!empty($session)) { $session_parts = explode(' ', $session); $exam_month = $session_parts[0] ?? ''; $exam_year = $session_parts[1] ?? date('Y'); $exam_month_year = $exam_month . ' ' . $exam_year; } elseif (!empty($du_end)) { $exam_month_year = date('F Y', strtotime($du_end)); } else { $exam_month_year = date('F Y'); } // Formatted DOB $formatted_dob = !empty($dob) ? date('d-m-Y', strtotime($dob)) : ''; // Background Image Path Setup $course_check = strtolower($course_name); $is_12th = (strpos($course_check, '12') !== false || strpos($course_check, 'hsc') !== false || strpos($course_check, 'senior') !== false); $base_path = $_SERVER['DOCUMENT_ROOT'] ?? __DIR__; $base_url = defined('BASE_URL') ? BASE_URL : (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://" . ($_SERVER['HTTP_HOST'] ?? 'localhost'); $bg_relative = $is_12th ? "format/certificate-12th.jpg" : "format/certificate-10th.jpg"; $bg_full_path = __DIR__ . '/' . $bg_relative; if (file_exists($bg_full_path)) { $bg = $bg_relative; } else { $alt_paths = [ __DIR__ . '/../format/' . ($is_12th ? 'certificate-12th.jpg' : 'certificate-10th.jpg'), $base_path . '/format/' . ($is_12th ? 'certificate-12th.jpg' : 'certificate-10th.jpg') ]; $bg = ''; foreach ($alt_paths as $alt_path) { if (file_exists($alt_path)) { $bg = str_replace($base_path, '', $alt_path); break; } } if (empty($bg)) { $bg = $bg_relative; } } $bg_url = $base_url . '/' . ltrim($bg, '/'); // Marks & Grade Calculation $totalObtainMarks = 0; $totalMaxMarks = 0; $grade_text = "A"; if (!empty($enroll_no)) { $clean_enroll_no = mysqli_real_escape_string($con, $enroll_no); try { $totalGet = $con->query("SELECT * FROM results WHERE enrollment_no = '$clean_enroll_no'"); if ($totalGet && $totalGet->num_rows > 0) { while ($row = $totalGet->fetch_assoc()) { if (!empty($row['id'])) { $res_id = mysqli_real_escape_string($con, $row['id']); $marks = $con->query("SELECT * FROM marks_table WHERE result_id = '$res_id'"); if ($marks && $marks->num_rows > 0) { while ($m = $marks->fetch_assoc()) { if (!empty($m['subject_id'])) { $sub_id = mysqli_real_escape_string($con, $m['subject_id']); $sub_q = $con->query("SELECT * FROM subjects WHERE id = '$sub_id'"); if ($sub_q && $sub_q->num_rows > 0) { $sub = $sub_q->fetch_assoc(); $totalMaxMarks += floatval($sub['max_marks'] ?? 0); $totalObtainMarks += floatval($m['marks'] ?? 0); } } } } } } } } catch (Exception $e) { // Silent catch } } if ($totalMaxMarks > 0) { $calc_pct = round(($totalObtainMarks / $totalMaxMarks) * 100, 2); if (function_exists('my_grade')) { $grade_text = my_grade($calc_pct); } else { if ($calc_pct >= 75) $grade_text = "A"; elseif ($calc_pct >= 60) $grade_text = "B"; elseif ($calc_pct >= 50) $grade_text = "C"; elseif ($calc_pct >= 33) $grade_text = "D"; else $grade_text = "FAILED"; } } // Also get grade from results table directly if available if (!empty($enroll_no)) { $clean_enroll_no = mysqli_real_escape_string($con, $enroll_no); $grade_query = $con->query("SELECT grade FROM results WHERE enrollment_no = '$clean_enroll_no' LIMIT 1"); if ($grade_query && $grade_query->num_rows > 0) { $grade_row = $grade_query->fetch_assoc(); if (!empty($grade_row['grade'])) { $grade_text = $grade_row['grade']; } } } $admit_card_url = $base_url . "/get_certificate.php?enrollment_no=" . urlencode($enroll_no); ?>