Calcolo di offset e limite per la paginazione
Converta la pagina scelta da un visitatore nei valori che una query al database si aspetta: la pagina 3 con 25 elementi per pagina parte dall'offset 50, e 123 elementi occupano 5 pagine. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Pagina
- 3
- Formato pagina
- 25
- Totale elementi
- 123
- Scostamento
- 50
- Limite
- 25
- Totale pagine
- 5
Converta un numero di pagina basato su uno nei valori esatti richiesti da una query con offset. Indichi la pagina desiderata, il numero massimo di record per pagina e il totale degli elementi disponibili. Il calcolatore restituisce l’offset basato su zero, il limite della query e il numero totale di pagine. Rifiuta inoltre numeri o dimensioni di pagina inferiori a uno, aiutandoLa a evitare query di database non valide e controlli di navigazione incoerenti.
Converta una richiesta di pagina in parametri di query
Inserisca un numero di pagina che parta da uno, una dimensione e il totale degli elementi dell’intera raccolta. L’offset si calcola sottraendo uno dal numero di pagina e moltiplicando il risultato per la dimensione. Il limite coincide con la dimensione stessa.
Per esempio, la terza pagina di una raccolta mostrata in gruppi di venticinque inizia dopo i primi cinquanta elementi; pertanto, l’offset è cinquanta e il limite venticinque. Può passare questi valori direttamente a una comune clausola SQL LIMIT e OFFSET oppure associarli ai parametri equivalenti di un altro servizio. Il risultato è deterministico e non esamina né recupera i record sottostanti.
Esegue soltanto l’aritmetica necessaria per preparare una richiesta paginata, risultando utile in backend, script, test, documentazione e sessioni di diagnosi.
Comprenda le pagine totali e i casi limite
Il numero totale di pagine si ottiene dividendo il totale degli elementi per la dimensione della pagina e arrotondando per eccesso. L’arrotondamento è importante perché una pagina finale riempita solo in parte rimane comunque una pagina. Se centouno elementi vengono visualizzati in gruppi di venticinque, quattro pagine contengono cento elementi e una quinta contiene quello restante.
Quando il totale degli elementi è zero, anche le pagine totali sono zero, perché non esiste alcuna pagina di risultati. La pagina richiesta non viene limitata automaticamente a quel totale. Una richiesta per la pagina dieci può quindi produrre un offset valido anche se la raccolta ha soltanto tre pagine.
È una scelta intenzionale: il calcolatore restituisce l’aritmetica della paginazione e lascia a Lei la politica applicativa.
Convalidi gli input prima di creare la query
Il controllo degli interi sicuri evita inoltre perdite silenziose di precisione in JavaScript quando vengono moltiplicati valori molto grandi. Se l’offset calcolato supera l’intervallo sicuro, la richiesta viene rifiutata invece di restituire un numero impreciso. La capacità non effettua richieste di rete, non conserva dati e non usa valori casuali o dipendenti dal tempo.
Lo stesso input produce sempre lo stesso output.
Casi d'uso
Creare una query per il database
Converta una pagina scelta nell’interfaccia in valori LIMIT e OFFSET per una query SQL.
Mostrare i controlli di paginazione
Calcoli il totale necessario per abilitare, disabilitare o etichettare i controlli di navigazione.
Domande frequenti
Come calcolo l'offset di una certa pagina?
Sottragga uno al numero di pagina e moltiplichi per la dimensione della pagina. La terza pagina con 25 elementi per pagina salta i primi 50 record, quindi il suo offset è 50 e il limite è 25.
Come si ottiene il numero totale di pagine?
Il totale degli elementi viene diviso per la dimensione della pagina e arrotondato per eccesso, perché un'ultima pagina riempita a metà è comunque una pagina. Con 123 elementi a gruppi di 25 si ottengono 5 pagine, e una raccolta vuota dà 0.
Che cosa succede se si chiede una pagina oltre l'ultima?
Si ottiene comunque un offset valido, perché la pagina richiesta non viene ridotta al totale. La pagina 10 di un elenco di tre pagine viene calcolata normalmente, e la sua applicazione decide se mostrare un risultato vuoto o passare all'ultima.
Perché le pagine partono da uno e l'offset da zero?
Le persone contano le pagine da uno, mentre il database conta quanti record saltare, partendo da zero. Per questo la prima pagina ha offset 0, e un numero di pagina o una dimensione inferiori a uno vengono rifiutati.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/dev/pagination-offset-calc \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"page":3,"page_size":25,"total_items":123}'const res = await fetch("https://api.kit.forhosting.com/dev/pagination-offset-calc", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"page": 3,
"page_size": 25,
"total_items": 123
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/pagination-offset-calc",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"page": 3,
"page_size": 25,
"total_items": 123
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/pagination-offset-calc", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"page":3,"page_size":25,"total_items":123}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"page":3,"page_size":25,"total_items":123}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/pagination-offset-calc", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"page": 3,
"page_size": 25,
"total_items": 123
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.pagination_offset_calc",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Converta una richiesta di pagina in parametri di query
Le interfacce presentano di solito la paginazione con numeri di pagina intuitivi, mentre database e API richiedono spesso un offset basato su zero e un limite. Questo calcolatore collega le due convenzioni.
Comprenda le pagine totali e i casi limite
La Sua applicazione può confrontare la pagina richiesta con total_pages e restituire un risultato vuoto, reindirizzare all’ultima pagina o mostrare una risposta di risorsa non trovata. Separare calcolo e politica mantiene l’output prevedibile nei database, nei servizi REST e nelle interfacce.
Convalidi gli input prima di creare la query
page e page_size devono essere interi sicuri maggiori o uguali a uno. Uno zero o un valore negativo violerebbe la convenzione delle pagine basate su uno o produrrebbe un limite privo di significato; entrambe le condizioni generano quindi un errore di input non valido. total_items deve essere un intero sicuro maggiore o uguale a zero, poiché una raccolta non può avere una quantità negativa o frazionaria di record. Le stesse regole possono proteggere il confine di un’API, impedendo che parametri errati raggiungano l’adattatore del database. Ogni richiesta automatizzata tramite API costa $0.002; può verificare gli esempi nel browser durante la progettazione o la risoluzione dei problemi.
Casi di integrazione
Verificare i casi limite di un’API
Generi i valori attesi per raccolte vuote, ultime pagine parziali e pagine oltre i risultati.
Domande tecniche
Il numero di pagina è basato su zero o su uno?
È basato su uno: la pagina 1 ha offset 0 e la pagina 2 inizia dopo un page_size completo.
Come viene calcolato total_pages?
Il calcolatore divide total_items per page_size e arrotonda per eccesso, contando anche una pagina finale parziale.
Che cosa accade quando total_items è zero?
total_pages è 0, mentre offset e limit vengono comunque calcolati usando la pagina e la dimensione richieste.
Posso richiedere una pagina successiva a total_pages?
Sì. Il calcolatore restituisce l’offset matematico e la Sua applicazione decide se mostrare un risultato vuoto o rifiutare la pagina.
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. Il calcolo è disponibile anche nel browser.