Foros del Web » Programando para Internet » PHP »

Ayuda, mostrar archivos aleatoriamente

Estas en el tema de Ayuda, mostrar archivos aleatoriamente en el foro de PHP en Foros del Web. Hola, ayer me ayudaron mucho con este codigo, que lista archivos de texto y muestra 5 aleatoriamente en cada variable... pero como logro que en ...
  #1 (permalink)  
Antiguo 07/10/2008, 20:16
 
Fecha de Ingreso: julio-2008
Mensajes: 350
Antigüedad: 15 años, 9 meses
Puntos: 4
Pregunta Ayuda, mostrar archivos aleatoriamente

Hola, ayer me ayudaron mucho con este codigo, que lista archivos de texto y muestra 5 aleatoriamente en cada variable... pero como logro que en las variables no se repita el mismo archivo? es posible?

<?
$dir='archivos/'; //El directorio local donde almacenas solo los archivos de texto
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if (!is_dir($dir.$file) && $file != "." && $file != "..") {
$archivos[]=substr(urlencode($file), 0, strlen(urlencode($file))-4);
}
}
closedir($handle);
}
$aleatorio = rand(0, count($archivos)-1);
$aleatorio2 = rand(0, count($archivos)-1);
$aleatorio3 = rand(0, count($archivos)-1);
$aleatorio4 = rand(0, count($archivos)-1);
echo $archivos[$aleatorio];
echo $archivos[$aleatorio2];
echo $archivos[$aleatorio3];
echo $archivos[$aleatorio4];
?>


Espero que me ayuden, estoy terminando un sitio y sin esto funcionando no va a quedar bien jeje, gracias...
  #2 (permalink)  
Antiguo 07/10/2008, 20:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Ayuda, mostrar archivos aleatoriamente

Hola neworks,

Lo que puedes hacer es al ir generando los archivos, los vas guardando en un arreglo y así comparas y checas que no sea el mismo (por ejemplo con array_search).

Saludos.
  #3 (permalink)  
Antiguo 07/10/2008, 20:41
 
Fecha de Ingreso: julio-2008
Mensajes: 350
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Ayuda, mostrar archivos aleatoriamente

Lo que pasa es que no entiendo mucho, y nose donde colocar el array_search, lei en el manual de php que tambien podria funcionar este array_key_exists pero no tengo la menor idea de como usarlo en el codigo que tengo...
  #4 (permalink)  
Antiguo 08/10/2008, 21:40
 
Fecha de Ingreso: julio-2008
Mensajes: 350
Antigüedad: 15 años, 9 meses
Puntos: 4
Pregunta Problema con mt_rand()

Hola, tengo un problema y no encuentro solucion , lo que quiero es lograr que mt_rand me tire un numero del 1 al 10 por ejemplo, pero que nunca de como resultado 2 o cualquier numero que le indique... Espero que me ayuden, gracias...
  #5 (permalink)  
Antiguo 08/10/2008, 22:09
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con mt_rand()

Usa el bucle do...while para ejecutar la funcion tantas veces sea necesario hasta que el número no sea alguno de los que le indiques. La condición para seguir elbucle obviamente será que el valor de mt_rand() sea igual al que tu le indiques

Saludos,
  #6 (permalink)  
Antiguo 08/10/2008, 22:09
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Problema con mt_rand()

Haz una funcion, si mt_rand tira 2 o el numero que especifiques, hazlo de nuevo.
  #7 (permalink)  
Antiguo 08/10/2008, 22:25
 
Fecha de Ingreso: julio-2008
Mensajes: 350
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Problema con mt_rand()

No me sale!!! algun ejemplo para pasarme?
  #8 (permalink)  
Antiguo 09/10/2008, 08:19
 
Fecha de Ingreso: julio-2008
Mensajes: 350
Antigüedad: 15 años, 9 meses
Puntos: 4
Pregunta Casi me sale, pero no, ayuda...

Hola otra vez, tengo un problemita, si se fijan en lo ultimo del codigo, coloque un while para que no repita lo que sale en la variable $aleatorio, pero se repite igual, que esta mal??? ayuda!!! gracias...

Código PHP:
<?
$dir
='favorites/'//El directorio local donde almacenas solo los archivos de texto 
if ($handle opendir($dir)) { 
    while (
false !== ($file readdir($handle))) { 
        if (!
is_dir($dir.$file) && $file != "." && $file != "..") { 
            
$archivos[]=substr(urlencode($file), 0strlen(urlencode($file))-4); 
        } 
    } 
    
closedir($handle); 


$aleatorio mt_rand(1count($archivos)-1); //ESTO NO QUIERO QUE SE REPITA
echo $archivos[$aleatorio];

while (
$aleatorio2 != $aleatorio) { //ACA ESTA EL PROBLEMA!!!
$aleatorio2 mt_rand(1count($archivos)-1);
}
echo 
$archivos[$aleatorio2];
?>
  #9 (permalink)  
Antiguo 09/10/2008, 08:55
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
Respuesta: Casi me sale, pero no, ayuda...

seria mas faci con do {} while();

do{
$aleatorio2 = mt_rand(1, count($archivos)-1);
}while ($aleatorio2 != $aleatorio); { //ACA ESTA EL PROBLEMA!!!
__________________
Degiovanni Emilio
developtus.com
  #10 (permalink)  
Antiguo 09/10/2008, 09:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Casi me sale, pero no, ayuda...

Temas unidos por favor no dupliques temas.
  #11 (permalink)  
Antiguo 10/10/2008, 22:20
Avatar de uselox  
Fecha de Ingreso: agosto-2008
Ubicación: Lima, Perú
Mensajes: 168
Antigüedad: 15 años, 7 meses
Puntos: 12
Respuesta: Ayuda, mostrar archivos aleatoriamente

Mas o menos asi creo supòniendo q son 10 elementos
Código PHP:
<?php
$num
[0]=0;
$num[1]=1;
$num[2]=2;
$num[3]=3;
$num[4]=4;
$num[5]=5;
$num[6]=6;
$num[7]=7;
$num[8]=8;
$num[9]=9;
//---
$cant=count($num);
//---
$files=$cant*5;
$random="";
for(
$i=0;$i<=$files;$i++)
{
  
$rand=mt_rand(0,$cant);
  
$random.=$num[$rand].",";
}
$_cad=substr($random,0,-1);
$_ar=explode(",",$_cad);
$cont=count($_ar)-1;
//---
$random2="";
$c=0;
for(
$i=0;$i<=$cont;$i++)
{
  
//echo "$i -> ".$_ar[$i]."<br>";
  
$posision=strpos($random2,$_ar[$i]);
  if(
$posision===false)
  {
    
$random2.=$_ar[$i];
  }
}
//---
echo $random2;
?>
arreglalo tal ves tenga algunos errores lo ise ala volada -.-
espero q te sirva lo ise solo por ayudarte y por kerer meterme a este reto
  #12 (permalink)  
Antiguo 13/10/2008, 10:56
Avatar de uselox  
Fecha de Ingreso: agosto-2008
Ubicación: Lima, Perú
Mensajes: 168
Antigüedad: 15 años, 7 meses
Puntos: 12
Respuesta: Ayuda, mostrar archivos aleatoriamente

Mas q esto No creo q aya -.-
Código PHP:
<?php
/*
   ********************************
   *             Created By RuzZ                     *
   *                Open Source                        *
   ********************************
                                  */
$dir='favorites/'
if (
$handle opendir($dir)) {
    while (
false !== ($file readdir($handle))) {
        if (!
is_dir($dir.$file) && $file != "." && $file != "..") {
            
$archivos[]=substr(urlencode($file), 0strlen(urlencode($file))-4);
        }
    }
    
closedir($handle);
}
/*|RuzZ And Paty|*/
$cantidad=count($archivos)-1;
for(
$i=0;$i<=$cantidad;$i++)$lenght+=strlen($archivos[$i].",");
$random="";
while(
$lenght!=strlen($random))
{
  for(
$i=0;$i<=$cantidad;$i++)
  {
    
$rand=mt_rand(0,$cantidad);
    
$posision=substr_count($random,$rand.",");
    if(
$posision==false)
    {
      
$random.=$archivos[$rand].",";
    }
  }
}
$cadena=substr($random,0,-1);
$aleatorio=explode(",",$cadena);//new array random elemments
//---
print_r($aleatorio);
?>
  #13 (permalink)  
Antiguo 18/10/2008, 09:54
Avatar de uselox  
Fecha de Ingreso: agosto-2008
Ubicación: Lima, Perú
Mensajes: 168
Antigüedad: 15 años, 7 meses
Puntos: 12
De acuerdo Respuesta: Ayuda, mostrar archivos aleatoriamente

Código PHP:
<?php 
/* 
   ******************************** 
   *        Created By RuzZ       * 
   *         Open Source          *  
   ******************************** 
                                  */ 
$dir='favorites/';  
if (
$handle opendir($dir)) { 
    while (
false !== ($file readdir($handle))) { 
        if (!
is_dir($dir.$file) && $file != "." && $file != "..") { 
            
$archivos[]=substr(urlencode($file), 0strlen(urlencode($file))-4); 
        } 
    } 
    
closedir($handle); 

/*|RuzZ And Paty|*/ 
$cantidad=count($archivos)-1
for(
$i=0;$i<=$cantidad;$i++)$lenght+=strlen($archivos[$i].","); 
$random=""
while(
$lenght!=strlen($random)) 

  for(
$i=0;$i<=$cantidad;$i++) 
  { 
    
$rand=mt_rand(0,$cantidad); 
//aca avia un peke error Compara con el anterior -.-
    
$posision=substr_count($random,$archivos[$rand].",");
    if(
$posision==false
    { 
      
$random.=$archivos[$rand].","
    } 
  } 

$cadena=substr($random,0,-1); 
$aleatorio=explode(",",$cadena);//new array random elemments 
//--- 
print_r($aleatorio); 
?>

Última edición por uselox; 26/11/2008 a las 23:06
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 01:02.