Foros del Web » Programando para Internet » PHP »

Obtener un campo aleatoriamente de una bd

Estas en el tema de Obtener un campo aleatoriamente de una bd en el foro de PHP en Foros del Web. Hola a todos: Soy un novato tanto en el foro como en php y tengo el siguiente problema: Tengo una base de datos en la ...
  #1 (permalink)  
Antiguo 04/04/2006, 08:26
 
Fecha de Ingreso: abril-2006
Mensajes: 12
Antigüedad: 18 años
Puntos: 0
Obtener un campo aleatoriamente de una bd

Hola a todos:
Soy un novato tanto en el foro como en php y tengo el siguiente problema:
Tengo una base de datos en la que entre otras cosas tengo una tabla compuesta por varios campos, uno de los cuales es una lista de palabras.
¿cómo hago para obtener solamente una de estas palabras de manera aleatoria?
Gracias por adelantado.
  #2 (permalink)  
Antiguo 04/04/2006, 08:42
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
trae la lista de palabras de la BD y luego haz un algoritmo que seleccione una de ellas en forma aleatoria
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #3 (permalink)  
Antiguo 04/04/2006, 08:51
jpeeri
Invitado
 
Mensajes: n/a
Puntos:
TolaWare, no sería mejor que le añadiese un campo llamado id y lo hiciese autonumérico y por medio de rand() obtuviese un nº aleatorio?

Un Saludo

PD: Voy a intentar hacerte el script
  #4 (permalink)  
Antiguo 05/04/2006, 06:15
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
el problema es que si el algoritmo rand te genera un id que no existe, tendras que hacer 2 accesos a la base de datos, o 3o 4 hasta que encuentres uno que exista. Si trae la lista de palabras, tendras solo un acceso a la BD.
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #5 (permalink)  
Antiguo 05/04/2006, 10:23
 
Fecha de Ingreso: abril-2006
Mensajes: 12
Antigüedad: 18 años
Puntos: 0
Gracias a Tolaware y a jpeeri. Ya he advertido que soy bastante novato en esto. He hecho lo siguiente

$resultado= mysql_query("SELECT Palabra FROM $tabla WHERE (Genero='Masculino') ",$c);
while ($row=mysql_fetch_array($resultado)){
$palabra=$row['Palabra'];
mt_srand((double)microtime()*1000000);
mt_rand();
echo $nominativo;

Evidentemente me saca todas las palabras que tengo en mi tabla y no una sola aleatoriamente. No sé ya cómo hacerlo.
Gracias por anticipado
  #6 (permalink)  
Antiguo 05/04/2006, 10:29
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
de nada amigo
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
  #7 (permalink)  
Antiguo 08/04/2006, 03:05
 
Fecha de Ingreso: abril-2006
Mensajes: 12
Antigüedad: 18 años
Puntos: 0
Al final, después de mirar en muchos sitios encontré una buena solución.

$query=mysql_query("SELECT Palabra FROM $tabla ORDER BY RAND() LIMIT 0,1");
while ($campo=mysql_fetch_array($query)){
echo $campo["Palabra"];
}
Espero que pueda servir a alguien
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:53.