Ver Mensaje Individual
  #8 (permalink)  
Antiguo 08/02/2010, 17:57
Avatar de CHuLoSoY
CHuLoSoY
 
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: Ordenar entradas de un blog por votos y comentari

Hola amigos, me ha surgido un problema. Cómo puedo hacer el rsort() sin que me cambie los índices del array? En los índices designo el ID de la entrada. Si le añado un elemento más al array se complica la ordenación.

Saludos

EDITO:
Ya está, encontré la funcion arsort() que funciona como rsort() [igual que asort() como sort()] que mantiene los índices del array. Al final:

Código PHP:
Ver original
  1. $con=mysql_connect($dbserver,$dbuser,$dbpass);
  2. mysql_select_db($db,$con);
  3.  
  4. $sql="SELECT * FROM entradas";
  5. $rs=mysql_query($sql,$con) or die ("Error.   ". mysql_error());
  6.  
  7.  
  8.     while($fila=mysql_fetch_array($rs)) {
  9.         $sq2l="SELECT * FROM votos WHERE entrada=".$fila['id'];
  10.         $r=mysql_query($sq2l,$con) or die ("Error.  ". mysql_error());
  11.             $totlvots=mysql_num_rows($r);
  12.             $vots=0;
  13.             while($cosillas=mysql_fetch_array($r)) {
  14.                 $vots=$vots+$cosillas['calificacion'];
  15.             }
  16.             $media=$vots/$totlvots;
  17.            
  18.             $elementos[$fila['id']]=$media;
  19.         mysql_free_result($r);
  20.     }
  21.  
  22.  
  23. arsort($elementos);
  24.  
  25. $i=0; //vamos a controlar hasta llegar a cinco
  26.  
  27. foreach($elementos as $clave=>$valor) {
  28.  $i++; //sumamos uno
  29.  
  30.     echo $clave ." =&gt; ".$valor." puntos<br>";
  31. /* Esto imprime:
  32. 58 => 5 puntos
  33. 52 => 4.235222 puntos
  34. 43 => 4.222222 puntos
  35. 64 => 4 puntos
  36. 59 => 3.777777 puntos
  37. */
  38.     if($i==5) { break; } //Sólo muestro los cinco resultados más votados
  39. }

Saludos y gracias a todos.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.

Última edición por CHuLoSoY; 08/02/2010 a las 19:18