Foros del Web » Programando para Internet » PHP »

¿como puedo paginar imagenes leidas desde una carpeta?

Estas en el tema de ¿como puedo paginar imagenes leidas desde una carpeta? en el foro de PHP en Foros del Web. Hola a todos, tengo es te problema y si lo he buscado, hay como 20 post que tratan de esto o de algo parecido pero ...
  #1 (permalink)  
Antiguo 13/12/2008, 09:34
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 19 años, 11 meses
Puntos: 0
¿como puedo paginar imagenes leidas desde una carpeta?

Hola a todos, tengo es te problema y si lo he buscado, hay como 20 post que tratan de esto o de algo parecido pero en ninguno encontre la respuesta, la mayoria dicen que se haga la prueba con el paginator y un par mas, pero esos estan echos para consultas a bases de datos, entonces no me sirven ni al que lo pregunto originalmente, ya que nadie dio una idea de como hacerlo, por eso lo pregunto ahora, proque esos post tienen un año o mas de antiguedad.

Bueno vamos al lio, tengo el siguiente codigo que me muestra las imagenes que estan en una carpeta, puedo poner las columnas que quiero, y guiandome de un post que encontre por aqui puedo saber la cantidad de imagenes que hay en la carpeta, el codigo es el siguiente

Código PHP:
<?php
 
//busca el numero de imagenes en la carpeta
$dir "/galeria";
$dh  opendir($dir);
while (
false !== ($nombre_archivo readdir($dh))) {
   
$archivos[] = $nombre_archivo;
}

$total_archivos count($archivos);
$total $total_archivos-2;
// fin


$num_colum 3;   // el numero de columnas a mostrar
$carpeta="galeria";    // la carpeta de las imagenes
echo '<center>';
$d dir("$carpeta");
$temcount 1;
while (
false !== ($entry $d->read())) {
if( 
preg_match('/(\.gif$|\.png$|\.jpg)$/is'$entry) ) {
if( 
$entry != '.' && $entry != '..' ) {
$patterns[0] = "/\.gif/";
$patterns[1] = "/\.png/";
$patterns[2] = "/\.jpg/";
$replacements[2] = "";
$replacements[1] = "";
$replacements[0] = "";
ksort($patterns);
ksort($replacements);
$entryname =  preg_replace($patterns$replacements$entry);
$a=1;
if(
$carpeta!=""){
$entrya "$carpeta/$entry";
}else{
$entrya $entry;
}
echo 
'<a href="'.$carpeta.'/'.$entry.'"">'
.'<img src="'.$carpeta.'/'.$entry.'" border="0" alt="'.$entryname.'" width=200 title="'.$entryname.'" hspace="10" vspace="10"></a>';
}
}
if (
$temcount == $num_colum) {
echo 
'<br>';
$temcount=0;
}
$temcount++;
}
echo 
'</center>';

?>
busca las imagenes con esas extensiones, sin importar el nombre que tengan, ahora lo que no se es como paginar las imagenes, proque si tengo 200 o 300 imagenes en esa carpeta las muestra todas en la misma pagina.

¿Que podria hacer?.

Saludos
  #2 (permalink)  
Antiguo 13/12/2008, 09:40
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿como puedo paginar imagenes leidas desde una carpeta?

No se entienda como autopromoción

http://www.forosdelweb.com/f18/como-...e-caso-653314/

  #3 (permalink)  
Antiguo 13/12/2008, 09:42
Avatar de happy1783  
Fecha de Ingreso: mayo-2008
Ubicación: Bogotá
Mensajes: 146
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: ¿como puedo paginar imagenes leidas desde una carpeta?

Hola!!

La nueva versión del paginador que desarrollo Okram te puede servir.

Esta versión te permite paginar información apartir de una array.

http://www.forosdelweb.com/f18/aport...ing-v2-638538/

Saludos.
__________________
El hombre sabio vive actuando no pensando en actuar.
  #4 (permalink)  
Antiguo 13/12/2008, 09:44
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 19 años, 11 meses
Puntos: 0
Hola, muchas gracias por contestar a los dos, voy a mirar las opciones que me habeis dado :)

Hola, gracias, funciona bien, el problema que encuentro es que no muestra las imagenes en gif ni en png, alguna idea?

Saludos

bueno ya solucioné lo del tipo de imagenes y lo adapte a mi gusto con clumnas, filas etc, ahora tengo una preguntilla, como peudo hacer para saber los nombres de subcarpetas, solo los nombres no quiero que me lea los archivos, solo los nombres de subcarpetas.

Vereis la idea era meter todas las imagenes en uncarpeta y mostrarlas, eso ya lo puedo hacer, pero luego pensando me gustaria, meter algunas imagenes en subcarpetas como para que sea otra categoria, entonces pensaba en leer los nombres de esas subcarpetas y mostrarlos como en un menu para elegir ese nombre y que muestre las imagenes de esa carpeta.

Se que haciendo la galeria sencilla con mysql va mejor catalogado y todo pero lo que busco es algo sencillo, solo subir las imagenes y que las muestre segun el directorio :)

Última edición por GatorV; 14/12/2008 a las 13:00
  #5 (permalink)  
Antiguo 14/12/2008, 11:29
Avatar de uselox  
Fecha de Ingreso: agosto-2008
Ubicación: Lima, Perú
Mensajes: 168
Antigüedad: 15 años, 7 meses
Puntos: 12
Respuesta: ¿como puedo paginar imagenes leidas desde una carpeta?

Código PHP:
scandir($dir); 
  #6 (permalink)  
Antiguo 14/12/2008, 11:43
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: ¿como puedo paginar imagenes leidas desde una carpeta?

gracias uselox no me sirve porque me muestra todos los archivos que hay yo solo quiero los nombres de carpetas, encontre este codigo que es mas o menos lo que quiero, digo mas o menos porque ahora no se porque no me muestra las subcarpetas de una carpeta determinada, son estos dos codigos, en teoria los dos hacen lo mismo pero ninguno de los dos la muestra

codigo 1

Código PHP:
<?php
$directorio 
opendir("."); //Abro el directorio
while (false !== ($file readdir($directorio))) { //recorro el resultado de $directorio uno por uno
if (is_dir($file)){ //si es un direcotrio….
echo "<a href='./$file'>$file</a><br>"//escribo un link apuntando a ese directorio
}
}
?>
codigo 2

Código PHP:
<?php
  
if (isset($_GET['album']))
     
$album $_GET['album'];
  else
     
$album "";
  if (
$album == "" && $filehandle opendir("."))
  {
     while (
false !== ($albumcheck readdir($filehandle)))
    {
      if (
$albumcheck != "." && $albumcheck != ".." && is_dir($albumcheck) && substr($albumcheck,0,1) != "_")
      {
          
$albums[] = $albumcheck;
      }
    }
    
closedir($filehandle);
    
natcasesort($albums);
    foreach (
$albums as $album)
    {
           
$albumname $album;
        print (
"<a href=\"prueba.php?album=$album\"><b>$albumname</b></a>&nbsp;&nbsp;");
    }
  }
  
?>
  #7 (permalink)  
Antiguo 14/12/2008, 11:46
Avatar de uselox  
Fecha de Ingreso: agosto-2008
Ubicación: Lima, Perú
Mensajes: 168
Antigüedad: 15 años, 7 meses
Puntos: 12
Respuesta: ¿como puedo paginar imagenes leidas desde una carpeta?

todas las imagenes esta en "/galeria" ??
  #8 (permalink)  
Antiguo 14/12/2008, 11:48
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: ¿como puedo paginar imagenes leidas desde una carpeta?

al principio si, pero ahora lo que quiro haces es en galeria crear varias subcarpetas que serian como las categorias y en esas subcarpetas meter las imagenes, entonces lo que queria era poder leer el nombre de esas subcarpetas y mostrarlas como un menu para mostrar las imagenes que estan en esa carpeta, no se si me explico.

Vamos que la primera parte ya funciona, la de leer las imagenes de la carpeta, lo que no logro es leer los nombres de las carpetas para hacer el link, el archivo php no esta en la carpeta principal de la web.
  #9 (permalink)  
Antiguo 14/12/2008, 11:52
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿como puedo paginar imagenes leidas desde una carpeta?

Cuando haces el bucle para leer las imágenes, haz una comprobación adicional con is_dir(), ya que readdir() Lee tanto archivos como subcarpetas dentro de un directorio. Así, los que pasen is_dir() como true los guardas en un array distinto al de las imágenes para procesarlos luego. Recuerda que . y .. también regresan true con is_dir().

  #10 (permalink)  
Antiguo 14/12/2008, 11:53
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 19 años, 11 meses
Puntos: 0
Respuesta: ¿como puedo paginar imagenes leidas desde una carpeta?

Mu bien lo voy a probar, gracias :)
  #11 (permalink)  
Antiguo 14/12/2008, 12:49
Avatar de uselox  
Fecha de Ingreso: agosto-2008
Ubicación: Lima, Perú
Mensajes: 168
Antigüedad: 15 años, 7 meses
Puntos: 12
Respuesta: ¿como puedo paginar imagenes leidas desde una carpeta?

si tiene errores(o dudas) me lo dices lo ise directo -.-
Código PHP:
<?php
/*FUNCIONES*/
function limpiarExtension($cadena){
    if(
strpos($cadena,".")){
        
$cadena=substr($cadena,0,-4);
    }
  return 
$cadena;
}
function 
Mayusculas($cadena){
    
$cadena=ucwords(limpiarExtension($cadena));
    
$cadena=str_replace(" Y "," y ",$cadena);
  return 
$cadena;
}
/*END FUNCIONES*/
$subcarpeta=$_REQUEST['subcarpeta'];
$imagen=$_REQUEST['imagen'];
$carpeta="galeria/";
$subcarpetas=scandir($carpeta);
$cantidadSubcarpetas=count($subcarpetas);
//link para scanear las subcarpetas
for($i=2;$i<=$cantidadSubcarpetas;$i++){
   echo 
"<a href='./".$_SERVER['PHP_SELF']."?subcarpeta=$subcarpetas[$i]'>$subcarpetas[$i]</a><br>\n\t";
}
//hacer link para las imagenes
if(empty($subcarpeta)){
    for(
$n=2;$n<=$cantidadSubcarpetas;$n++){
        if(
$subcarpeta==$subcarpetas[$n]){
        
$imagenes=scandir($carpeta.$subcarpetas[$n]);
        
$cantidadImagenes=count($imagenes);
            for(
$i=0;$i<$cantidadImagenes;$i++){
                
$limpio1=urlendode($subcarpetas[$n]);
                
$limpio2=limpiarExtension($imagenes[$i]);
                echo 
"<a href='./".$_SERVER['PHP_SELF']."?subcarpeta=$limpio1&imagen=".urlencode($limpio2)."'>".Mayusculas($limpio2)."</a><br>\n\t";
            }
        }
    }
}else echo 
"No elejio carpeta";//puedes aserle mas centencias a tu gusto
//mostrar las imagenes
if(empty($subcarpeta)){
    for(
$n=2;$n<=$cantidadSubcarpetas;$n++){
        if(
$subcarpeta==$subcarpetas[$n]){
            if(empty(
$imagen)){
                for(
$i=2;$i<$cantidadImagenes;$i++){
                    
$limpio1=limpiarExtension($imagenes[$i]);
                    if(
$imagen==$limpio1){
                        echo 
"<img src='".$carpeta.$subcarpetas[$n]."/".$imagenes[$i]."'/>\n\t";
                    }
                }
            }else {
                
//podrias mostrar una imagen random o el priero ala hora de elejir la carpeta
                //en este caso random
                
echo "<img src='".$carpeta.$subcarpetas[$n]."/".$imagenes[mt_rand(2,$cantidadImagenes)]."'/>\n\t";

            }
        }
    }
}else echo 
"Elija un direcorio arriba";
?>

Última edición por uselox; 14/12/2008 a las 12:52 Razón: falto funciones
  #12 (permalink)  
Antiguo 28/12/2008, 12:13
 
Fecha de Ingreso: febrero-2004
Mensajes: 446
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: ¿como puedo paginar imagenes leidas desde una carpeta?

No entiendo muy bien todo esto... Soy novato.

Alguien puede explicarme desde 0 como adaptar estos códigos a cada proyecto personal?

He creado una carpeta llamada "img" con otra subcarpeta dentro llamada "p". En "p" están los "thumbnails" de las imagenes grandes por asi decirlo, y en "img" están las imagenes grandes propiamente dichas.

Pues bien he copiado el código de pakillo, del comienzo de este hilo, y he cambiado la url de la variable: $dir, quedando así:

$dir = "/img/p";

después he añadido unos "echo" entre medio para diseñar la página a mi gusto:

echo "<div class='contenedor_principal'>";
etc...

Pregunta:
Este codigo genera solo 3 columnas con infinito numero de elementos por columna? o como funciona?

NOTA: Mas adelante si hago funcionar este codigo ya intentaré ver como crear paginación automatica..

Pregunta: $entry almacena el nombre del archivo y la extensión de dicho archivo, no?

Pregunta: ¿se puede prescindir de $entryname? para que sirve el $entryname? solo para rellenar alt y title?

Pregunta: No entiendo muy bien que es esta línea
"$entryname = preg_replace($patterns, $replacements, $entry);"

Tendré mas preguntas, pero de momento si alguien puede explicarme un poco y darme una guía para empezar se lo agradeceré muchisimo.

Un saludo !!!

EDITO: me da este error al probar la pagina--->

Warning: Supplied argument is not a valid Directory resource in c:\apache\htdocs\pruebas\paginacion_de_imagenes_pr 01.php on line 50

La linea 50 tiene esto: while (false !== ($nombre_archivo = readdir($dh)))

Última edición por walvaRo; 28/12/2008 a las 12:19
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 22:01.