Foros del Web » Programando para Internet » PHP »

Llenar un array y seleccionar aleatorio

Estas en el tema de Llenar un array y seleccionar aleatorio en el foro de PHP en Foros del Web. Hola. Tengo un problema que seguro que es una chorrada pero no tengo ni idea de como hacerlo... Tengo que llenar un array de numeros ...
  #1 (permalink)  
Antiguo 26/08/2012, 07:11
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años
Puntos: 2
Exclamación Llenar un array y seleccionar aleatorio

Hola.
Tengo un problema que seguro que es una chorrada pero no tengo ni idea de como hacerlo...

Tengo que llenar un array de numeros "de registro" y luego seleccionar uno aleatoriamente del array para operar con el.... Como lo hago??

Se cuantos elementos tiene el array por que es un select a la base de datos, luego en todo momento se cuantos numeros voy a tener para elegir entre ellos...

Pero no se ni como llenar el array ni como sacar uno aleatorio para luego hacer un select de ese numero y operar sobre ese numero (ID).

Alguien puede ayudarme con el tema arrays y a hacer esto??? Se lo agradeceria mucho.

Un saludo y gracias!!!
  #2 (permalink)  
Antiguo 26/08/2012, 08:22
Avatar de antoniopol  
Fecha de Ingreso: agosto-2012
Ubicación: Valladolid
Mensajes: 114
Antigüedad: 11 años, 8 meses
Puntos: 21
Respuesta: Llenar un array y seleccionar aleatorio

Espero que esto te pueda servir:

Primero llenaría el array de la siguiente forma
Código PHP:
Ver original
  1. $contador=0;
  2. while($registro=mysql_fetch_array($sql))
  3. {
  4. $numeros[$contador]=$registro["id"];
  5. $contador++;
  6. }

Una vez hecho esto, los índices del array estarán numerados del 0 a X, dónde X es él numero de elementos del array menos 1, para saber el numero de elementos es de la siguiente forma

Código PHP:
Ver original
  1. $elementos=sizeof($numeros)-1;

Por ultimo creamos el número aleatorio y lo usamos como índice del array
Código PHP:
Ver original
  1. srand (time());//para generar aleatorios
  2. $aleatorio = rand(0,$elementos);
  3. echo $numeros[$aleatorio];

Espero que sea esto lo que esta buscando.
__________________
>> Blog de desarrollo web.
>> @antoniopol06 amante de la Web =D
  #3 (permalink)  
Antiguo 27/08/2012, 07:31
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años
Puntos: 2
Exclamación Respuesta: Llenar un array y seleccionar aleatorio

Hola.
He hecho lo que me has dicho:
Código PHP:
$cadena="SELECT * FROM tabla WHERE (TIPO='2')";

$result=mysql_query($cadena) or die(mysql_error());

$totalreg=mysql_num_rows($result);

echo 
"Registros detectados: $totalreg<br>";

$contador=0;
while ( 
$registro=mysql_fetch_array($cadena) )
    {
    
$numeros[$contador]=$registro["ID"];
    
$contador++;
    }
    
    
$elementos=sizeof($numeros)-1;
    
//depuracion
    
echo "Elementos de array: $elementos<br>";

srandtime() );
$aleatorio=rand(0$elementos);
echo  
$numeros[$aleatorio]; 
Y me sale esto:
Cita:
Registros detectados: 66
Elementos de array: -1
Por lo que me da la sensacion de que no pasa el array.
Sabes por que??

Muchas gracias!!
  #4 (permalink)  
Antiguo 27/08/2012, 08:04
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: Llenar un array y seleccionar aleatorio

Sólo un apunte, creo que te resultaría más fácil usar el RAND que tiene el propio MySQL:

Ejemplo:
"SELECT * FROM persona ORDER BY rand() LIMIT 1"
Nos devolvería un registro aleatorio de la tabla persona

Además ahorrarías pasos
  #5 (permalink)  
Antiguo 27/08/2012, 08:22
Avatar de antoniopol  
Fecha de Ingreso: agosto-2012
Ubicación: Valladolid
Mensajes: 114
Antigüedad: 11 años, 8 meses
Puntos: 21
Respuesta: Llenar un array y seleccionar aleatorio

Te funcionaría perfectamente lo que te dice alyciashape, pero si los quieres almacenar en tu código hay una errata:

No es $cadena lo que tienes que enviarle como parametro a mysql_fetch_array sino $result, por eso te aparece como que no entra ninguna vez, 0 elementos y luego te resta uno, por eso aparece -1.
Código PHP:
Ver original
  1. while ( $registro=mysql_fetch_array($result) )
  2.     {
  3.     $numeros[$contador]=$registro["ID"];
  4.     $contador++;
  5.     }

Si solo vas a mostrar un elemento y no necesitas almacenarlo en un array la mejor posibilidad es la que dice alyciashape que en ese momento no había caido de todas maneras prueba el código
__________________
>> Blog de desarrollo web.
>> @antoniopol06 amante de la Web =D
  #6 (permalink)  
Antiguo 27/08/2012, 08:42
 
Fecha de Ingreso: abril-2011
Mensajes: 99
Antigüedad: 13 años
Puntos: 2
Respuesta: Llenar un array y seleccionar aleatorio

Perfecto.!!
Muchisimas gracias..!!

Lo voy a usar un monton de veces...
No he probado lo del select rand, pero lo hare. De momento con el array funciona perfectamente!!!

Gracias de nuevo.
Siempre se aprende de los maestros...

un saludo.

Etiquetas: registro, aleatoria
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 21:32.