PHP - ¿por que rand me funciona y mt_rand no?

 
Vista:

¿por que rand me funciona y mt_rand no?

Publicado por santiago herrera jimenez (185 intervenciones) el 11/05/2012 19:23:57
Hola amigos tengo el siguiente codigo que utilizo la funcion rand para dar imagenes aleatorias

"hola xve ;-) ", pero he leido que la funcion mt_rand() es mas rapida que rand .

La cuestion es que con rand veo las imagenes aleatorias pero cuando pongo mt_rand no me va ,

que puede ser lo que esta fallando?

<?php

$sql = mysql_query("SELECT id,img FROM productos ORDER BY mt_rand() LIMIT 2",$link);

if (mysql_num_rows($sql) > 0)

{

while($row = mysql_fetch_array($sql))

$id=($var_imagen = $row['id']).($var_imagen = $row['img']);


echo "<img src = '$var_imagen' style='width:65px'/>";

}

?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

¿por que rand me funciona y mt_rand no?

Publicado por xve (6935 intervenciones) el 12/05/2012 12:49:34
Hola Santiago, si revisas la documentación de MySQL, veras que la instrucción mt_rand() es de php, no de MySQL, por eso no te funciona. Sigue utilizando RAND() para MySQL.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿por que rand me funciona y mt_rand no?

Publicado por santiago herrera jimenez (185 intervenciones) el 12/05/2012 14:56:00
Hola xve, mira he conseguido que funcione mt_rand de esta manera que te pongo que segun he leido es mas rapida ha la hora de ejecutarse que el rand de siempre.

y ya de paso comparto contigo y con todos esta solucion que aporto:

<?php

$sql = mysql_query("SELECT count(*) FROM productos");
$selecciona_fila = mysql_fetch_row($sql);
$rand = mt_rand(0,$selecciona_fila[0] - 1);
$sql = mysql_query("SELECT id,img FROM productos LIMIT $rand, 1");



if (mysql_num_rows($sql) > 0)

{

while($row = mysql_fetch_array($sql))

$id=($var_imagen = $row['id']).($var_imagen = $row['img']);


echo "<img src = '$var_imagen' style='width:65px'/>";

}
?>


Pero ya aparte de esto e observado ( ya siendo fino ,fino), que tengo una fila de imagenes una al lado de la otra cambiando de manera aleatoria cada 10 segundos aproximadamente haciendo un face en cada cambio de cada imagen .

La historia esta que pasados, nose, media hora mas o menos, se descoordina la aplicacion llegando primero ha hacer el face de las imagenes ( apareciendo otra vez las mismas fotos) y cuando ya han aparecido, de sopeton entonces cambian por otras aleatorias.

No se si me he explicado bien ....

¿ que puedo hacer para que no se descoordine ? es ya de lo poquico que me falta para acabar la aplicacion.

gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

¿por que rand me funciona y mt_rand no?

Publicado por xve (6935 intervenciones) el 12/05/2012 18:46:29
Hola Santiago, te agradezco mucho que nos lo hayas mostrado, pero a mi modo de ver no es correcto... te cuento...

De la manera que tu lo has realizado, le indicas a MySQL que te devuelva todos los registros que cumplen con la condición, y luego de todos los que te ha devuelve hace tu el random desde php. Es mucho mas óptimo, que el random lo realice el mismo MySQL, ya que de esta manera, trabaja menos MySQL y PHP, siendo el código mas óptimo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿por que rand me funciona y mt_rand no?

Publicado por santiago herrera jimenez (185 intervenciones) el 12/05/2012 19:17:42
Hola xve, de nuevo, veras como te habras dado cuenta aunque estoy tan habido por saber de php y cargado de buenas intenciones, soy novato en esto de php.

Dicho de otro modo ¿lo que dices es que lo deje como en el anterior codigo que puse? osea con rand no con mt_rand?

es que lei que la funcion mt_rand era mas rapida que rand normal.

lo dejo entonces como estaba?¿

por cierto te paso el enlace de donde lo lei ( es el apartado 6 )

http://todounblog.com.ar/tips-para-mysql-buenos-usos/

y una cosa mas, si no es mucha molestia, emm que significado tiene LIMIT 2 o LIMIT "numero x"en el rand que hace exactamate ?¿
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

¿por que rand me funciona y mt_rand no?

Publicado por xve (6935 intervenciones) el 13/05/2012 10:14:30
Hola Santiago, intento explicarte... MySQL unicamente tiene una funcion rand() y php tiene dos, rand() y mt_rand().
La función rand() de MySQL no tiene nada que ver con la instrucción rand() de php.

Si necesitas un numero aleatorio de MySQL utiliza el rand() de MySQL. Si necesitas un numero aleatorio en php utiliza el rand() de php.

En esta instrucción, estas utilizando el rand() de MySQL:
"SELECT id,img FROM productos ORDER BY mt_rand() LIMIT 2"

LIMIT indica el numero de registros a devolver por MySQL

Espero que te haya quedado claro...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿por que rand me funciona y mt_rand no?

Publicado por santiago herrera jimenez (185 intervenciones) el 14/05/2012 12:13:09
Hola xve, gracias por explicarmelo todo tambien, ahora lo entiendo mas claramente.

Ojala pronto pueda aportar a esta comunidad algo de lo que humildemente se, por que esta lwp es muy constructiva.


Solo tengo un cabo suelto que te puse en un post anterior (corto y pego la duda valep):

""he observado ( ya siendo fino ,fino), que tengo una fila de imagenes una al lado de la otra cambiando de manera aleatoria cada 10 segundos aproximadamente haciendo un face en cada cambio de cada imagen .

La historia esta que pasados, nose, media hora mas o menos, se descoordina la aplicacion llegando primero ha hacer el face de las imagenes ( apareciendo otra vez las mismas fotos) y cuando ya han aparecido, de sopeton entonces cambian por otras aleatorias.

No se si me he explicado bien ....

¿ que puedo hacer para que no se descoordine ? es ya de lo poquico que me falta para acabar la aplicacion. ""

gracias por tanta ayuda ;-)

gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar