Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => 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 (php) [Seleccionar]
<?php 
         $totalPag 
ceil($total/$limit); 
         
$links = array(); 
         
$pagina $HTTP_GET_VARS["pag"];
 $sig $pagina 1;
 $ant $pagina 1;
 $siguiente "-&nbsp;<a href='index2.php?pag=$sig'>Siguiente >></a>";
 $anterior "&nbsp;<a href='index2.php?pag=$ant'><< Anterior</a>&nbsp;-";
         if (
$pagina 1) {
 echo $anterior;
 }else {
 }
 for( $i=1$i<=$totalPag $i++) 
         { 
            
$links[] = "<a href=\"index.php?pag=$i\">[$i]</a>";  
         } 
         echo 
implode(" - "$links);  
 if ($pagina >= $totalPag) {
 } else {
 echo $siguiente;
 }
      
?>


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 (php) [Seleccionar]
$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 (php) [Seleccionar]
if (!empty($pagina)) {
echo "-&nbsp;<a href='index2.php?pag=2'>Siguiente >></a>";
} else {
echo $siguiente;
   }
}


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 (php) [Seleccionar]
<?php

 
if(empty($pagina)){

echo "-&nbsp;<a href='index2.php?pag=2'>Siguiente >></a>";
}else{

echo $siguiente;

    }

?>
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 (php) [Seleccionar]
<?php
 
/*La variable $pagina contiene el valor del parametro $_GET['var']
Si no se le pasa el parametro 'var', la variable $pagina estaria 
vacia (index.php) y el boton siguiente iria a index.php?pag=2
*/


 
if(empty($pagina)){
echo "-&nbsp;<a href='index.php?pag=2'>Siguiente >></a>";
}else{ 
echo $siguiente;
    }
 
?>
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)