Foros del Web » Programando para Internet » PHP »

salida de datos aleatoria

Estas en el tema de salida de datos aleatoria en el foro de PHP en Foros del Web. Tengo una página con la salida de todos los datos de una BD. En un principio me salen siempre en el mismo orden, y puedo ...
  #1 (permalink)  
Antiguo 31/05/2003, 16:39
 
Fecha de Ingreso: julio-2002
Mensajes: 36
Antigüedad: 15 años, 4 meses
Puntos: 0
salida de datos aleatoria

Tengo una página con la salida de todos los datos de una BD. En un principio me salen siempre en el mismo orden, y puedo cambiar ese orden, pero quiero que salgan aleatoriamente. O sea, que unas veces salga un dato de primero, otras veces otro, vamos que se intercambien los datos en las diferentes veces que se carga la página, y sin ningún orden preestablecido. Si sería conveniente que si tengo 10 datos, en las 10 primeras cargas de la página, cada vez apareciera un dato en la primera posición.
Una ayuda por favor.
gracias de antemano
__________________
Viva la fiesta
Que los bytes te acompañen
  #2 (permalink)  
Antiguo 31/05/2003, 18:54
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 15 años, 4 meses
Puntos: 8
Código:
SELECT * FROM tabla ORDER BY Rand() LIMIT 10
el LIMIT 10 es el numero de filas que te devuelve.

Esto ordena la lista aleatoriamente, pero no te puede garantizar que las primeras 10 veces que se cargue la pagina el primer registro fuese diferente.

Para eso deberias usas sesiones, y el fin creo que no lo justifica.
Igual esto lo restondi aqui:
http://www.forosdelweb.com/showthrea...light=sesiones
Seria fácil de adaptar si creas un array con los resultados de la bd.

Saludos.
  #3 (permalink)  
Antiguo 31/05/2003, 19:57
 
Fecha de Ingreso: julio-2002
Mensajes: 36
Antigüedad: 15 años, 4 meses
Puntos: 0
No me va así:
$cons = "select * from `$seccion` ORDER BY Rand ()";

ni asi
$cons = "select * from `$seccion` ORDER BY Rand (1,100)";

ni asi
$cons = "select * from `$seccion` ORDER BY Rand ([1,100])";

¿que falla?


Ya me va.
Necesitaba acercar los paréntesis al rand

rand()

pero el orden en que me salen los registros es casi siempre el mismo. El shuffle no se donde ponerlo para que me desordene, ya que mi salida de datos es tal que:

Código PHP:
while ($fila=mysql_fetch_array($resultado))
    {

?>
     

<tr><td class="celda2bot" align=center width="20%" height="50"><a href="http://www.espaciocultural.org/index3.php?titulo=<?=$fila["ID"];?>&seccion=<?=$fila["seccion"];?>"><img border="0" src="imagenes/anuncios100/<?=$fila["foto"]; ?>" width="43" height="60"></A></td><td class="celda2" width="80%"><a class="enlacetit4" href="http://www.espaciocultural.org/index3.php?seccion=<?=$fila["seccion"];?>&titulo=<?=$fila["ID"];?>"><b><?= $fila["nombre"]; ?></b></a><BR><BR><font class="tit2"><?= $fila["titular"]; ?></font></td></tr>
<tr><td class="celda2" colspan="2"><font class="letras5" size=2><?= $fila["lead"]; ?></font></td></tr>
<tr><td class="celda2" colspan="2"><font class="minis2"> Fecha introducción:&nbsp;&nbsp;<b><?= $fila["fechaintro"]; ?></b>&nbsp;&nbsp;&nbsp;</font><font class="minis2">Introducida por:&nbsp;&nbsp;<b><?= $fila["intropor"]; ?></b></font></td></tr>
<tr><td class="celda3" colspan="2">&nbsp;</td></tr>


<?
    
}
?>
¿Como hacer para que la salida de datos se anime más desordenando los registros?
__________________
Viva la fiesta
Que los bytes te acompañen
  #4 (permalink)  
Antiguo 02/06/2003, 04:33
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 15 años, 4 meses
Puntos: 8
Por favor que alguien me corrija, pero:
Código:
SELECT * FROM tabla ORDER BY Rand() LIMIT 10
debería andar.

Y si dices que es casi siempre el mismo... entonces algo cambia.
Si prefieres aplicar shuffle() primero debes crear un array a partir de la consulta:
Código PHP:
while ($fila=mysql_fetch_array($resultado))
{
    
$array[] = $fila;
{
shuffle($array); 
y despues un foreach para la salida HTML.

Suerte!
  #5 (permalink)  
Antiguo 02/06/2003, 12:36
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 15 años, 10 meses
Puntos: 2
festeira en el query ese que haces usa
Código PHP:
OR DIE (mysql_error()); 
esto te devolvera el error de sintaxis en mysql o lo que ocurre

Saludos!
__________________
Lo que se hace por AMOR esta mas allá del BIEN y del MAL - Friedrich Nietzsche
http://www.hispanogeek.com.ar
Desarrollador IT -
  #6 (permalink)  
Antiguo 02/06/2003, 19:26
Avatar de festeiro  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 48
Antigüedad: 15 años
Puntos: 0
Gracias compañeros:
Fran86, si me va el rand ese, aunque hay un par de ellos que van de listillos y salen siempre en primeras posiciones. No sé, si es aleatorio, por estadística esos primerillos alguna vez serán ultimillos, ¿o no?. Me sirve, pero no me gustan los primerillos. Voy con el shhufle ese.
fmmenson, gracias por el consejo, ya me lo habían comentado antes y es muy útil. Es una recomendación para cualquiera que haga una query.
saludos
__________________
Salud y forza
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 05:47.