Datenbankabfrage durchnummerieren

  • Hey,

    ich versuche gerade in PHP mit Hilfe von Smarty eine Statistik aufzulisten. Mein PHP Code dazu lautet:

    Code
    $stats = array();
    $select = mysql_query("SELECT username, points FROM users");
    while($row = mysql_fetch_array($select)){
    	$stats[] = $row;
    }
    $smarty->assign('stats', $stats);

    In der .tpl Datei gebe ich das so aus:

    Code
    <table>
    <thead><tr><td>Rang</td><td>Spieler</td><td>Punktzahl</td></tr></thead>
    {foreach from=$stats item=i}
    	<tr><td>{$i}</td><td>{$i.username}</td><td>{$i.points}</td></tr>
    {/foreach}
    </table>

    Nun zu meinem Problem: Ich möchte jedem User einen Rang zuweisen. Eigentlich müsste ich ja nur die Abfrage nach dem Punkten sortieren und einer fiktiven Variable $i einen Zähler addieren. Dann wäre der erste User (1, da: $i = 1), der zweite User (2, da $i+ 1) usw.

    Wie kann ich das nur in meinem Fall realisieren? In der Template Datei foreach Schleife kann ich das ja nicht machen.

    Ich hoffe ihr versteht mich ;)

    Vielen Dank!

  • PHP
    $stats = array();
    $select = mysql_query("SELECT username, points FROM users order by points desc");
    $rang = 1;
    while($row = mysql_fetch_array($select))
    {
        $row['rang'] = $rang++;
        $stats[] = $row;
    }
    $smarty->assign('stats', $stats);
    PHP
    <table>
    <thead><tr><td>Rang</td><td>Spieler</td><td>Punktzahl</td></tr></thead>
    {foreach from=$stats item=i}
     <tr><td>{$i.rang}</td><td>{$i.username}</td><td>{$i.points}</td></tr>
    {/foreach}
    </table>