prepare("DELETE FROM shipments WHERE id = ?")->execute([$shipmentId]); $flash = 'Shipment deleted successfully.'; } } // Search, Filter, Sort and Pagination parameters $q = trim($_GET['q'] ?? ''); $status = trim($_GET['status'] ?? ''); $sort = trim($_GET['sort'] ?? 'newest'); $page = max(1, (int)($_GET['page'] ?? 1)); $limit = 10; $offset = ($page - 1) * $limit; $whereClause = "1=1"; $params = []; if ($q !== '') { $whereClause .= " AND (shipper_name LIKE ? OR shipper_company LIKE ? OR origin_city LIKE ? OR destination_city LIKE ? OR cargo_description LIKE ?)"; $likeQ = "%$q%"; $params = array_merge($params, array_fill(0, 5, $likeQ)); } if ($status !== '' && in_array($status, ['posted', 'offered', 'confirmed', 'in_transit', 'delivered'])) { $whereClause .= " AND status = ?"; $params[] = $status; } // Sorting logic $orderBy = match ($sort) { 'oldest' => 'created_at ASC', 'pickup_asc' => 'pickup_date ASC', 'pickup_desc' => 'pickup_date DESC', default => 'created_at DESC', // newest }; // Total count $countSql = "SELECT COUNT(*) FROM shipments WHERE $whereClause"; $stmt = db()->prepare($countSql); $stmt->execute($params); $total = (int)$stmt->fetchColumn(); $totalPages = (int)ceil($total / $limit); // Fetch shipments $sql = " SELECT * FROM shipments WHERE $whereClause ORDER BY $orderBy LIMIT $limit OFFSET $offset "; $stmt = db()->prepare($sql); $stmt->execute($params); $shipments = $stmt->fetchAll(); render_header('Manage Shipments', 'admin', true); ?>

Shipments

Manage all shipments across the platform.

No shipments found matching your criteria.

No shipments found on the platform yet.

ID Shipper Route Dates Status Action
From:
To:
Pick:
Drop:
1): ?>
Showing of shipments