Resulta que tras probar la clase para la paginación de registros con PHP y MySQL que os comenté en el primer artículo he descubierto que si la URL tiene algún parámetro la clase no funciona adecuadamente ya que no los tiene en cuenta, por tanto, la solución para este error consiste en arreglar la función displayPaging que es la que muestra los enlaces de las páginas, debería quedar así:
function displayPaging() { $self = $_SERVER['PHP_SELF']; //Creamos esta variable para guardar los parámetros si los hubiera //lo incializo con el ? porque al menos vamos a agregar el parámetro page para las páginas $param = "?"; //Si hay algún parámetro if (count($_GET)) { //Si ya está el parámetro page if (isset($_GET['page'])) //Lo elimino porque más abajo lo añadiré de nuevo con la página correcta //si no saldría doble y no funcionaría unset($_GET['page']); //Recorremos todos los parámetros y los añadimos en $param foreach ($_GET as $p => $v ) { $param .= $p."=".$v."&"; } } //Añadimos los parámetros al fichero que se llama $self .= $param; if($this->openPage<=0) { $next = 2; } else { $next = $this->openPage+1; } $prev = $this->openPage-1; $last = $this->pages; //A partir de aquí lo único ha sido quitar los ? porque ya lo añadimos en $param if($this->openPage > 1) { echo "<a href=".$self."page=1><<Primera</a> | "; echo "<a href=".$self."page=$prev><Anterior</a>  "; } else { echo "<<Primera | "; echo "<Anterior  "; } for($i=1;$i<=$this->pages;$i++) { if($i == $this->openPage) echo $i."  "; else echo "<a href=".$self."page=".$i.">".$i."</a>  "; } if($this->openPage < $this->pages) { echo "<a href=".$self."page=".$next.">Siguiente></a> | "; echo "<a href=".$self."page=".$last.">Última>></a>  "; } else { echo "Siguiente> | "; echo "Última>>  "; } }