diff --git a/my_listings.php b/my_listings.php
index 50fa0cc..b81b1ac 100644
--- a/my_listings.php
+++ b/my_listings.php
@@ -3,6 +3,9 @@ session_start();
require_once 'db/config.php'; // Include the database configuration
+// Pagination constants
+const ITEMS_PER_PAGE = 6;
+
// If user is not logged in or not a vendor, redirect
if (!isset($_SESSION['user_id']) || $_SESSION['user_role'] !== 'vendor') {
header("Location: login.php"); // Redirect to login or a suitable page
@@ -17,24 +20,81 @@ $pdo = db(); // Get the PDO connection
$items = []; // Initialize an empty array to hold items
// Fetch items listed by the current vendor
+ $total_items_query = "SELECT COUNT(*) FROM items WHERE owner_id = ?";
+ $total_items_params = [$user_id];
+
+ if (isset($_GET['search']) && !empty($_GET['search'])) {
+ $searchTerm = '%' . $_GET['search'] . '%';
+ $total_items_query .= " AND (name LIKE ? OR description LIKE ?)";
+ $total_items_params[] = $searchTerm;
+ $total_items_params[] = $searchTerm;
+ }
+
+ if (isset($_GET['status']) && !empty($_GET['status'])) {
+ $statusFilter = $_GET['status'];
+ $total_items_query .= " AND status = ?";
+ $total_items_params[] = $statusFilter;
+ }
+
+ $total_stmt = $pdo->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 = ?";
- $params = [$user_id];
+ $query_params = [$user_id];
if (isset($_GET['search']) && !empty($_GET['search'])) {
$searchTerm = '%' . $_GET['search'] . '%';
$query .= " AND (name LIKE ? OR description LIKE ?)";
- $params[] = $searchTerm;
- $params[] = $searchTerm;
+ $query_params[] = $searchTerm;
+ $query_params[] = $searchTerm;
}
if (isset($_GET['status']) && !empty($_GET['status'])) {
$statusFilter = $_GET['status'];
$query .= " AND status = ?";
- $params[] = $statusFilter;
+ $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($params);
+ $stmt->execute($query_params);
$items = $stmt->fetchAll();
?>
@@ -68,6 +128,15 @@ $items = []; // Initialize an empty array to hold items
+
@@ -96,6 +165,23 @@ $items = []; // Initialize an empty array to hold items
+
+ 1): ?>
+
+
+