Foros del Web » Programando para Internet » PHP »

Cómo puedo paginar este script?

Estas en el tema de Cómo puedo paginar este script? en el foro de PHP en Foros del Web. Hola a todos!! cómo están?! Les hago una pregunta.. tengo un script en PHP de una galería de fotos que hice con un tutorial hace ...
  #1 (permalink)  
Antiguo 10/09/2008, 20:56
Avatar de fakulicious  
Fecha de Ingreso: mayo-2008
Ubicación: Mendoza
Mensajes: 140
Antigüedad: 11 años, 7 meses
Puntos: 2
Sonrisa Cómo puedo paginar este script?

Hola a todos!! cómo están?!

Les hago una pregunta.. tengo un script en PHP de una galería de fotos que hice con un tutorial hace unos años y que lo uso siempre..

con el paso del tiempo le fui haciendo modificaciones..

la pregunta si existe alguna manera de que me muestre las fotos en páginas de por ejemplo 15 fotos.. y que abajo me muestre:

Primera página - Anterior - 1 - 2 - 3 - 4 - 5 - Siguiente - Última página

y la cantidad de páginas que sean necesarias..

adjunto el script tal cual como lo tengo ahora..

cualquier duda de su funcionamiento, preguntenme y les digo, siempre y cuando lo sepa.. acuerdense que lo hice siguiendo los pasos de un tutorial.. asique hay cosas que quizás no sé..


acá va el script

Código PHP:
<?PHP
// Tomo las varialbes
$lugar $_GET["lugar"];
$dia $_GET["dia"];
$mes $_GET["mes"];
$ano $_GET["ano"];
$seccion $_GET["seccion"];




// Inicio Sección Configuracion ---------------------------------------------------
$DirFotos 'fotos/'.$lugar.'/'.$ano.'_'.$mes.'_'.$dia.'/images/'//Directorio donde se encuentran las imagenes para la galeria
$DirThumbnails 'fotos/'.$lugar.'/'.$ano.'_'.$mes.'_'.$dia.'/thumbnails/';
$CantxCol 3//Cantidad de columnas (Elegir este de acuerdo al tamaño que le vamos a dar a las imagenes)
// Fin Sección Configuracion ---------------------------------------------------

//Configuro los meses
if ($mes=='01')
    
$mostrarmes "Enero";
elseif (
$mes=='02')
    
$mostrarmes "Febrero";
elseif (
$mes=='03')
    
$mostrarmes "Marzo";
elseif (
$mes=='04')
    
$mostrarmes "Abril";
elseif (
$mes=='05')
    
$mostrarmes "Mayo";
elseif (
$mes=='06')
    
$mostrarmes "Junio";
elseif (
$mes=='07')
    
$mostrarmes "Julio";
elseif (
$mes=='08')
    
$mostrarmes "Agosto";
elseif (
$mes=='09')
    
$mostrarmes "Septiembre";
elseif (
$mes=='10')
    
$mostrarmes "Octubre";
elseif (
$mes=='11')
    
$mostrarmes "Noviembre";
elseif (
$mes=='12')
    
$mostrarmes "Diciembre";
else
    
$mostrarmes " ";

//Configuro la Fecha y la seccion
$fecha $dia." de ".$mostrarmes;

if (
$seccion=='boliches')
    
$mostrarseccion "Boliches";
elseif (
$seccion=='pubs')
    
$mostrarseccion "Pubs y Bares";
elseif (
$seccion=='matinee')
    
$mostrarseccion "Matinee";
elseif (
$seccion=='fiestas')
    
$mostrarseccion "Fiestas y Eventos";
else
    
$mostrarseccion " ";



$Cant 0// Variable para ser usada como contador

$ContenidoDir opendir("$DirFotos"); // Abrimos el directorio 

$Archivo=readdir($ContenidoDir); // Leemos el primer archivo que será "." (recuerden la estructura de los directorios de MS-DOS)
$Archivo=readdir($ContenidoDir); // Leemos el segundo archivo que será ".." (recuerden la estructura de los directorios de MS-DOS)
// De aqui en mas los archivos serán los nombres y extensiones de las fotos que se encuentran en el directorio abierto.

function XImagen($fXImagen){  // Esta función nos retornará el ancho de la imagen + algunos pixeles.
    
$DirX "$DirFotos";
    
$FotoX $fXImagen;
    
$URLfotoX $DirX.$FotoX;
    
$MasX 1// Cantidad de Pixeles que vamos agregar al ancho de la imagen para agregar un margen en la ventana. Quedará 10 Px. de margen de cada lado
    
if (file_exists($URLfotoX)){
        
$TamanoPX GetImageSize("$URLfotoX");
        
$TamanoX $TamanoPX[0] + $MasX;
        return 
$TamanoX;
    }
}

function 
YImagen($fYImagen){  // Esta función nos retornará el alto de la imagen + algunos pixeles.
    
$DirY "$DirFotos";
    
$FotoY $fYImagen;
    
$URLfotoY $DirY.$FotoY;
    
$MasY 1// Cantidad de Pixeles que vamos agregar al alto de la imagen para agregar un margen en la ventana. Quedará 10 Px. de margen de cada lado
    
if (file_exists($URLfotoY)){
        
$TamanoPY GetImageSize("$URLfotoY");
        
$TamanoY $TamanoPY[1] + $MasY;
        return 
$TamanoY;
    }
}

?>
<html>
<head>
<title>Galeria automatizada de imágenes Parte 2</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript" type="text/javascript" >
function preview (url, ancho, alto) {
    var v=window.open(url, '_blank', 'left=100,top=30,width=' + ancho + ',height=' + alto + ',toolbar=no,location=no,status=no,menubar=no,resizable=yes,scrollbars=Auto')
}
</script>
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<div align="center">
  <table width="438" border="0" cellspacing="0" cellpadding="0">
    <tr><?php //Muestro los titulos
echo  '<p aling="left"><a href="sitio.php?seccion=inicio">Inicio</a> &gt; <a href="sitio.php?seccion=fotos">Fotos</a> 
    &gt; <a href="sitio.php?seccion=fotos/'
.$seccion.'">'.$mostrarseccion.'</a> &gt; '.$lugar.' &gt; 
    '
.$fecha.'</p>';
?></tr>
    <tr>
    <?php while ($Archivo=readdir($ContenidoDir)) { 
    if( 
$Archivo == "." || $Archivo == ".." ) continue;        ?>
        <td align="center" valign="top">
            <table border="0" cellspacing="0" cellpadding="0">
                <tr align="left" valign="middle"> 
                    
            <td width="40"><a href="javascript:preview('zoom.php?img=<?php echo $DirFotos.$Archivo?>','620','490')"><img src="<?php echo $DirThumbnails.$Archivo?>" width="122" height="91" border="0"></a></td>
                </tr>
            </table>
        </td>
        <?php $Cant $Cant 1?>
        <?php if (($Cant $CantxCol) == 0){?>
    </TR>
        <TR> 
          
      <td width="10" align="left" valign="top">&nbsp;</td>
        </TR>
        <TR>
        <?php } else { ?>
            
      <td align="center" valign="middle">&nbsp;</td>
        <?php ?>
    <?php ?>
    <?php closedir($ContenidoDir); //Cerramos el directorio para no utilizar recursos del servidor inutilmente ?>
    </tr>
</table>
  <div align="left">
    <?php

//Muestro los titulos
echo  '<p aling="left"><a href="sitio.php?seccion=inicio">Inicio</a> &gt; <a href="sitio.php?seccion=fotos">Fotos</a> 
    &gt; <a href="sitio.php?seccion=fotos/'
.$seccion.'">'.$mostrarseccion.'</a> &gt; '.$lugar.' &gt; 
    '
.$fecha.'</p>';

?>
  </div>
</div>
</body>
</html>
  #2 (permalink)  
Antiguo 10/09/2008, 21:21
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 12 años, 9 meses
Puntos: 67
Respuesta: Cómo puedo paginar este script?

Interesante tu código, muestras una galería de acuerdo a un lugar y una fecha, en base a estos datos abres una carpeta determinada donde está la galería desde donde se imprimen archivo por archivo los thumbs de la galería y mediante un pop up muestras la ampliación. Debería decirte amigo, que no debes usar los pop ups para este propósito, yo antes lo hacía, pero resulta que ahora hay bloqueadores de ventanas emergentes y no hablo del predeterminado por Internet Explorer sino de programas que parchan al Internet Explorer y que le prohibe abrir cualquier ventana emergente, ya que de por si solo el I.E. bloquea pop ups pero no en todos los casos (generalmente cuando estas ventanas emergentes son activadas al cargar la página). Bueno, eso no es lo que preguntabas, pero solo fue un comentario.

Ahora a tu pregunta en sí: hacer un páginador en esas circunstancias no es tarea fácil, porque no hay una base de datos a la cual llamar y hacer un limit, sin embargo todo tiene su truco y te mostraré uno que puede servir:

Tu imprimes tu galería de este modo:

while ($Archivo=readdir($ContenidoDir)) {
if ($Archivo == "." || $Archivo == ".." ) continue; ?>
.....

y está muy bien, pero para hacer el páginador necesitamos saber el número total de imágenes contenido en esa carpeta, eso se puede conseguir si hicieras una función que pone cada archivo de tu carpeta en un array, la función sería esta:

Código PHP:

function getFiles($dir) {
              
$fdir opendir("$dir"); 
              
$files = array();
  
              while (
$archivo readdir($fdir))  {
                       if (
$archivo != "." &&  $archivo != ".." $files[] = $archivo;        
              }
              return 
$files;
}

 
// Ahora bien el código para imprimir tu galería sería así:

  
if (isset($_GET["nn"])) $nn $_GET["nn"];
  else 
$nn 1;

  
$nim 10;  // Número de fotos por página

  
$files getFiles($DirFotos);
  
$nImgs count($files);

  for (
$i 0$i $nImgs$i ++) {
           if (
$i >=  $nim * ($nn  1) && $i $nim $nn) {
              
// Aquí imprimes tus celdas con tus fotos
           
}  
   }

   
// Demás contenido ...
   // Al final deberás poner el paginador, eso se consigue de este modo:
   
   
$nPags ceil($nImgs $nim// Esto te da el número de páginas de la galería

    
for ($n 0$n $nPags$n ++) {
          if (
$n == $nn) echo "[$n]&nbsp";
          else echo 
"<a href=\"galeria.php?lugar=$lugar&dia=$dia&mes=$mes&ano=$ano&seccion=$seccion&nn=$n\">$n</a>&nbsp";
     } 
El código no está probado, pero ya la idea está dada, espero que te sirva.

Última edición por ElJavista; 10/09/2008 a las 21:42
  #3 (permalink)  
Antiguo 11/09/2008, 17:16
Avatar de fakulicious  
Fecha de Ingreso: mayo-2008
Ubicación: Mendoza
Mensajes: 140
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Cómo puedo paginar este script?

Gracias x la respuesta.. y x los halagos al script.. jeje

La verdad que funciona muy bien, y siempre me ha sido útil esta galería..

Pero no he entendido muy bien la idea que me das.. es decir, no entiendo como implementarlo en mi script..

Podrías modificar el script que yo puse con tu idea, y postearlo acá así lo pruebo y lo entiendo mejor?

Muchas gracias!


Phaq!
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 19:00.