Foros del Web » Programando para Internet » PHP »

Mostrar imagenes de directorio

Estas en el tema de Mostrar imagenes de directorio en el foro de PHP en Foros del Web. Hola, con el codigo que puse abajo logro que se muestren los 10 imagenes mas recientes de un directorio. Lo que quisiera es que me ...
  #1 (permalink)  
Antiguo 07/10/2007, 13:45
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 10 meses
Puntos: 36
Sonrisa Mostrar imagenes de directorio

Hola, con el codigo que puse abajo logro que se muestren los 10 imagenes mas recientes de un directorio. Lo que quisiera es que me muestre 10 imagenes pero que sean los que estan despues (en fecha de creacion) de los 10 mas recientes. y asi sucesivamente despues que muestre 10 imagenes que estan despues de las 20 recientes, etc.

Código PHP:

<?

$dir
="./"

$directorio=opendir($dir); 

$num=0

$i=0

while (
$archivo readdir($directorio)) { 
    
if (
$archivo==".") { echo " "; } 
else if (
$archivo=="..") { echo " "; }

else {

$num++; 

$i++; 

$entradas[$archivo] = filemtime($dir."/".$archivo);


} } 

arsort ($entradas);

closedir

$i=0

foreach (
$entradas as $archivo => $timestamp) { 

if ( 
$i 10 )

    {  

echo 
"<img src=$archivo>";

}

$i++;



?>
Gracias
  #2 (permalink)  
Antiguo 07/10/2007, 18:34
 
Fecha de Ingreso: septiembre-2007
Mensajes: 52
Antigüedad: 17 años, 2 meses
Puntos: 2
Re: Mostrar imagenes de directorio

Supongo que lo que buscas es una especie de paginación. El tema de las paginaciones suele surgir con frecuencia por lo que te sugiero que busques un poco al respecto si quieres profundizar.

Por ahora te muestro un ejemplo de paginación basado en el código que has publicado, que espero que sea fácil de seguir y estudiar :):

Código PHP:
<?php

// Extensiones de imágenes válidas
$extensiones = array ('.jpg''.png''.gif');

// Número de imágenes por página
$imgpp 10;

// Directorio de donde leer las imágenes
$dir './';


if (isset (
$_GET['pagina']))
    
$pag = (int) $_GET['pagina'];
else
    
$pag 1;


$directorio opendir($dir);

$num 0;
$i 0;

$entradas = array ();
while (
$archivo readdir($directorio)) {
    if (
$archivo == '.' || $archivo == '..')
        echo 
' ';
    elseif (
in_array (substr ($archivo, -4), $extensiones)) {
        
$num++;
        
$i++;
        
$entradas[$archivo] = filemtime($dir."/".$archivo);
    }
}

arsort ($entradas);

closedir ($directorio);

// Extraer solo las imágenes que corresponden a la página actual
$total count ($entradas);
$comienzo = ($pag 1) * $imgpp;
$entradas array_slice ($entradas$comienzo$imgpp);

// Imprimir ese grupo de imágenes extraído en el paso anterior
foreach ($entradas as $archivo => $timestamp) {
    echo 
"<img src=\"$archivo\">";
}

// Enlaces de paginación
$total_paginas ceil ($total $imgpp);
echo 
'<p>Páginas: ';
for (
$i 1$i <= $total_paginas$i++) {
    echo 
'<a href="' $_SERVER['PHP_SELF'] . "?pagina=$i\">$i</a> ";
}
echo 
'</p>';

?>
En resumen, tu código ya hacía la mayor parte del trabajo. El código de la paginación consiste simplemente en extraer aquellos resultados que nos interesan en la página actual y mostrar solo ésos. En el anterior ejemplo se hace esto usando array_slice(), pero hay un sinfín de alternativas más.

Si indagas un poco más, probablemente encuentres muchas otras opciones interesantes que puedes aplicar a problemas parecidos.
  #3 (permalink)  
Antiguo 08/10/2007, 13:05
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 10 meses
Puntos: 36
De acuerdo Re: Mostrar imagenes de directorio

Gracias mhatter, me funciono perfecto tu codigo
Estuve intentando agregarle un enlace que diga anterior y siguiente pero no pude, como podria agregarselo al codigo que me pasaste?

Gracias
  #4 (permalink)  
Antiguo 08/10/2007, 15:06
 
Fecha de Ingreso: septiembre-2007
Mensajes: 52
Antigüedad: 17 años, 2 meses
Puntos: 2
Re: Mostrar imagenes de directorio

Cita:
Iniciado por hgp147 Ver Mensaje
Estuve intentando agregarle un enlace que diga anterior y siguiente pero no pude, como podria agregarselo al codigo que me pasaste?
Básicamente sería cuestión de construir la URL, a partir de $_SERVER['PHP_SELF'] que contiene el enlace al script actual, luego la cadena query ?pagina= y añadirle un valor numérico igual al número de página actual más uno, o menos uno dependiendo de qué enlace estás construyendo, a la página siguiente o a la página anterior.

Por ejemplo:

Código PHP:
// Enlaces de paginación
$total_paginas ceil ($total $imgpp);
echo 
'<p>Páginas: ';

// Si esta página es > 1, mostrar enlace de "anterior"
if ($pag 1) {
    
$url $_SERVER['PHP_SELF'] . '?pagina=' . ($pag 1);
    echo 
"<a href=\"$url\">anterior</a> ";
}

for (
$i 1$i <= $total_paginas$i++) {
    echo 
'<a href="' $_SERVER['PHP_SELF'] . "?pagina=$i\">$i</a> ";
}

// Si esta página es < $total_paginas, mostrar enlace de "siguiente"
if ($pag $total_paginas) {
    
$url $_SERVER['PHP_SELF'] . '?pagina=' . ($pag 1);
    echo 
"<a href=\"$url\">siguiente</a> ";
}

echo 
'</p>'
  #5 (permalink)  
Antiguo 08/10/2007, 18:38
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 10 meses
Puntos: 36
Re: Mostrar imagenes de directorio

Gracias de nuevo!!!!!!! Funciona perfecto
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 13:03.