getMessage()); } // Get filter parameters $search = $_GET['search'] ?? ''; $view = $_GET['view'] ?? 'grid'; $sort = $_GET['sort'] ?? 'newest'; $category = $_GET['category'] ?? 'all'; // Build query for projects $query = "SELECT * FROM projects WHERE status = 'active'"; // Add search condition if(!empty($search)) { $query .= " AND (project_name LIKE :search OR description LIKE :search OR client_name LIKE :search OR location LIKE :search)"; } // Add category filter if($category != 'all') { $query .= " AND category = :category"; } // Sorting switch($sort) { case 'oldest': $query .= " ORDER BY id ASC"; break; case 'name_asc': $query .= " ORDER BY project_name ASC"; break; case 'name_desc': $query .= " ORDER BY project_name DESC"; break; default: // newest $query .= " ORDER BY id DESC"; } // Prepare and execute $stmt = $db->prepare($query); if(!empty($search)) { $searchTerm = "%$search%"; $stmt->bindParam(':search', $searchTerm); } if($category != 'all') { $stmt->bindParam(':category', $category); } $stmt->execute(); $projects = $stmt->fetchAll(PDO::FETCH_ASSOC); // Get unique categories from projects try { $categories = $db->query("SELECT DISTINCT category FROM projects WHERE status='active' AND category IS NOT NULL ORDER BY category")->fetchAll(PDO::FETCH_COLUMN); } catch(Exception $e) { $categories = []; } // Default categories if none found if(empty($categories)) { $categories = ['Residential', 'Commercial', 'Industrial', 'Office']; } $totalProjects = count($projects); ?>
Browse through our completed electrical projects and see our work quality
...