query($columns_query);
$existing_columns = [];
while($col = $columns_result->fetch_assoc()) {
$existing_columns[] = $col['Field'];
}
// Delete student logic
if (isset($_GET['delete_id'])) {
$id = intval($_GET['delete_id']);
// First get student photo to delete (if column exists)
if (in_array('photo', $existing_columns)) {
$result = $conn->query("SELECT photo FROM students WHERE id = $id");
if ($row = $result->fetch_assoc()) {
if (!empty($row['photo']) && file_exists($row['photo'])) {
unlink($row['photo']);
}
}
}
// Also delete related certificates (if table exists)
$cert_table_check = $conn->query("SHOW TABLES LIKE 'certificates'");
if ($cert_table_check->num_rows > 0) {
$cert_result = $conn->query("SELECT certificate_file FROM certificates WHERE student_id = $id");
while($cert_row = $cert_result->fetch_assoc()) {
if (!empty($cert_row['certificate_file']) && file_exists($cert_row['certificate_file'])) {
unlink($cert_row['certificate_file']);
}
}
$conn->query("DELETE FROM certificates WHERE student_id = $id");
}
$conn->query("DELETE FROM students WHERE id = $id");
header("Location: students-list.php?msg=deleted");
exit();
}
// Search functionality
$search = isset($_GET['search']) ? mysqli_real_escape_string($conn, $_GET['search']) : '';
$class_filter = isset($_GET['class']) ? mysqli_real_escape_string($conn, $_GET['class']) : '';
$session_filter = isset($_GET['session']) ? mysqli_real_escape_string($conn, $_GET['session']) : '';
// Build query with filters - only use existing columns
$query = "SELECT * FROM students WHERE 1=1";
if (!empty($search)) {
$search_conditions = [];
$search_conditions[] = "student_name LIKE '%$search%'";
if (in_array('student_name_pb', $existing_columns)) {
$search_conditions[] = "student_name_pb LIKE '%$search%'";
}
$search_conditions[] = "roll_no LIKE '%$search%'";
if (in_array('reg_no', $existing_columns)) {
$search_conditions[] = "reg_no LIKE '%$search%'";
}
$search_conditions[] = "father_name LIKE '%$search%'";
if (in_array('mobile', $existing_columns)) {
$search_conditions[] = "mobile LIKE '%$search%'";
}
$query .= " AND (" . implode(' OR ', $search_conditions) . ")";
}
if (!empty($class_filter)) {
$query .= " AND class = '$class_filter'";
}
if (!empty($session_filter) && in_array('session', $existing_columns)) {
$query .= " AND session = '$session_filter'";
}
$query .= " ORDER BY id DESC";
$result = $conn->query($query);
if (!$result) {
die("Query Error: " . $conn->error);
}
$has_students = ($result && $result->num_rows > 0);
// Get distinct classes for filter
$classes_query = "SELECT DISTINCT class FROM students ORDER BY class ASC";
$classes_result = $conn->query($classes_query);
// Get distinct sessions for filter (only if column exists)
$sessions_result = false;
if (in_array('session', $existing_columns)) {
$sessions_query = "SELECT DISTINCT session FROM students ORDER BY session DESC";
$sessions_result = $conn->query($sessions_query);
}
// Get total students count
$total_query = "SELECT COUNT(*) as total FROM students";
$total_result = $conn->query($total_query);
$total_students = ($total_result && $total_result->num_rows > 0) ? $total_result->fetch_assoc()['total'] : 0;
// Get filtered count
$filtered_count = $has_students ? $result->num_rows : 0;
$page_title = 'Students List';
$page_subtitle = 'Punjab State Open School - Manage Students';
include 'includes/header.php';
include 'includes/sidebar.php';
?>