Foros del Web » Programando para Internet » PHP »

Pistas para paginación de una galería de imágenes.

Estas en el tema de Pistas para paginación de una galería de imágenes. en el foro de PHP en Foros del Web. Soy bastante novato en el php y me gustaría que me diesesis pistas u opiniones hacia donde tengo que tirar, también me sirven tutoriales o ...
  #1 (permalink)  
Antiguo 28/11/2011, 10:38
 
Fecha de Ingreso: noviembre-2011
Mensajes: 9
Antigüedad: 12 años, 5 meses
Puntos: 0
Pregunta Pistas para paginación de una galería de imágenes.

Soy bastante novato en el php y me gustaría que me diesesis pistas u opiniones hacia donde tengo que tirar, también me sirven tutoriales o ejemplos aunque sean en inglés.

Estoy haciendo una web, que entre otras cosas tiene varias galería de imágenes. Estas galerias consultan el directorio de una subcategoria ($carpeta_sub= "/subcarpeta/", $carpeta_sub2= "/subcarpeta2/",...) y después con "$archivos = scandir($carpeta);" saco todas las imágenes de dicha subcategoria. El tema está en que quiero paginarlas de 12 en 12.

Quiero saber si hay alguna manera de evitar sacar la paginación por consulta mysql y hacerlo directamente mediante el directorio y php

Una de las pruebas que he hecho ha sido esta (lo he adaptado para no ahcer referencias externas a otros directorios, sin contar la conexión a la bd);
Pero por ejemplo de una galería de 20 imágenes al poner "$mostrar = 12"
· La página 0 me muestra de la 1 a la 12 (todo bien)
· La página 1 me muestra de la 9 a la 20 (orden aleatorio pero siempre muestra 12, repitiendo algunas)

Código PHP:
<?php 
$arbol 
$_SERVER['DOCUMENT_ROOT'];
$carpeta_sub = ("/subcarpeta/"); //está variable consultará después la bd 
$carpeta $arbol $carpeta_sub 
$archivos scandir($carpeta);

$paginar $archivos
$mostrar 12//numero de elementos por pagina
$cuantos count($paginar); 
$paginas $cuantos $mostrar//numero de paginas

if (!isset($mostrar) or empty($mostrar) or !is_int($mostrar)) {
}
if (empty(
$_GET["pagina"])) { //si no hay pagina
$desde 0//principio de la primera pagina
$hasta $desde $mostrar//fin de la primera pagina
}
if (!empty(
$_GET["pagina"])) { //si estamos en una pagina distinta de la primera...
$desde = (int)$_GET["pagina"]; //principio de la pagina X
if ($desde $mostrar $cuantos) { //si principio + 10 no es mayor a la cantidad de elementos
$hasta $desde $mostrar//fin de la pagina X
}else{
$hasta $desde + ($cuantos $desde); //por si $principio + 10 es superior al numero de elementos
}
}


for (
$i=$desde$i<$hasta$i++) 
{if (
$paginar[$i] == '.' || $paginar[$i] == '..'){ echo '';}else { 

echo 
'<img src="'.$carpeta.$paginar[$i].'"/><br/>';

}}

for (
$p=0$p<=$paginas$p++) {
$dexde $p $mostrar//para marcar el inicio de la siguiente pagina
echo '<a href="template.php?pagina='.$dexde.'">'.$p.'</a> - '//mostramos la lista de paginas. Que cada uno las muestre como quiera
}

?>

Añado:
- Esto es una parte del conjunto, previamente por mysql cada imagen está sujeta a una subcategoría, así que con el scandir() me ahorro tiempo de ejecución
- Es una web para hostearla en un server gratuito y usarla yo y unos amigos para compartir fondos e imágenes, si alguien está interesado liberaré el sistema de usuarios, panel de control, perfiles y admin para quien lo quiera cuando lo acabe.

Gracias de antemano a quien pueda ayudar.
  #2 (permalink)  
Antiguo 28/11/2011, 14:44
 
Fecha de Ingreso: julio-2010
Mensajes: 393
Antigüedad: 13 años, 9 meses
Puntos: 67
Respuesta: Pistas para paginación de una galería de imágenes.

Claro que hay formas de hacerlo, pero dependiendo de las cantidad de registros a mostrar, no es algo óptimo, te recomiendo que lo hagas con consultas a la base de datos y no con php directamente, te dejo aquí el link para esta clase para paginaciones en php, espero que te sirva de algo, y ánimo!!!
__________________
Páginas web de alta calidad y hechas a la medida.
  #3 (permalink)  
Antiguo 01/12/2011, 11:37
 
Fecha de Ingreso: noviembre-2011
Mensajes: 9
Antigüedad: 12 años, 5 meses
Puntos: 0
De acuerdo Paginación de imágenes con php por un directorio

Me a tocado rehacer el código completamente viendo que nadie puede aportar una solución, así que aquí está, como hacer una paginación de imágenes de un directorio exclusivamente con php. :)

Código PHP:
<html>
<title>Galeria</title>
<head>
<?php 

$arbol 
$_SERVER['DOCUMENT_ROOT'];

$dir_sub = ("/GL/wall/up/"); // DIRECTORIO DE IMAGENES

$i_carpeta $arbol $dir_sub 

///////////////////////////////////////////////////////////////////////////////////////

 
$path $i_carpeta;
 
// Extracción de imágenes. 
 
$dh opendir($path); 
 
$archivos = array();
 while ((
$file readdir($dh)) !== false) { 
        if(
$file != "." && $file != "..") { // FORMATO ARCHIVOS A MOSTRAR
                
if(substr($file, -4) == '.jpg'$archivos[] = $file;
        if(
substr($file, -4) == '.png'$archivos[] = $file;
        if(
substr($file, -4) == '.gif'$archivos[] = $file;
        if(
substr($file, -5) == '.jpeg'$archivos[] = $file;
        } 
 } 
 
closedir($dh); 
 
sort($archivos); 
//parte 1:
 
$total_imagenes=count($archivos);
 
$image_a_mostrar=11;
 
//estos valores los recibo por GET
 
if(isset($_GET['pag'])){
        
$imagen_a_empezar=($_GET['pag']-1)*$image_a_mostrar;
        
$imagen_a_terminar=$imagen_a_empezar+$image_a_mostrar;
        
$pag_act=$_GET['pag'];

 }else{
        
$imagen_a_empezar=0;
        
$imagen_a_terminar=$imagen_a_empezar+$image_a_mostrar;
        
$pag_act=1;
 }
 
//parte 2: determinar numero de paginas
 
$pag_ant=$pag_act-1;
 
$pag_sig=$pag_act+1;
 
$pag_ult=$total_imagenes/$image_a_mostrar;
 
$residuo=$total_imagenes%$image_a_mostrar;
 if(
$residuo>0$pag_ult=floor($pag_ult)+1
 
//parte 3: navegacion
 
?>

</head><body>


 <?php 
 
while($imagen_a_empezar<=$imagen_a_terminar){
        
//si se pasa de total de imagenes salir de bucle
        
if($imagen_a_empezar>=$total_imagenes) break;
        
?>

<a href="<?php echo $dir_sub?><?php echo $archivos[$imagen_a_empezar]?>">
    <img src="scripts/timthumb.php?src=<?php echo $dir_sub?><?php echo $archivos[$imagen_a_empezar]?>"/>
</a>
        
<?php $imagen_a_empezar++;} ?>

<?php
 
echo "<a href=\"./\" onclick=\"Pagina('1')\">Primero</a> ";
 if(
$pag_act>1) echo "<a href=\"?pag=".$pag_ant."\" onclick=\"Pagina('$pag_ant')\">Anterior</a> ";
 echo 
"<strong>Pagina ".$pag_act."/".$pag_ult ."</strong>";
 if(
$pag_act<$pag_ult) echo " <a href=\"?pag=".$pag_sig."\" onclick=\"Pagina('$pag_sig')\">Siguiente</a> ";
 echo 
"<a href=\"?pag="$pag_ult."\" onclick=\"Pagina('$pag_ult')\">Ultimo</a>";
 
?>

</body></html>

Etiquetas: imagenes, paginacion
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 11:13.