getMessage()); } // Get filter parameters $search = $_GET['search'] ?? ''; $view = $_GET['view'] ?? 'grid'; $sort = $_GET['sort'] ?? 'newest'; // Build query $query = "SELECT * FROM services WHERE status = 'active'"; // Add search condition if(!empty($search)) { $query .= " AND (service_name LIKE :search OR description LIKE :search)"; } // Sorting switch($sort) { case 'price_low': $query .= " ORDER BY price ASC"; break; case 'price_high': $query .= " ORDER BY price DESC"; break; case 'name_asc': $query .= " ORDER BY service_name ASC"; break; case 'name_desc': $query .= " ORDER BY service_name DESC"; break; case 'oldest': $query .= " ORDER BY id ASC"; break; default: $query .= " ORDER BY id DESC"; } // Prepare and execute $stmt = $db->prepare($query); if(!empty($search)) { $searchTerm = "%$search%"; $stmt->bindParam(':search', $searchTerm); } $stmt->execute(); $services = $stmt->fetchAll(PDO::FETCH_ASSOC); $totalServices = count($services); ?>
...