Pero hombre , dinos al menos que es lo que sale.......
Aunque asi de primeras el bucle WHILE no debe empezar antes de <table> sino despues, es decir, mas o menos asi:
Código PHP:
<table width="800" border="0" cellspacing="0" cellpadding="0">
<?
while($rank_result = mysql_fetch_assoc($rank)){
?>
<tr>
<td <?php echo fondo($i); ?>><?php echo $rank_result['nombre']; ?></td>
<td<?php echo fondo($i); ?>><?php echo $rank_result['puntos_ac']; ?></td>
</tr>
<? } ?>
</table>
¿Entiendes? Una fila <tr>.....</tr> por cada vuelta al bucle...
Tambien te recomiendo usar
mysql_fetch_array en vez del
mysql_fetch_assoc