prepare($countQuery); $stmt->execute($params); $totalEmployees = $stmt->fetchColumn(); $totalPages = ceil($totalEmployees / $limit); // Fetch Data // Explicitly selecting room_number just to be safe, though e.* covers it. $query = " SELECT e.*, e.room_number, d.name_$lang as department_name, p.name_$lang as position_name FROM employees e LEFT JOIN departments d ON e.department_id = d.id LEFT JOIN positions p ON e.position_id = p.id $where ORDER BY e.id DESC LIMIT $limit OFFSET $offset"; $stmt = $db->prepare($query); $stmt->execute($params); $employees = $stmt->fetchAll(); // Fetch Departments for Dropdown (Needed for Search Bar and Modal) $deptNameCol = ($lang === 'ar') ? 'name_ar' : 'name_en'; $deptQuery = "SELECT id, $deptNameCol as name, active FROM departments ORDER BY $deptNameCol"; try { $deptStmt = $db->query($deptQuery); $all_departments = $deptStmt->fetchAll(); } catch (Exception $e) { $all_departments = []; error_log("Error fetching departments: " . $e->getMessage()); } // Fetch Positions for Dropdown (Needed for Modal) $posNameCol = ($lang === 'ar') ? 'name_ar' : 'name_en'; $posQuery = "SELECT id, $posNameCol as name FROM positions ORDER BY $posNameCol"; try { $posStmt = $db->query($posQuery); $all_positions = $posStmt->fetchAll(); } catch (Exception $e) { $all_positions = []; } // --- AJAX HANDLER --- if (isset($_GET['ajax_search'])) { ob_start(); if (empty($employees)): ?>
| / | |||
|---|---|---|---|
|
|
:
|
|
|