Foros del Web » Programando para Internet » PHP »

problema con script al azar

Estas en el tema de problema con script al azar en el foro de PHP en Foros del Web. Código PHP: $getimg = mysql_query ( "SELECT * FROM imagenes" ); while( $row  =  mysql_fetch_array ( $getimg )){        $array_values [] =  $getimg [ "id" ]; }  $random_id  =  ...
  #1 (permalink)  
Antiguo 04/02/2008, 12:51
 
Fecha de Ingreso: diciembre-2005
Mensajes: 249
Antigüedad: 18 años, 3 meses
Puntos: 0
problema con script al azar

Código PHP:
$getimg=mysql_query("SELECT * FROM imagenes");
while(
$row mysql_fetch_array($getimg)){
      
$array_values[] = $getimg["id"];

$random_id array_rand($array_values); 
$imagenfinal=mysql_fetch_array(mysql_query("SELECT * FROM imagenes WHERE id = '".$random_id."'"));
 
  echo 
'<a href="javascript:foto(\''.$imagenfinal["link"].'\')">';
  echo 
"
  <img border='0' src='"
.$imagenfinal['link']."' width='170' height='158'>
  </a>
  "

tengo ese script, el problema es que si tengo 2 contenidos insertados en la base de datos para dar un ejemplo... solo me muestra aveces eln umero 1 y a veces obtiene un random id numero 0 por lo cual muestra una imagenrota...

no entiendo que pasa... si me pueden ayudar les agradesco!
  #2 (permalink)  
Antiguo 04/02/2008, 13:08
Avatar de xhiena  
Fecha de Ingreso: enero-2008
Ubicación: Valencia
Mensajes: 34
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: problema con script al azar

array_rand saca el random de los indices de un array

es decir, si tienes 3 elementos en el array hará un random de 0,1,2 , refiriendose al indice del array.

para que te vaya bien puedes hacer 2 cosas,:
1.- montar el array como lo haces pero en vez de con las id, con los link
y mostar el $array_values[$random_id]
y asi de paso te evitas otra consulta a la base de datos.

2.- sin tocar tu codigo, en la segunda sql :
where id='".$array_values[$random_id]."' y te funcionará, pero te recomiendo la opcion 1
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 12:14.