Foros del Web » Programando para Internet » PHP »

problema con obtener contenido al azar

Estas en el tema de problema con obtener contenido al azar en el foro de PHP en Foros del Web. aca esta mi codigo: Código PHP: $getimg = mysql_query ( "SELECT * FROM imagenes" ); $rd2  =  rand  ( 0 ,  mysql_num_rows ( $getimg )); $array  =  mysql_fetch_array ...
  #1 (permalink)  
Antiguo 29/05/2007, 18:07
 
Fecha de Ingreso: diciembre-2005
Mensajes: 249
Antigüedad: 18 años, 3 meses
Puntos: 0
problema con obtener contenido al azar

aca esta mi codigo:

Código PHP:
$getimg=mysql_query("SELECT * FROM imagenes");
$rd2 rand (0mysql_num_rows($getimg));
$array mysql_fetch_array($getimg);
$imagenfinal=mysql_fetch_array(mysql_query("SELECT * FROM imagenes WHERE id = '".$rd2."'"));
 
  echo 
'<a href="javascript:foto(\''.$imagenfinal["link"].'\')">';
  echo 
"
  <img border='0' src='"
.$imagenfinal['link']."' width='170' height='158'>
  </a>
  "

el problema es que por ej hay ids q no existen y aveces no me devuelve nada por eso, tienen idea de como puedo solucionar eso???

saludos
  #2 (permalink)  
Antiguo 29/05/2007, 18:33
 
Fecha de Ingreso: abril-2007
Mensajes: 144
Antigüedad: 17 años
Puntos: 4
Re: problema con obtener contenido al azar

Prueba esto:

Código PHP:
$imagenes mysql_query("SELECT COUNT(*) FROM imagenes");
$sql "SELECT * FROM imagenes WHERE id = '".rand$imagenes-)."'"

$imagenfinal=mysql_fetch_array(mysql_query($sql)); 
  
  echo 
'<a href="javascript:foto(\''.$imagenfinal["link"].'\')">'
  echo 

  <img border='0' src='"
.$imagenfinal['link']."' width='170' height='158'> 
  </a> 
  "

Esto deberia funcionarte, siempre y cuando todas las imagenes tengan un id que comience en 0 y sean correlativos. Lo mejor es definir en mysql el id como un campo autoincremental.
  #3 (permalink)  
Antiguo 29/05/2007, 19:41
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
Re: problema con obtener contenido al azar

Es mejor si usas:
Código PHP:
$sql "SELECT * FROM imagenes ORDER BY RAND() LIMIT 1"
  #4 (permalink)  
Antiguo 29/05/2007, 23:50
 
Fecha de Ingreso: diciembre-2005
Mensajes: 249
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: problema con obtener contenido al azar

Cita:
Iniciado por GatorV Ver Mensaje
Es mejor si usas:
Código PHP:
$sql "SELECT * FROM imagenes ORDER BY RAND() LIMIT 1"
me dijeron de eso, pero me dijeron que cuando tienes muchas filas se pone lento.
  #5 (permalink)  
Antiguo 22/08/2007, 21:24
 
Fecha de Ingreso: agosto-2007
Mensajes: 3
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: problema con obtener contenido al azar

Código PHP:
//Yo hice algo bastante óptimo es lo siguiente:

$sSQL ="SELECT id FROM tabla LIMIT 30";  

/*Por ejemplo con un limite de 30 y el ORDER BY podria ayudar*/

$rs mysql_query($sSQL);

while(
$row mysql_fetch_array($rs)){
      
$array_values[] = $row["id"];
}

//hay una funcion de php que te devuelve una posion al azar de un array
$random_id array_rand($array_values);

//entonces ahora solo hago un select de este valor, 

$sSql ="SELECT * FROM tabla WHERE id=".$random_id;

.... 
  #6 (permalink)  
Antiguo 22/08/2007, 21:28
 
Fecha de Ingreso: agosto-2007
Mensajes: 3
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: problema con obtener contenido al azar

Me olvide que no importaria si borraste algun id en el medio digamos, que no sean consecutivos, ya que en el array_values tenes los id de los datos que hay en la tabla y el radom es solo de una posicion del array, que representa un valor de los resultados y entonces el random es en php y no dentro del sql. Espero que les sirva. Yo lo estoy usando y por ahora me da buen resultado.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:54.