una importante aclaracion... el uso de
mysql_fetch_assoc no fue la solucion a tu problema. Bien pudiste haber usado
mysql_fetch_array y el resultado era el mismo...
mysql_fetch_array tiene un segundo parametro opcional:
mysql_fetch_array ( int id_resultado [, int tipo_de_resultado] )
tipo_de_resultado puede ser MYSQL_ASSOC, MYSQL_NUM, y MYSQL_BOTH...
- mysql_fetch_array($query,'MYSQL_ASSOC'); te devolvera un array que tendra como indices solo los nombres de las columnas de la tabla. Colocar ese parametro es como usar mysql_fetch_assoc($query);
- mysql_fetch_array($query,'MYSQL_NUM'); te devolvera un array que tendra como indices un numero relativo a la columna que refiere, empezando de cero para la primera columna, 1 para la segunda y asi sucesivamente. Es igual a mysql_fetch_num($query);
- mysql_fetch_array($query,'MYSQL_BOTH'); te devuelve tanto indices asociativos como numericos, es decir las dos anteriores juntas, y es este el valor que el segundo parametro trae por defecto.
Use esta funcion porque veo que trabajas con indices asociativos, y no requieres de los indices numericos. mysql_fetch_assoc consume menos recursos que mysql_fetch_array.
Te sugiero revises el manual de php.net para estas funciones:
http://www.php.net/mysql_fetch_array http://www.php.net/mysql_fetch_assoc http://www.php.net/mysql_fetch_row
Lo que en relidad soluciono tu problema es el uso de la variable $i que se incrementa en 1 por cada bucle del while, asi te dara el orden que deseas.
Ahora, hablando de un menor consumo de recursos por parte del servidor, a mi tambien me vale la aclaracion de
JorgitoAlfajor, la verdad siempre me pregunte como detener el while una vez que se cumplia cierta condicion, pero nunca me preocupe en buscar sobre eso, gracias
JorgitoAlfajor.
Suerte