Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Script de un paginador de galerias

Estas en el tema de Script de un paginador de galerias en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola que tal gente de los foros aqui les dejo un script que hize sobre un paginador de galerias, esta hecho en php orientado a ...
  #1 (permalink)  
Antiguo 17/01/2005, 09:37
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años, 8 meses
Puntos: 15
Script de un paginador de galerias

Hola que tal gente de los foros aqui les dejo un script que hize sobre un paginador de galerias, esta hecho en php orientado a objetos, espero que lo revisen y me manden sus comentarios y criticas.

Al constructor de la clase se le deben pasar 3 parametros

Código PHP:
$max=El numero maximo de paginas
$numpag=El numero de pag actual
$pagina=El nombre de la pagina

<?
  
class paginador
    
{
      var 
$pag_actual;
      var 
$pag_ant;
      var 
$pag_sig;
      
//Constructor
      
function paginador($max,$numpag,$pagina)
          {
          
//Asignamos los valores a las variables
          
$pag_ant=$numpag-4;
          
$pag_actual=$numpag+1;
          
$pag_sig=$numpag+4;
          
//Creamos la barra de paginacion para galerias que tengan menos de
          //4 paginas
          //O para el inicio de una galeria larga
          
if($max<or $numpag<4){
               for(
$j=1;$j<=$max;$j++){
                   if(
$j==$numpag+1)
                         echo 
$j' | ';
                   else {
                        
$ant=$j-1;
                        echo
'<a href="'.$pagina.'numpag='.$ant.'">'.$j.'</a>';
                        echo 
' | ';
                        }
                   if(
$j==4)
                        break;
                 }
          if(
$numpag<$max-4)
                echo 
'<a href="'.$pagina.'numpag='.$pag_sig.'">Siguiente  &gt;&gt;</a>';
          }
     
//Segunda funcion
     
if($max>and $numpag>=4)
       {
        if(
$numpag>=1){
             echo 
'<a href="'.$pagina.'numpag='.$pag_ant.'">&lt;&lt; Anterior</a>';
             echo 
' | ';
           }
        if(
$numpag>$max-4){
             for(
$m=number_format($max-3,0);$m<=$max;$m++){
             if(
$m==$numpag+1)
             echo 
$m' | ';
        else {
           
$ant=$m-1;
           echo
'<a href="'.$pagina.'numpag='.$ant.'">'.$m.'</a>';
           echo 
' | ';
           }
       }
     }
    else{
      echo 
$pag_actual.' | ';
      
$i=1;
      while(
$i<5){
           
$sig=$numpag+$i;
           
$numero=$sig+1;
           echo 
'<a href="'.$pagina.'numpag='.$sig.'">'.$numero.'</a>';
           echo 
' | ';
           
$i++;
           if(
$i==4)
                break;
         }
      }
   if(
$numpag<$max-4)
       echo 
'<a href="'.$pagina.'numpag='.$pag_sig.'">Siguiente &gt;&gt;</a>';
   }
 }
}
?>
Agradecere la ayuda que me brinden y manden sus sugerencias a [email protected] o a [email protected]
Muchas gracias
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)

Última edición por Cluster; 18/01/2005 a las 05:14
  #2 (permalink)  
Antiguo 18/01/2005, 05:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 23 años
Puntos: 129
En el foro de PHP tienes el sub-foro de "PHP Orientado a objetos" .. tienes también unas FAQ's por si quieres compartir tus classes (aunque realmente no es el objetivo de las "FAQ" de momento podrías usarlo para ese fin).

También te recuerdo que estamos en unos foros .. así que es ideal que las respuestas o comentarios se hagan aquí .. de forma pública (no obstante el que guste ya tiene donde contactarte de forma privada).

Te faltó un ejemplo de uso completo de tu classe.

Un saludo,
  #3 (permalink)  
Antiguo 18/01/2005, 05:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 23 años
Puntos: 129
Como comentario .. en general veo que tu classe (de paginado) no tiene métodos ni implementa la propagación de otras variables en el URL (de los links de paginado) ni de variables que entren por GET ni por POST ...

Es muyyyyyyyyy importante que tengas eso presente .. no siempre las aplicaciones en general son tan sencillas que funcionen de forma independiente, se requiere de la propagación de otras variables que pueda gestionar tu aplciación en si (y más si trabajas por ejemplo bajo estructuras de web's "modulares").

Un saludo,
  #4 (permalink)  
Antiguo 18/01/2005, 05:29
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 6 meses
Puntos: 16
Hola,

No lo veo como un paginador, sino como un generar de la lista de links de paginacion. Es decir, no pagina datos, solo crea los links. No tiene el problema de propagacion que comenta Cluster, porque le debes pasar la URL con las variables a propagar, finalizada en & o ? segun corresponda.

Personalmente, ¿tiene sentido la clase? No guardas el estado, solo tienes el constructor (¿un new paginador() genera salida? No lo veo intuitivo). Para mi bastaria como funcion (otra cosa seria tener una clase abstracta que defina un interfaz para varias clases que generen distintos tipos de menus, una especie de decorator). No porque la OOP esta de moda vamos a hacer todo con clases. Tampoco creo que una clase (o una funcion) deba usar echo o cualquier salida directa al navegador.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 25/02/2005, 10:47
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años, 8 meses
Puntos: 15
Pues gracias por sus comentarios, pues la verdad creo que me pase debi hacer una funcion y no una clase, pero ya esta la version 1.2 de mi script y he corregido varios errores gracias a sus sugerencias y criticas, muy pronto lo pondre en el foro.
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:30.