Foros del Web » Programando para Internet » PHP »

Mis imagenes aleatorias me muestran errores

Estas en el tema de Mis imagenes aleatorias me muestran errores en el foro de PHP en Foros del Web. Holas encontre el codigo de imagenes aleatorias en php y lo adapta para mi web y sucede que al hacer refresh aparece error como esto: ...
  #1 (permalink)  
Antiguo 28/05/2007, 13:00
 
Fecha de Ingreso: agosto-2005
Mensajes: 125
Antigüedad: 18 años, 8 meses
Puntos: 0
Mis imagenes aleatorias me muestran errores

Holas encontre el codigo de imagenes aleatorias en php y lo adapta para mi web y sucede que al hacer refresh aparece error como esto:

Notice: Undefined offset: 10 in \www\webs\usuario\includes\aleatorio.php on line 7

Y tambien no muestra un grafico sale vacio como si no hubiese el grafico

En este codigo lo unico que se tiene que hacer es colocar las imagenes dentro de la carpeta "lasimagenes" y las imagenes son cualquier nombre ejemplo "headfotos_01.jpg" y el codigo simplemente lee 01,02,03...12 etc, y lo que me gusta es que adiciono una imagen correlativa sin modificar el codigo.

Aqui esta el codigo aleatorio.php
Código PHP:
<? 
function imagen_aleatoria($path) { 
$F 0
$dir opendir($path); 
while (
$file readdir($dir)) { if (($file != ".") || ($file != "..")) { $archivos[$F] = $file$F++; } } 
$muestra rand(1,$F); 
return 
"<img src=/$path/$archivos[$muestra]>"

?>
<? 
echo imagen_aleatoria("carpeta/lasimagenes"); 
?>

Alguien que pueda ayudarme en aumentar o quitar o cual es el error, porque no funciona bien.
  #2 (permalink)  
Antiguo 28/05/2007, 13:56
 
Fecha de Ingreso: mayo-2007
Mensajes: 20
Antigüedad: 16 años, 11 meses
Puntos: 1
Re: Mis imagenes aleatorias me muestran errores

Prueba con cambiar el retorno de la función:

Código:
return "<img src='/".$path."/".$archivos[$muestra]."'>";
Saludos
  #3 (permalink)  
Antiguo 28/05/2007, 16:17
Avatar de iandrade  
Fecha de Ingreso: septiembre-2006
Ubicación: Xalapa, Veracruz, MÉXICO.
Mensajes: 171
Antigüedad: 17 años, 6 meses
Puntos: 6
Re: Mis imagenes aleatorias me muestran errores

el problema puede ser este
suponiendo que tengas 10 imagenes al hacer la prueba de escritorio, cunado termina el ciclo $F vale 10 entonces en lugar de regresar un valor entre 0 y 9 (que son los que realmente ocupaste ya que empieza con $F=0;) te regresa uno entre 1 y 10 entonces al salir el valor 10 te genera un error, podria solucionarse con

$muestra = rand(0,($F-1));

o si deseas has estas 2 modificaciones

$F = 1 //La que esta al principio
$muestra = rand(1,($F-1));
  #4 (permalink)  
Antiguo 28/05/2007, 16:29
 
Fecha de Ingreso: abril-2007
Mensajes: 144
Antigüedad: 17 años
Puntos: 4
Re: Mis imagenes aleatorias me muestran errores

Es mas facil si modificas esta linea:

Código PHP:
while ($file readdir($dir)) { if (($file != ".") || ($file != "..")) { $F++; $archivos[$F] = $file; } } 
El incremento de $F ($F++) debe ir antes de añadirse el archivo ($archivos[$F] = $file ). Asi el primer indice de $archivos es 1 y $F queda con el valor del ultimo archivo añadido. Por lo que rand(1,$F) funcionara bien. De esta forma no necesitas añadir codigo, solo cambiar el orden de esas dos instrucciones.
  #5 (permalink)  
Antiguo 05/06/2007, 16:49
 
Fecha de Ingreso: agosto-2005
Mensajes: 125
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Mis imagenes aleatorias me muestran errores

Hola gracias por sus respuestas, pero he hecho los cambios que mencionan y me sigue saliendo el mismo error, que puede ser que el proceso aleatorio de 1 a 5, por ahi me esta botando un numero 0 o el 6 cosa que no estan en las imagenes.

Aqui les dejo el archivo para que lo descarguen y puedan ayudarme en que esta mal.

Se que es sencillo pero mis conocimientos en php son escasos y ya pueden darse cuenta he.
  #6 (permalink)  
Antiguo 05/06/2007, 20:43
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
Re: Mis imagenes aleatorias me muestran errores

De hecho, la variable F no la necesitas o.o

Código PHP:
<? 
function imagen_aleatoria($path) { 
$archivos = array();
$dir opendir($path); 
while (
$file readdir($dir)) { if (($file != ".") || ($file != "..")) { $archivos[] = $file; } } 
$muestra rand(0,count($archivos)-1); 
return 
"<img src='/$path/".$archivos[$muestra]."'>"


echo 
imagen_aleatoria("carpeta/lasimagenes"); 
?>
El rand(0,count($archivos)-1);, es porq el el arreglo comienza su cuenta desde 0 hasta el numero de archivos que haya menos 1.. aunq, creo que como dijo wrkjmg tambien deberia funcionar
__________________
Sin Ideas
  #7 (permalink)  
Antiguo 06/06/2007, 21:36
 
Fecha de Ingreso: agosto-2005
Mensajes: 125
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Mis imagenes aleatorias me muestran errores

He vuelto a probar con las imagenes y me sigue saliendo el error, no se donde da un numero no valido, tambien he probado como dijo wrkjmg y siempre sale el error, el error de todos las modificaciones es que no muestra un grafico sale vacio como si no existiera.

He tratado de colocar forzando asi $muestra = rand(1,8); y me sale igual no mostrandome un grafico, no se donde encontrar el error para que me muestre los graficos que hayga en la carpeta.
  #8 (permalink)  
Antiguo 07/06/2007, 09:35
 
Fecha de Ingreso: abril-2007
Mensajes: 144
Antigüedad: 17 años
Puntos: 4
Re: Mis imagenes aleatorias me muestran errores

¿Que version de PHP tienes?
  #9 (permalink)  
Antiguo 07/06/2007, 09:42
 
Fecha de Ingreso: abril-2007
Mensajes: 144
Antigüedad: 17 años
Puntos: 4
Re: Mis imagenes aleatorias me muestran errores

Si tu version de PHP es inferior a 4.2.0 necesitas inicializar el generador de numeros aleatorios con srand(), inserta el siguiente codigo antes de usar RAND()

Código PHP:
function crear_semilla()
{
    list(
$usec$sec) = explode(' 'microtime());
    return (float) 
$sec + ((float) $usec 100000);
}
srand(crear_semilla()); 
  #10 (permalink)  
Antiguo 07/06/2007, 17:35
 
Fecha de Ingreso: agosto-2005
Mensajes: 125
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Mis imagenes aleatorias me muestran errores

Tengo la version de PHP 4.3.10, y no se porque hay ese error pero como dicen deberia de funcionar; bueno doy F5 y cambia las fotos normales pero llega un determinado refresh que sale en blanco como si no habria la imagen algo como est lapagina.com/imagenes/header/

Pero cuando salen las imagenes correctamente salen asi: lapagina.com/imagenes/header/header_05 (06-01-02 etc.)
  #11 (permalink)  
Antiguo 07/06/2007, 17:49
 
Fecha de Ingreso: abril-2007
Mensajes: 144
Antigüedad: 17 años
Puntos: 4
Re: Mis imagenes aleatorias me muestran errores

Prueba el siguiente codigo tal cual:

Código PHP:
<PHP
function 
imagen_aleatoria($path) { 
$archivos = array();
$dir opendir($path); 
while (
$file readdir($dir)) { if (($file != ".") || ($file != "..")) { $archivos[] = $file; } } 
$muestra rand(0,count($archivos)-1); 

//Esto es para ver si falla el rand
if($muestra<&& $muestra=>count($archivos)) echo "El rand se raya";

return 
"<img src='/$path/".$archivos[$muestra]."'>"


echo 
imagen_aleatoria("carpeta/lasimagenes"); 
?> 
Si te sale alguna vez una imagen en blanco y no te ha salido "El rand se raya" es que el problema no esta en el rand(). A lo mejor nos hemos cegado con el rand() y no esta hay el problema.
  #12 (permalink)  
Antiguo 07/06/2007, 18:00
 
Fecha de Ingreso: abril-2007
Mensajes: 144
Antigüedad: 17 años
Puntos: 4
Re: Mis imagenes aleatorias me muestran errores

Si tienes algun subdirectorio en el directorio de las imagenes te pasara el error que comentas.

Asegurate de que no hay ningun subdirectorio dentro de /imagenes/
  #13 (permalink)  
Antiguo 07/06/2007, 18:16
 
Fecha de Ingreso: abril-2007
Mensajes: 144
Antigüedad: 17 años
Puntos: 4
Re: Mis imagenes aleatorias me muestran errores

Con este codigo no te puede fallar:

Código PHP:
<PHP?  
function 
imagen_aleatoria($path) {  
$archivos = array(); 
$dir opendir($path);  

while (
false !== ($file readdir($dir))) {
       if (
strpos($file'.gif') || strpos($file'.jpg') ) $archivos[] = $file;


$muestra rand(0,count($archivos)-1);  

return 
"<img src='/$path/".$archivos[$muestra]."'>";  
}  

echo 
imagen_aleatoria("carpeta/lasimagenes");  
?> 
Creo que este codigo cubre todos los posibles fallos. No puede fallar
Como puedes ver lo que se comprueba aqui es que $file sea una imagen antes de añadirlo.
Si usas .png tambien, tendras que añadir un " || strpos($file,'.png') " al if(

NOTA: podria fallar si llegas a crear unarchivo de imagen con el nombre ".gif", quiero decir, sin nombre , solo .gif ó .jpg, cosa que creo sera poco probable XD.
  #14 (permalink)  
Antiguo 09/06/2007, 18:10
 
Fecha de Ingreso: agosto-2005
Mensajes: 125
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Mis imagenes aleatorias me muestran errores

Bueno gracias a todos por su ayuda estoy muy agradecido.

Última edición por markplan; 16/06/2007 a las 20:11
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 18:27.