Beh, la paginazione dei record è proprio la questione più complessa.

Sì devi utilizzare dei LIMIT dinamici.

Se hai 20 record e vuoi ottenere 5 elementi per pagina otterrai 4 pagine:

SELECT ... LIMIT 1,5
SELECT ... LIMIT 6,5
SELECT ... LIMIT 11,5
SELECT ... LIMIT 16,5

( mi pare... bisognerebbe provare.. io ho affrontato il problema almeno 2 anni fa e mi sono creato un oggetto che mi risolve il problema :-)

Gestire la paginazione dinamica via ajax non è stato semplice. Non tanto la parte di trasmissione dati o gestione delle risposte quanto la parte prettamente JS che deve generare i link alle pagine disponibili e memorizzare da qualche parte la pagina visualizzata...

Se ti guardi il sorgente della libreria js utilizzata nell'esempio che ho postato (
http://www.juniorcms.com/demo/jcmTableList/ ) vedrai come ho fatto io... un metodo abbastanza ignobile: uso una riga nascosta (display:none) in cui ci sono tanti span. Ogni span definisce una classe diversa e contiene un valore.

Utilizzando le funzioni di jQuery è facilissimo ottenere il contenuto di un elemento specifico del dom. In questo modo quando faccio la richiesta via ajax (sempre una funzionalità di jquery) posso andare a prelevare le informazioni sullo stato attuale di paginazione e ordinamento.

Non saprei spiegartelo meglio al momento... in futuro ho anche in progetto di aprire un sito in cui scrivere tutorial su php e ajax... più che altro per fare delle buone reference sulle cose che faccio... tante volte poi nn mi ricordo più come si utilizza un componente!!!!

Ciao!