Foros del Web » Programando para Internet » PHP »

Problema al poner imágenes aleatorias

Estas en el tema de Problema al poner imágenes aleatorias en el foro de PHP en Foros del Web. Encontré éste código navegando, tiene un buen funcionamiento, pero un error. Es para poner imágenes de forma aleatoria que estén dentro de una carpeta, puedo ...
  #1 (permalink)  
Antiguo 01/03/2013, 10:59
 
Fecha de Ingreso: octubre-2012
Mensajes: 45
Antigüedad: 11 años, 5 meses
Puntos: 0
Pregunta Problema al poner imágenes aleatorias

Encontré éste código navegando, tiene un buen funcionamiento, pero un error.

Es para poner imágenes de forma aleatoria que estén dentro de una carpeta, puedo tener 10 o 20 imágenes, no hace falta agregar una por una en el código, las encuentra en automático tan sólo con estar dentro de la carpeta, eso es lo que necesito:

Código PHP:
<?php
 
function imagen_aleatoria($path) { 
 
$F 0
 
$dir opendir($path); 
 while (
$file readdir($dir)) { if ($file != "." && $file != "..") { $archivos[$F] = $file$F++; } }   
 
$muestra rand(0,$F);   
return 
"<img src=$path/$archivos[$muestra]>";
 } 
 
?>
Y para publicar la imagen en el cuerpo del contenido:

Código PHP:
<?  echo imagen_aleatoria("imagenes"); ?>
(Donde "imagenes" es la carpeta donde quiero que búsque)

...
...

EL PROBLEMA:


Si dentro de esa carpeta tengo por ejemplo las imagenes: 1.jpg, 2.jpg y 3.jpg, el error es que a veces de forma aleatoria aparece unicamente la carpeta raiz:

<img src=www.mi-web.com/imagenes/3.jpg>
<img src=www.mi-web.com/imagenes/>
<img src=www.mi-web.com/imagenes/1.jpg>
<img src=www.mi-web.com/imagenes/2.jpg>
<img src=www.mi-web.com/imagenes/>


No se como solucionar ese problema para que únicamente aparezcan las imágenes, y solucionar el error de que a veces sólo aparece la dirección de la carpeta. Agradezco su ayuda!
.
  #2 (permalink)  
Antiguo 01/03/2013, 11:06
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Problema al poner imágenes aleatorias

realiza una validación de que no este vacío
Código PHP:
Ver original
  1. if(!empty($archivos[$muestra])) {
  2.    return "<img src=\"$path/$archivos[$muestra]\">";
  3. }

además también pudieras validar que es una imagen, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 01/03/2013, 11:32
Avatar de Ekel  
Fecha de Ingreso: noviembre-2009
Mensajes: 62
Antigüedad: 14 años, 5 meses
Puntos: 3
Respuesta: Problema al poner imágenes aleatorias

la mejor manera de listar archivos dentro de un directorio es con la funcion glob


algo asi

Código PHP:
<?php
$files 
glob("directorio/*.jpg");

foreach (
$files as $nombre_archivo) {
    echo 
"Tamaño de $nombre_archivo " filesize($nombre_archivo) . "\n";
}
?>
y si quieres hacerlo aleatoriamente podrías:
Código PHP:
$files glob('firectorio/*.jpg');
$rand $files[mt_rand(0,(count($files)-1))]; 
esto te devolveria una imagen aleatoria almacenada en directorio...


http://php.net/manual/es/function.glob.php

en el manual encuentras más información.

un saludo ;D
__________________
Black Nation Army
  #4 (permalink)  
Antiguo 01/03/2013, 11:36
 
Fecha de Ingreso: octubre-2012
Mensajes: 45
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problema al poner imágenes aleatorias

Cita:
Iniciado por carlos_belisario Ver Mensaje
realiza una validación de que no este vacío
Código PHP:
Ver original
  1. if(!empty($archivos[$muestra])) {
  2.    return "<img src=\"$path/$archivos[$muestra]\">";
  3. }

además también pudieras validar que es una imagen, saludos


Gracias por ayudar! Pero, bueno, tu código funciona como un "parche", es decir si pongo 5 imagenes de forma aleatoria de esta forma:

Código PHP:


<?  echo imagen_aleatoria("imagenes"); ?>
<?  
echo imagen_aleatoria("imagenes"); ?>
<?  
echo imagen_aleatoria("imagenes"); ?>
<?  
echo imagen_aleatoria("imagenes"); ?>
<?  
echo imagen_aleatoria("imagenes"); ?>

Y cuando encuentra el error en la tercera linea de leer solo la carpeta como es el problema que menciono, hace esto, se imprimen unicamente 2 lineas aunque haya puesto 5.

<img src="www.mi-web.com/imagenes/1.jpg">
<img src="www.mi-web.com/imagenes/3.jpg">

..
  #5 (permalink)  
Antiguo 01/03/2013, 11:54
 
Fecha de Ingreso: octubre-2012
Mensajes: 45
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problema al poner imágenes aleatorias

Cita:
Iniciado por Ekel Ver Mensaje
la mejor manera de listar archivos dentro de un directorio es con la funcion glob


algo asi

Código PHP:
<?php
$files 
glob("directorio/*.jpg");

foreach (
$files as $nombre_archivo) {
    echo 
"Tamaño de $nombre_archivo " filesize($nombre_archivo) . "\n";
}
?>
y si quieres hacerlo aleatoriamente podrías:
Código PHP:
$files glob('firectorio/*.jpg');
$rand $files[mt_rand(0,(count($files)-1))]; 
esto te devolveria una imagen aleatoria almacenada en directorio...


[url]http://php.net/manual/es/function.glob.php[/url]

en el manual encuentras más información.

un saludo ;D


GRACIAS!!!

Problema solucionado, tu código funciona correcto. Saludos y gracias!


.

Etiquetas: aleatoria, carpeta, imagenes
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 00:27.