Paginación de registros con PHP y MySQL (II) – Error con parámetros

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>&lt;&lt;Primera</a>&nbsp|&nbsp;";
      echo "<a href=".$self."page=$prev>&lt;Anterior</a>&nbsp&nbsp;";
   } else {
      echo "&lt;&lt;Primera&nbsp|&nbsp;";
      echo "&lt;Anterior&nbsp&nbsp;";
   }
   for($i=1;$i<=$this->pages;$i++) {
      if($i == $this->openPage)
         echo $i."&nbsp&nbsp;";
      else
         echo "<a href=".$self."page=".$i.">".$i."</a>&nbsp&nbsp;";
   }
   if($this->openPage < $this->pages) {
      echo "<a href=".$self."page=".$next.">Siguiente&gt;</a>&nbsp|&nbsp;";
      echo "<a href=".$self."page=".$last.">&Uacute;ltima&gt;&gt;</a>&nbsp&nbsp;";
   } else {
      echo "Siguiente&gt;&nbsp|&nbsp;";
      echo "&Uacute;ltima&gt;&gt;&nbsp&nbsp;";
   }
}

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.