Foros del Web » Programando para Internet » PHP »

paginación para galeria

Estas en el tema de paginación para galeria en el foro de PHP en Foros del Web. tengo un problema.. estoy haciendo una galeria de fotos con 3 frames ... un archivo html llama a los 3 frames que son php, en ...
  #1 (permalink)  
Antiguo 12/11/2003, 15:24
 
Fecha de Ingreso: noviembre-2003
Ubicación: Caracas :D - Venezuela
Mensajes: 36
Antigüedad: 14 años, 1 mes
Puntos: 0
paginación para galeria

tengo un problema.. estoy haciendo una galeria de fotos con 3
frames ... un archivo html llama a los 3 frames que son php, en
frame principal muestra la imagen, el frame inferior muestra los
thumbnail y el otro frame es para un banner.. ahora estoy
linkeando los thumbnails al mainframe principal atraves de
javascript, el problema es q para el frame inferior uso este codigo:


Código PHP:
<?php
include("../gallery.txt");
function 
preview (){
// $dir = directorio de las fotos
$dirroot="../fotos/290903/";
$dir "../fotos/290903/preview/"
// Abre un directorio conocido y lee el contenido
if (is_dir($dir)) { 
    if (
$dh opendir($dir)) { 
        while ((
$file readdir($dh)) !== false) {
          if (
$file != "." && $file != ".."
          {
          echo 
"<a href=javascript:doPic('$dirroot$file')>
          <img src='$dir$file' height='75' border='1'/></a>"
;
          }  
        } 
        
closedir($dh); 
    } 
}
}
preview();
?>
el codigo muestra los thumbnails pero carga todos los
thumbnails.. y kiero hacer q solo cargue 5, con un boton de next
para mostrar los 5 siguientes.. asi... si alguien sabe como hacerlo
por favor le agradezco su ayuda

otra cosa.. si alguien me puede agregar a sus contactos del messenger para ayudarme en linea seria mucho mejor.. me correo es [email protected]

thx
__________________
de Caracas - Venezuela para el mundo! :D

Última edición por eck0z0r; 12/11/2003 a las 15:27
  #2 (permalink)  
Antiguo 12/11/2003, 16:51
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

Lo primero seria que el bucle que recorre el directorio no muestre directamente la imagen, sino que guarde los nombres de los ficheros en un array. En funcion del parametro 'pagina', mostrarias los elementos del array correspondientes a (pagina-1)*5 hasta 5 despues (suponiendo pagina con los valores 1,2,3, ... y el array empezando en 0). Luego si quedan elementos, pones el link a (pagina+1) que seria la siguiente pagina. Y pondras el link a (pagina-1) si pagina>1.

Mas o menos el codigo seria:
Código PHP:

<?php

include("../gallery.txt");

function 
preview (){

// $dir = directorio de las fotos

$dirroot="../fotos/290903/";

$dir "../fotos/290903/preview/"

// Abre un directorio conocido y lee el contenido

$imagenes=array(); //inicilizamos el array

if (is_dir($dir)) { 

    if (
$dh opendir($dir)) { 

        while ((
$file readdir($dh)) !== false) {

          if (
$file != "." && $file != ".."

          {
 
               
$imagenes[]=$file// añadimos la imagen

          
}  

        } 

        
closedir($dh); 

    } 

}

$totalImagenes=count($imagenes);

if (isset(
$_GET['pagina'])) {
  
$pagina=$_GET['pagina'];
} else {
  
$pagina=1;
}

if (
1>$pagina$pagina=1//paranoia de seguridad
$inicio=($pagina-1)*5;
if (
$inicio>=$totalImagenes) { //mas paranoia
  
$pagina=1;
  
$inicio=0;
}
$final=$inicio+5;
if (
$final>$totalImagenes$final=$totalImagenes;  // todavia mas paranoia

for ($i=$inicio;$i<$final;$i++) {
          echo 
"<a href=javascript:doPic('$dirroot".$imagenes[$i].")>

          <img src='$dir"
.$imagenes[$i]."' height='75' border='1'/></a>";

}

if (
1<$pagina) echo '<a href='pagina.php?pagina='.($pagina-1).'">Anterior</a>';
if ($final<$totalImagenes) echo '<a href='pagina.php?pagina='.($pagina+1).'"
>Siguiente</a>;
}

preview();

?>
No aseguro que el codigo este libre de errores, ya que lo he creado segun escribia la respuesta. Esta sin probar. Prueba con u directorio con 0 imagenes, con 5, con 8, con 9, con 15, con 16, por ejemplo. Son importantes las pruebas con cantidades multiples de 5 (tu limite por pagina) para comprobar que no crea enlaces a paginas vacias (por ejemplo, un directorio con 5 imagenes que ponga enlace a pagina siguiente seria un error).

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.

Última edición por josemi; 13/11/2003 a las 14:26
  #3 (permalink)  
Antiguo 13/11/2003, 12:27
 
Fecha de Ingreso: noviembre-2003
Ubicación: Caracas :D - Venezuela
Mensajes: 36
Antigüedad: 14 años, 1 mes
Puntos: 0
use el codigo que me diste.. pero no me sirve todavia.. llevo rato revisandolo pero no consigo donde esta la falla, lo unico q paso por mi mente fue cambiar esto

Código PHP:
$imagenes=array(); //inicilizamos el array
if (is_dir($dir)) { 
    if (
$dh opendir($dir)) { 
        while ((
$file readdir($dh)) !== false) {
              if (
$file != "." && $file != "..") {
                   
array_push ($imagenes$file); // añadimos la imagen
              
}  
        } 
    
closedir($dh); 
    } 

al añadir la imagen poner un array_push.. pero sigue sin funcionar.. si alguien mas sabe que error puede tener el codigo.. le agradeceria mucho su ayuda...

Espero pronta respuesta.. y gracias de antemano..
__________________
de Caracas - Venezuela para el mundo! :D
  #4 (permalink)  
Antiguo 13/11/2003, 14:25
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Bueno, si dices que es lo que falla.

Revisandolo paraec que me comi el $i++ en el for. Esto:
Código PHP:
for ($i=$inicio;$i<$final) { 
deberia ser
Código PHP:
for ($i=$inicio;$i<$final;$i++) { 
Tal como estaba se mostraria infinitamente la primera imagen. Voy a cambiarlo en el original.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 13/11/2003, 18:11
 
Fecha de Ingreso: noviembre-2003
Ubicación: Caracas :D - Venezuela
Mensajes: 36
Antigüedad: 14 años, 1 mes
Puntos: 0
Le hice unas modificaciones para mayor entendimiento de mi parte y mejor manejo... me imagino que habra maneras de hacerlo mas compacto..

Código PHP:
<?php

include("../gallery.txt");
function 
preview (){
// $dir = directorio de las fotos
$dir="../fotos/290903/";
// Abre un directorio conocido y lee el contenido
$imagenes=array(); //inicilizamos el array
if (is_dir($dir)) { 
    if (
$dh opendir($dir)) { 
        while ((
$file readdir($dh)) !== false) {
              if (
$file != "." && $file != "..") {
                   
array_push ($imagenes$file); // añadimos la imagen
              
}  
        } 
    
closedir($dh); 
    } 
}
if (isset(
$_GET['pagina'])) {
    
$pagina=$_GET['pagina'];
    } else {
    
$pagina=1;
    }
$totalImagenes=count($imagenes);
if (
1>$pagina$pagina=1//paranoia de seguridad
$inicio=($pagina-1)*5;
if (
$inicio>=$totalImagenes) { //mas paranoia
    
$pagina=1;
    
$inicio=0;
    }
$final=$inicio+5;
if (
$final>$totalImagenes$final=$totalImagenes;  // todavia mas paranoia
for ($i=$inicio;$i<$final$i++) {
    echo 
"<a href=javascript:doPic('$dir$imagenes[$i].')><img src='$dir/preview/$imagenes[$i].' height='75' border='1'/></a>";
    }

if (
1<$pagina){
    
$anterior=$pagina;
    
$anterior--;
    echo 
"<a href='pagina.php?pagina=$anterior')>Anterior</a>";
    }
if (
$final<$totalImagenes){
    
$siguiente=$pagina;
    
$siguiente++;
    echo 
"<a href='bottom.php?pagina=$siguiente'>Siguiente</a>";
    }
}
preview();
?>
Funciona casi a la perfección, pero tengo un problema... cuando le doy a Siguiente me muestra las 5 fotos siguientes.. pero cuando le doy a anterior no me muestra nada... :S y eso q el link de anterior esta bien... no entiendo x que pasa esto.. voy a seguir revisando.. si consigo algo lo publico.. de todas maneras te agradezco tu ayuda....

ME GUSTA COMO ESTA KEDANDO...

Saludos...
__________________
de Caracas - Venezuela para el mundo! :D

Última edición por eck0z0r; 13/11/2003 a las 18:18
  #6 (permalink)  
Antiguo 13/11/2003, 18:22
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Un detalle, que no se si solo sera en el codigo que has puesto en el mensaje y no en el que usas.

El link de siguiente apunta a bottom.php, mientras que anterior apunta a pagina.php. Supongo que ambos deberan ser iguales. Y si dices que el que funciona es el de siguiente, pues sera que te ha quedado el pagina.php de mi codigo ejemplo.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 13/11/2003, 18:28
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Por cierto, en la FAQ http://www.forosdelweb.com/showthrea...561#post492561 tienes el codigo para que te aparezcan todos los numeros de pagina, no solo anterior y siguiente.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.

Última edición por josemi; 13/11/2003 a las 18:30
  #8 (permalink)  
Antiguo 13/11/2003, 18:51
 
Fecha de Ingreso: noviembre-2003
Ubicación: Caracas :D - Venezuela
Mensajes: 36
Antigüedad: 14 años, 1 mes
Puntos: 0
De acuerdo

Listo todo trabaja a la perfección ... muchas gracias por tu ayuda.. estaba revisando el documento y no encontraba el error, el error era ese que dijiste en el ultimo post... el link era hacia bottom.php y no hacia pagina.php, debe ser q despues de tantas horas frente a un computador mi nivel de atencion baja ...... bueno.. GRACIAS otra vez!

Saludos...
__________________
de Caracas - Venezuela para el mundo! :D
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 16:58.