prepare($total_items_query); $total_stmt->execute($total_items_params); $total_items = $total_stmt->fetchColumn(); $total_pages = ceil($total_items / $items_per_page); $current_page = isset($_GET['page']) ? (int)$_GET['page'] : 1; $current_page = max(1, min($current_page, $total_pages == 0 ? 1 : $total_pages)); // Ensure current page is within valid range $offset = ($current_page - 1) * ITEMS_PER_PAGE; // Fetch items listed by the current vendor $query = "SELECT * FROM items WHERE owner_id = ?"; $query_params = [$user_id]; if (isset($_GET['search']) && !empty($_GET['search'])) { $searchTerm = '%' . $_GET['search'] . '%'; $query .= " AND (name LIKE ? OR description LIKE ?)"; $query_params[] = $searchTerm; $query_params[] = $searchTerm; } if (isset($_GET['status']) && !empty($_GET['status'])) { $statusFilter = $_GET['status']; $query .= " AND status = ?"; $query_params[] = $statusFilter; } $orderBy = " ORDER BY creation_date DESC"; // Default sort if (isset($_GET['sort']) && !empty($_GET['sort'])) { switch ($_GET['sort']) { case 'name_asc': $orderBy = " ORDER BY name ASC"; break; case 'name_desc': $orderBy = " ORDER BY name DESC"; break; case 'price_asc': $orderBy = " ORDER BY price ASC"; break; case 'price_desc': $orderBy = " ORDER BY price DESC"; break; case 'date_asc': $orderBy = " ORDER BY creation_date ASC"; break; case 'date_desc': $orderBy = " ORDER BY creation_date DESC"; break; } } $query .= $orderBy; $query .= " LIMIT ? OFFSET ?"; $query_params[] = $items_per_page; $query_params[] = $offset; $stmt = $pdo->prepare($query); $stmt->execute($query_params); $items = $stmt->fetchAll(); ?>