SELECT * FROM (
SELECT
IdAnagrafica,
CONCAT(Cognome, ' ', Nome) as generalita,
YEAR(DatadiNascita) as datanascita
FROM anagrafica
WHERE
CONCAT(Cognome, Nome, YEAR(DatadiNascita), IdAnagrafica) < CONCAT(\"".$cognome."\", \"".$nome."\", ".$anno_nascita.", ".$id.")
ORDER BY CONCAT(Cognome, Nome, DatadiNascita) DESC LIMIT 1) as precedente
UNION
SELECT * FROM (
SELECT IdAnagrafica,
CONCAT(Cognome, ' ', Nome) as generalita,
YEAR(DatadiNascita) as datanascita
FROM anagrafica
WHERE CONCAT(Cognome, Nome, YEAR(DatadiNascita), IdAnagrafica) > CONCAT(\"".$cognome."\", \"".$nome."\", ".$anno_nascita.", ".$id.")
ORDER BY CONCAT(Cognome, Nome, DatadiNascita) ASC LIMIT 1) as successivo
ORDER BY generalita ASC, datanascita ASC