Beh, in una query SQL c'è il comando finale chiamato LIMIT, che indica tra tutte le rige trovate, massimo quante tornarle, oppure di ritornarne solo a partire dalla tal numero.

Ora, immagino tu stia creando una specie di form per la ricerca, che poi visualizza in una tabella i risultati.
Io, semplicemente, quando passi i criteri di ricerca, li salverei nella sessione, così anche se, per qualche ragione, l'utente ricarica la pagina, avrà la sua query già impostata. A questo punto aggiungi una select con i valori:
Codice PHP:
<select name="returnedRows" onchange="submitMyQuery(this)">
   <
option value="10">10</option>
   <
option value="20">20</option>
   <
option value="50">50</option>
   <
option value="100">100</option>
   <
option value="">Tutti</option>
</
select
nella pagina, sotto la tabella (oppure sopra, come preferisci).

submitMyQuery(sel) semplicemente chiama un window.location.href sullo script PHP che setta le variabili per la query, dove salverai nella sessione:

$_SESSION['query_keys']['limit'] = valore passato

Poi nella pagina della tabella quando esegui la query aggiungi:
Codice PHP:
$query//Metti che qui ci sia già la query completa di WHERE

if($_SESSION['query_keys']['limit'])
{
   
$query .= " LIMIT 0,".$_SESSION['query_keys']['limit'];

A questo punto, la seconda cosa da implementare è il range di righe da visualizzare (per esempio tu hai 100 record che vuoi visualizzare in gruppi da 20), usando la prima chiave di limit determini il gruppo:

Quando generi la pagina fai anche un:
Codice PHP:
$query "SELECT COUNT(id) FROM Tua_tabella"
con tutti filtri WHERE che l'utente ha chiesto, per avere il numero totale di righe.
A questo punto, dividi il tot per il range che l'utente ha scelto per avere il numero di pagine di tabelle, e stampi un gruppo di link in fondo (o sopra) la pagina. (come quello in fondo a questo forum)
ognuno di questi link richiama la pagina, con tutte le sue query nell'url, aggiungendo "&pag=Numero_del_link".

a questo punto la query di sopra diverrà:
Codice PHP:

$pag 
$_GET['pag'] ? $_GET['pag']  : 0;

if(
$_SESSION['query_keys']['limit'])
{
   
$query .= " LIMIT $pag,".$_SESSION['query_keys']['limit'];

spero di esserti stato utile