= :createdFrom'; $params[':createdFrom'] = $createdFrom; } if ($createdTo !== '') { $where[] = 'created_at <= :createdTo'; $params[':createdTo'] = $createdTo; } $whereSql = $where ? ('WHERE ' . implode(' AND ', $where)) : ''; try { $countStmt = $pdo->prepare("SELECT COUNT(*) FROM PREOrder $whereSql"); $countStmt->execute($params); $totalRecords = (int)$countStmt->fetchColumn(); $totalPages = max(1, (int)ceil($totalRecords / $perPage)); if ($page > $totalPages) { $page = $totalPages; $offset = ($page - 1) * $perPage; } $sql = "SELECT id, email, ip_address, created_at FROM PREOrder $whereSql ORDER BY created_at DESC, id DESC LIMIT :limit OFFSET :offset"; $stmt = $pdo->prepare($sql); foreach ($params as $key => $value) { $stmt->bindValue($key, $value); } $stmt->bindValue(':limit', $perPage, PDO::PARAM_INT); $stmt->bindValue(':offset', $offset, PDO::PARAM_INT); $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); admin_json_response([ 'success' => true, 'data' => $rows, 'pagination' => [ 'currentPage' => $page, 'perPage' => $perPage, 'totalPages' => $totalPages, 'totalRecords' => $totalRecords, 'hasNextPage' => $page < $totalPages, 'hasPreviousPage' => $page > 1, ], 'filters' => [ 'email' => $email, 'createdFrom' => $createdFrom, 'createdTo' => $createdTo, ], ]); } catch (Throwable $e) { admin_json_error('Błąd pobierania zapisów PREOrder', 500); }