Originariamente inviato da Eyescream
select id from tab where id > $id_corrente order by id limit 0,1
per pulsante avanti
select id from tab where id < $id_corrente order by id limit 0,1
per pulsante indietro
Mi era parso di capire che gli ID non sono ordinati, possono essere sia minori che maggiori, sia prima che dopo.

Penso che un modo sia quello di fare due query identiche, stesso order by stesso posizionamento ordinale degli ID, la prima query solo per memorizzare la sequenza degli ID in un array con indice numerico. poi con la seconda query associare al record estratto l'id previus e l'id next prelevato dall'array degli id. In questo modo ogni link trasporta sia il corrente id che l'id previus ed l'id next. Basta utilizzare due contatori che puntino all'indice numerico dell'array con gli ID.

Ripeto "una" delle soluzioni possibili.