Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: soru13 en 9 Mayo 2011, 21:52 pm



Título: problema if (!empty()) con paginador
Publicado por: soru13 en 9 Mayo 2011, 21:52 pm
hola,hice el siguiente código para un paginador de resultados que tengo en mi web,lo que yo he hecho es ponerle los típicos botones de siguiente y anterior:

Código
  1. <?php
  2.         $totalPag = ceil($total/$limit);
  3.         $links = array();
  4.         $pagina = $HTTP_GET_VARS["pag"];
  5. $sig = $pagina + 1;
  6. $ant = $pagina - 1;
  7. $siguiente = "-&nbsp;<a href='index2.php?pag=$sig'>Siguiente >></a>";
  8. $anterior = "&nbsp;<a href='index2.php?pag=$ant'><< Anterior</a>&nbsp;-";
  9.         if ($pagina > 1) {
  10. echo $anterior;
  11. }else {
  12. }
  13. for( $i=1; $i<=$totalPag ; $i++)
  14.         {
  15.            $links[] = "<a href=\"index.php?pag=$i\">[$i]</a>";  
  16.         }
  17.         echo implode(" - ", $links);
  18. if ($pagina >= $totalPag) {
  19. } else {
  20. echo $siguiente;
  21. }
  22.      ?>

me funciona bien el código,el único problema es que cuando la página tiene ésta dirección:

http://www.miweb.com/index.php

no me obtiene el
Código
  1. $pagina = $HTTP_GET_VARS["pag"];
y entonces el botón de siguiente por defecto me lleva a

http://www.miweb.com/index.php?pag=1

pero el caso es que index.php?pag=1 muestra los mismos resultados que index.php, lo que necesito es que si no encuentra index.php?pag=X en el botón de siguiente lleve directamente a index.php?pag=2, para esto hice lo siguiente:

Código
  1. if (!empty($pagina)) {
  2. echo "-&nbsp;<a href='index2.php?pag=2'>Siguiente >></a>";
  3. } else {
  4. echo $siguiente;
  5.    }
  6. }

pero me devuelve siempre el $siguiente a pesar que la url es index.php o index.php?pag=

¿Alguien me puede ayudar? Gracias


Título: Re: problema if (!empty()) con paginador
Publicado por: ~ Yoya ~ en 9 Mayo 2011, 22:16 pm
El problema esta en el if(!empty($pagina)), la condición se cumple si la variable $pagina contiene algún valor. Resumido:

si la pagina contiene index.php?pag=X, se cumple la condición y se ejecuta el echo. Si contiene index.php, no se cumple la condición y pasa al else para luego ejecutar $siguiente.

Con esto bastaría:

Código
  1. <?php
  2.  
  3. if(empty($pagina)){
  4.  
  5. echo "-&nbsp;<a href='index2.php?pag=2'>Siguiente >></a>";
  6. }else{
  7.  
  8. echo $siguiente;
  9.  
  10.    }
  11.  
  12. ?>


Título: Re: problema if (!empty()) con paginador
Publicado por: soru13 en 9 Mayo 2011, 22:19 pm
¿Y entonces cómo hago para que si está en index.php el botón de siguiente vaya directamente a index.php?pag=2?

un saludo!


Título: Re: problema if (!empty()) con paginador
Publicado por: ~ Yoya ~ en 9 Mayo 2011, 22:28 pm
Trata de ejecutarlo primero.

Código
  1. <?php
  2.  
  3. /*La variable $pagina contiene el valor del parametro $_GET['var']
  4. Si no se le pasa el parametro 'var', la variable $pagina estaria
  5. vacia (index.php) y el boton siguiente iria a index.php?pag=2
  6. */
  7.  
  8.  
  9. if(empty($pagina)){
  10. echo "-&nbsp;<a href='index.php?pag=2'>Siguiente >></a>";
  11. }else{
  12. echo $siguiente;
  13.    }
  14.  
  15. ?>


Título: Re: problema if (!empty()) con paginador
Publicado por: soru13 en 9 Mayo 2011, 22:37 pm
Ya lo conseguí, gracias YOYA  ;-)


Título: Re: problema if (!empty()) con paginador
Publicado por: Nakp en 12 Mayo 2011, 04:15 am
solo para agregar... deberias usar $_GET en vez de $_HTTP_GET_VARS que es antiguo (y obsoleto, dejara de existir pronto)