Foros del Web » Programando para Internet » PHP »

Selección Aleatoria Archivos Directorio

Estas en el tema de Selección Aleatoria Archivos Directorio en el foro de PHP en Foros del Web. Tengo este script que me lee todos los archivos de un directorio : Código PHP: <? /// $handle  =  opendir ( "./directorio" );  while ( false  ...
  #1 (permalink)  
Antiguo 29/08/2008, 04:53
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 16 años, 4 meses
Puntos: 20
Exclamación Selección Aleatoria Archivos Directorio

Tengo este script que me lee todos los archivos de un directorio :

Código PHP:

<?
///
$handle opendir("./directorio"); 
while (
false !==($file readdir($handle))) 

if (
$file != "." && $file != ".."&& $file != ".htaccess" && $file != "index.html"



print 
"$file";


}
closedir($handle); 
///
?>




Me gustaría no se como hacer , pero me gustaría que eligiese solo 5 por ejemplo de 100 archivos y de forma aleatoria pero no se me ocurre como hacerlo , de forma que de cada recarga de página solo se mostrasen 5 y cada vez diferentes , un saludo desde ya y muchas gracias
  #2 (permalink)  
Antiguo 29/08/2008, 05:01
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 7 meses
Puntos: 7
Respuesta: Selección Aleatoria Archivos Directorio

podrías guardar los nombres en una BBDD, y a partir de una función que te genere una nº aleatorio (int rand ([ int $min ], int $max ) elegir los archivos que quieras.
ver http://us.php.net/rand
$aleatorio = rand(0,numArchivos-5);
$sql="select nombreArchivo from directorio limit $aleatorio, 5";

si quieres que sean los cinco aleatorios (no seguidos) realiza 5 rand() y comprueba que no se repitan.

$aleatorioX = rand(0,numArchivos);
$sql= "select nombreArchivo from directorio where id=$alatorio1 OR id=$aleatorio2...;(me parece que mysql no acepta el comando IN, si lo acepta: where id in ($aleatorio1, $aleatorio2...)
  #3 (permalink)  
Antiguo 29/08/2008, 05:07
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: Selección Aleatoria Archivos Directorio

te agradezco tu comentario amigo pero el tema sería sin mysql , simplemente sería mostrr el nombre de esos 5 archivos a partir de el pequeño script que puse , no obstante te agradezco tu aportación , saludos
  #4 (permalink)  
Antiguo 29/08/2008, 05:14
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 7 meses
Puntos: 7
Respuesta: Selección Aleatoria Archivos Directorio

puedes seleccionarlos uno a uno siempre y cuando puedas obtener el nombre del archivo a partir de un valor aleatorio (archivo1.php por ejemplo) y mostrarlo.
  #5 (permalink)  
Antiguo 29/08/2008, 06:52
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 16 años, 4 meses
Puntos: 20
Exclamación Respuesta: Selección Aleatoria Archivos Directorio

Cita:
Iniciado por ilie Ver Mensaje
puedes seleccionarlos uno a uno siempre y cuando puedas obtener el nombre del archivo a partir de un valor aleatorio (archivo1.php por ejemplo) y mostrarlo.
bueno creo no me entendiste bien la idea , el script que mostre lee los archivos del directorio , supongamos que los archivos son fotos y hay 200 : 1.jpg , 2.jpg , ........ asi hasta 200 ; lo que quiero es mostrar de cada vez 5 resultados diferentes es decir en una recarga de la página que salgan los archivos 1,2,5,6,8 y en otra pues otros aleatorios como 23,45,6,89,2 ; eso es lo que me refiero basicamente , imagino hay que usar la funcion rand pero no se como aplicarlo a el script que arriba puse , muchas gracias
  #6 (permalink)  
Antiguo 29/08/2008, 08:14
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 6 meses
Puntos: 71
Respuesta: Selección Aleatoria Archivos Directorio

algo rapido y sencillo:
en lugar del print, añades los ficheros a un array
Código PHP:
$ficheros[] = $file
cuando salgas del while, haces esto:
Código PHP:
print_r(array_rand($ficheros5)); 
y listo
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 19:36.