Hola,
Otras soluciones:
- añadir a tu tabla un campo 'posicion' que modificas cuando elimines un registro
UPDATE tabla SET posicion=posicion-1 WHERE posicion>$posicion_registro_eliminado
o
- no calcules el ID a leer con $dato-1 (anterior) o $dato+1 (siguiente), lee el primer registro menor (mayor) de $dato ordenados de mayor (menor) a menor (mayor) (entre parentesis es la logica para siguiente)
SELECT * FROM tabla WHERE ID<$dato ORDER BY ID DESC (para anterior)
SELECT * FROM tabla WHERE ID>$dato ORDER BY ID ASC (para siguiente)
Puede añadir un LIMIT, ya que solo vas a leer el primero. Y con estas consultas tambien puedes saber si hay otros anteriores o posteriores a este, ya que si es el ultimo solo devuelve un registro (si usas LIMIT, puedes poner LIMIT 2 para poder seguir comprobando esto).
Saludos.
PD: Esto es lo bueno de la programacion: preguna a 10 programadores y obtendras 15 respuestas diferentes totalmente validas