Foros del Web » Programando para Internet » PHP »

Mostrar 5 Imagenes de Directorio

Estas en el tema de Mostrar 5 Imagenes de Directorio en el foro de PHP en Foros del Web. Asi de simple es mi pregunta y creo que tambien es simple la respuesta pero no se mucho usar todavia los i++ y eso asi ...
  #1 (permalink)  
Antiguo 28/05/2009, 17:13
Avatar de TxT
TxT
 
Fecha de Ingreso: junio-2008
Ubicación: Canada
Mensajes: 272
Antigüedad: 15 años, 10 meses
Puntos: 2
De acuerdo Mostrar 5 Imagenes de Directorio

Asi de simple es mi pregunta y creo que tambien es simple la respuesta pero no se mucho usar todavia los i++ y eso asi que si alguien me puede ayudar...

Solo quisiera poder mostrar 5 imagenes aleatorias de un directorio en mi web. Claro en php y no necesito ni tener width ni height ni nada mas solo eso.

Por el momento tenia este codigo:

Código:
<? $ruta = "thumbs/"; // Indicar ruta
$filehandle = opendir($ruta); // Abrir archivos
while ($file = readdir($filehandle)) {
    if ($file != "." && $file != "..") {
        $tamanyo = GetImageSize($ruta . $file);
        echo "<p><img src='$ruta$file' $tamanyo[3]><br></p>\n";
    }
}
closedir($filehandle); // Fin lectura archivos
?>
Pero solo que así me muestra TODAS las imagenes del directorio y solo quiero que muestre 5

Muchas gracias por la ayuda!
  #2 (permalink)  
Antiguo 28/05/2009, 17:15
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Mostrar 5 Imagenes de Directorio

Prueba esto

Código PHP:
<? $ruta "thumbs/"// Indicar ruta
$filehandle opendir($ruta); // Abrir archivos
$contador 0;
while (
$file readdir($filehandle)) {
    if (
$file != "." && $file != "..") {
        
$tamanyo GetImageSize($ruta $file);
        echo 
"<p><img src='$ruta$file' $tamanyo[3]><br></p>\n";
    }
    if(
$contador==4)
         break;
    
$contador++;
}
closedir($filehandle); // Fin lectura archivos
?>
Si no me equivoco, ya que comienzo el contador en 0, el último debería ser 4... de 0 a 4 hay 5, xD... no estoy seguro, si te muestra 4, cambias el if a 5 xD.

Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 28/05/2009, 17:24
Avatar de TxT
TxT
 
Fecha de Ingreso: junio-2008
Ubicación: Canada
Mensajes: 272
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Mostrar 5 Imagenes de Directorio

Funciona excelente, solo que... siempre me muestra las mismas 5 imagenes :S hay alguna forma de que pueda mostrar todas pero siempre 5 aleatoriamente? y si habia que cambiar el if a 5 pero eso ya lo habia hecho :)

Solo me faltaria que salgan random alguien me ayuda plz?

Muchisimas gracias por tu ayuda spider_boy :D
  #4 (permalink)  
Antiguo 28/05/2009, 17:37
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Mostrar 5 Imagenes de Directorio

Sin borrar el código que tienes, prueba esto...

Código PHP:
$files scandir('directorio');
$count count($files)-1;
$contador 0;
foreach(
$files as $f)
{
   if(
is_file($f) && $f!='.' && $f!='..' ) {
     
$rand mt_rand(0$count);
     echo 
"<img src='".$files[$rand]."' />";
   }
   if(
$contador==4)
      break;
   
$contador++;

__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 28/05/2009, 17:47
Avatar de TxT
TxT
 
Fecha de Ingreso: junio-2008
Ubicación: Canada
Mensajes: 272
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Mostrar 5 Imagenes de Directorio

No funcionó.
No me sale absolutamente nada, ni error ni nada asi que no sabría decirte cual fue el error :S
  #6 (permalink)  
Antiguo 28/05/2009, 17:50
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Mostrar 5 Imagenes de Directorio

ahi vas a tener que usar un codigo usando el rand();
  #7 (permalink)  
Antiguo 28/05/2009, 17:53
Avatar de TxT
TxT
 
Fecha de Ingreso: junio-2008
Ubicación: Canada
Mensajes: 272
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Mostrar 5 Imagenes de Directorio

Se que debo usar rand(); pero no se donde debo para que funcione
  #8 (permalink)  
Antiguo 29/05/2009, 07:30
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Mostrar 5 Imagenes de Directorio

Ya, mira, ahora corregí, pero lamentablemente tuve que agrandar el código :(. Queria hacerlo dentro del mismo while, pero no supe como xD.

Código PHP:
$ruta "ruta_directorio"// Indicar ruta
$archivos = array();
$filehandle opendir($ruta); // Abrir archivos
while ($file readdir($filehandle)) {
    if (
$file != "." && $file != "..") {
        
$tamanyo GetImageSize($ruta $file);
        
$archivos[] = "<p><img src='$ruta$file' $tamanyo[3]><br></p>\n";
    }
}
closedir($filehandle); // Fin lectura archivos

$i 1;
$count count($archivos)-1;
foreach(
$archivos as $ar)   {
    
$rand mt_rand(0$count);
    echo 
$archivos[$rand];
    if(
$i==5)
        break;
    
$i++;

Lo malo del código ese, es que si metes cualquier archivo que no sea imagen, también tratará de imprimirlo D=.

Pero al menos funciona xD. Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #9 (permalink)  
Antiguo 29/05/2009, 17:09
Avatar de TxT
TxT
 
Fecha de Ingreso: junio-2008
Ubicación: Canada
Mensajes: 272
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Mostrar 5 Imagenes de Directorio

mismo un .htaccess?? o.O
  #10 (permalink)  
Antiguo 29/05/2009, 23:34
 
Fecha de Ingreso: noviembre-2008
Mensajes: 8
Antigüedad: 15 años, 5 meses
Puntos: 0
De acuerdo Respuesta: Mostrar 5 Imagenes de Directorio

Ya esta, le puse filtro al string, para que solo encuentre las imagenes con extension ".jpg"
resultado:
Código PHP:
<?php
$ruta 
"imagenes/"// Indicar ruta
$archivos = array();
$filehandle opendir($ruta); // Abrir archivos
while ($file readdir($filehandle)) {
    if (
$file != "." && $file != "..") {
    if (
stristr($file,'.jpg')){//Compruebo que sea una imagen del tipo JPG
            
$tamanyo GetImageSize($ruta $file);
            
$archivos[] = "<p><img src='$ruta$file' $tamanyo[3]><br></p>\n";
    }
    }
}
closedir($filehandle); // Fin lectura archivos

$i 1;
$count count($archivos)-1;
foreach(
$archivos as $ar)   {
    
$rand mt_rand(0$count);
    echo 
$archivos[$rand];
    if(
$i==5)
        break;
    
$i++;
}  
?>
es importante, dejarle a $ruta, una / alfinal.
puedes cambiar el "if (stristr($file,'.jpg'))", por otra extension, o un array.


Suerte
  #11 (permalink)  
Antiguo 30/05/2009, 09:36
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Mostrar 5 Imagenes de Directorio

Perdonen escribi un comentario donde no era...
  #12 (permalink)  
Antiguo 30/05/2009, 10:33
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Mostrar 5 Imagenes de Directorio

Aquí lo optimicé más, utilizando la función GLOB para obtener los archivos.

Código PHP:
$ruta "../test/";
$array_exts = array('gif','jpg','bmp','png');
$extensiones implode(',',$array_exts);
$files glob($ruta.'*.{'.$extensiones.'}'GLOB_BRACE);
$count count($files)-1;
$i 0;
foreach(
$files as $f)   {
    
$rand mt_rand(0$count);
    
$tamanyo getimagesize($f);
    echo 
"<img src=".$files[$rand]." $tamanyo[3]/>";
    if(
$i==5)
        break;
    
$i++;

Espero te sirva. Nos vemos ^^.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.

Última edición por spider_boy; 31/05/2009 a las 08:43
  #13 (permalink)  
Antiguo 30/05/2009, 23:45
 
Fecha de Ingreso: noviembre-2008
Mensajes: 8
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Mostrar 5 Imagenes de Directorio

jeje, buenisimo. No conocia a glob ^^
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 17:50.