Rekenen in MySQL, teller bij while
Het betreffende stukje script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?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>
';
}
?>
$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>
';
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Nick Mulder
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.
Over de aliassen: dacht dat dat moest bij mysql_fetch_object()
Maar hoe zit dat tellertje in elkaar dan...?
Quote:
Teller gelukt:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?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
?>
$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
Gewijzigd op 01/01/1970 01:00:00 door Nick Mulder
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
SELECT
COUNT(id),
(SUM(score) + SUM(ietsander)) AS totaal,
(SUM(score) + SUM(ietsander)) / COUNT(id) as mijngemiddelde
FROM
jouwtabel
GROUP BY id
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
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?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>
';
}
}
?>
$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>
';
}
}
?>