Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/11/2011, 10:38
QIDH_php
 
Fecha de Ingreso: noviembre-2011
Mensajes: 9
Antigüedad: 13 años, 2 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.