Ik ben bezig met het schrijven van een spel, bij dit spel zitten ook highscores, deze worden uit de database gehaald en met een while loop weergegeven, nu wil ik dat het script ook het rank nummer er zelf bij zet (staat niet in database)
Het betreffende stukje script:

<?php
$query = "
    SELECT
	username AS username,
	status AS status,
	werknemers AS werknemers,
	vertrouwen AS vertrouwen,
	category AS category,
	score AS score,
	pand AS pand,
	lvl AS lvl
	FROM users
	ORDER BY score DESC
	";
$highscores_run = mysql_query($query) or die(mysql_error());
while($highscores = mysql_fetch_object($highscores_run)){
$calc = (($highscores->status * 3) * ($highscores->vertrouwen * 2) + ($highscores->status * 3) * ($highscores->werknemers / 6) + ($highscores->vertrouwen * 2) * ($highscores->werknemers / 8)) * ($highscores->pand * $highscores->lvl);
$update = "UPDATE `users` SET `score` = '".$calc."' WHERE username='".$highscores->username."'";
$update_run = mysql_query($update) or die(mysql_error());
echo'
    <tr>
      <td width="50" class="highscore-table"></td>
      <td width="100" class="highscore-table">'.$highscores->username.'</td>
      <td class="highscore-table">'.$highscores->status.'%</td>
      <td class="highscore-table">'.$highscores->werknemers.'</td>
      <td class="highscore-table">'.$highscores->vertrouwen.'%</td>
      <td class="highscore-table">'.$highscores->category.'</td>
      <td class="highscore-table"><a href="">PM</a></td>
      <td class="highscore-table"><a href="">Profiel</a></td>
    </tr>
	';
}
?>
off-topic: Waarom geef je elke kolomnaam een alias die precies hetzelfde is de kolomnaam? Dat is nergens voor nodig en zal op den duur alleen maar problemen opleveren. Gebruik aliassen alleen als je het ook daadwerkelijk nodig hebt zoals bijvoorbeeld tijdens het berekenen van een resultaat.

Daarnaast kun je de berekening natuurlijk ook gewoon in de database zelf uitvoeren. Met mysql kun je net zo goed (zelfs beter) rekenen als met php.

Voordeel is dat je dan in de database kunt sorteren op de score en aan de hand daarvan de rank kunt bepalen. Je kunt dan vervolgens gewoon een tellertje mee laten lopen met de while loop waarin je de gegevens uitleest, die de huidige rank gaat weergeven.
In de query rekenen lukte me niet...
Over de aliassen: dacht dat dat moest bij mysql_fetch_object()
Maar hoe zit dat tellertje in elkaar dan...?

Teller gelukt:

<?php
$i = 0; //defineer $i als 0
$i++; //tel 1 bij $i op (gelijk defineren als 1 gaat niet?)
while($i < mysql_num_rows($highscores_run)){ //begin counter loop
    //hier de oude while loop (dus 2 while loops in elkaar)
} //eind counter loop
?>



Nu het rekenen in MySQL nog
Kan iemand mij uitleggen hoe ik precies moet rekenen in MySQL? (Voorbeeldje?)

*BUMP*

SELECT 
     COUNT(id),
     (SUM(score) + SUM(ietsander)) AS totaal, 
     (SUM(score) + SUM(ietsander)) / COUNT(id) as mijngemiddelde 
FROM 
    jouwtabel
GROUP BY id


dat is een voorbeel en er kan nog veel meer
Ok bedankt, het werkt nu geloof ik =)


<?php
$query = "
    SELECT
	username,
	status,
	werknemers,
	vertrouwen,
	category,
    ((status * 3) * (vertrouwen * 2) + (status * 3) * (werknemers / 6) + (vertrouwen * 2) * (werknemers / 8)) * (pand * lvl) AS score, 
	pand,
	id,
	lvl
	FROM users
	ORDER BY score DESC
	";
$highscores_run = mysql_query($query) or die(mysql_error());
$i = 0;
$i++;
while($i < mysql_num_rows($highscores_run)){
while($highscores = mysql_fetch_object($highscores_run)){
echo'
    <tr>
      <td width="50" class="highscore-table">'.$i++.'</td>
      <td width="100" class="highscore-table">'.$highscores->username.'</td>
      <td class="highscore-table">'.$highscores->status.'%</td>
      <td class="highscore-table">'.$highscores->werknemers.'</td>
      <td class="highscore-table">'.$highscores->vertrouwen.'%</td>
      <td class="highscore-table">'.$highscores->category.'</td>
	  <td class="highscore-table">'.$highscores->lvl.'</td>
      <td class="highscore-table"><a href="pm.php?to='.urlencode($highscores->username).'">PM</a></td>
      <td class="highscore-table"><a href="profiel.php?id='.$highscores->id.'">Profiel</a></td>
    </tr>
	';
}
}
?>

Reageren