que tal obter os valores do próximo id e do id anterior em uma consulta à base? Tipo: select if(max(id),max(id),0) from DADOS where (id < id_atual) union select if(min(id),min(id),0) from DADOS where (id > id_atual) O resultado dessa consulta vai te informar, na primeira linha, o id do registro anterior, e na segunda linha, o id do próximo registro. Em ambos os casos, se o valor retornado for zero, é que você já está em um dos extremos da tabela. Vlw?