Ya tengo la solución... es realmente obvia, pero lo mismo que me ha pasado a mi, comprendo que te pueda pasar a ti o a cualquiera ^^, resulta que estás usando el valor de la id para compararlo, no el valor de la página actual y el de la página que pasa el get ^^.
Debes generar una variable que muestre el valor de la página pasado por get:
Código PHP:
<?php
$p=$_GET["p"]; //por ejemplo
?>
Después si que tienes lo necesario para operar.
Código PHP:
<?php
if ($p==$i) {
echo "<a class='selected' href=?id=".$id."&p=".$i."><!-- --></a>";
} else {
echo "<a href=?id=".$id."&p=".$i."><!-- --></a>";
}
}
?>
Eso si el resto lo estás haciendo bien, tiene que funcionarte si o si, lo acabo de comprobar.
Un saludo