Order BY
Je hebt dit
Speler 1:
wedstrijden verloren: 1 -> Dit is veld in DB
wedstrijden gelijk: 2 -> Dit is veld in DB
wedstrijden gewonnen: 1 -> Dit is veld in DB
totaal wedstrijden: 4 -> Dit is GEEN veld in DB!
Speler 2:
wedstrijden verloren: 2 -> Dit is veld in DB
wedstrijden gelijk: 2 -> Dit is veld in DB
wedstrijden gewonnen: 1 -> Dit is veld in DB
totaal wedstrijden: 5-> Dit is GEEN veld in DB!
Nu wil ik dus een top (10) van de meeste wedstrijden van alle gebruikers.
Hoe doe ik dit?
BvD!
-----------------------------------------------------------------
Ik heb volgende code:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$dbreshoi = mysql_query("SELECT *,DATE_FORMAT(`speeldatum`,'%d-%m-%y %H:%i') AS `speeldatum` FROM `ssp` WHERE `gespeeld`='1' ORDER BY `bedrag` DESC LIMIT 10");
while($helpdesk = mysql_fetch_object($dbreshoi)) {
$opdracht = "<a href=\"../profile.php?x=$helpdesk->begunstigde\">$helpdesk->begunstigde</a>";
$bedrag = number_format($helpdesk->bedrag);
$gestartdoor = "<a href=\"../profile.php?x=$helpdesk->gestartdoor\">$helpdesk->gestartdoor</a>";
$gespeelddoor = "<a href=\"../profile.php?x=$helpdesk->gespeelddoor\">$helpdesk->gespeelddoor</a>";
if($helpdesk->winnaar == $mijnnaam){
$richting = "<font color=\"green\">Gewonnen</font>";
}
elseif($helpdesk->winnaar == "xx10394"){
$richting = "Gelijkspel";
}
elseif($helpdesk->winnaar == ""){
$richting = "<s>Ongespeeld</s>";
}
else {
$richting = "<font color=\"red\">Verloren</font>";
}
echo "<tr class=\"inhoud\"><td><center>$$bedrag</td><td><center>$helpdesk->speeldatum</td><td><center>$gestartdoor</td><td><center>$gespeelddoor</td></tr>";
}
?>
$dbreshoi = mysql_query("SELECT *,DATE_FORMAT(`speeldatum`,'%d-%m-%y %H:%i') AS `speeldatum` FROM `ssp` WHERE `gespeeld`='1' ORDER BY `bedrag` DESC LIMIT 10");
while($helpdesk = mysql_fetch_object($dbreshoi)) {
$opdracht = "<a href=\"../profile.php?x=$helpdesk->begunstigde\">$helpdesk->begunstigde</a>";
$bedrag = number_format($helpdesk->bedrag);
$gestartdoor = "<a href=\"../profile.php?x=$helpdesk->gestartdoor\">$helpdesk->gestartdoor</a>";
$gespeelddoor = "<a href=\"../profile.php?x=$helpdesk->gespeelddoor\">$helpdesk->gespeelddoor</a>";
if($helpdesk->winnaar == $mijnnaam){
$richting = "<font color=\"green\">Gewonnen</font>";
}
elseif($helpdesk->winnaar == "xx10394"){
$richting = "Gelijkspel";
}
elseif($helpdesk->winnaar == ""){
$richting = "<s>Ongespeeld</s>";
}
else {
$richting = "<font color=\"red\">Verloren</font>";
}
echo "<tr class=\"inhoud\"><td><center>$$bedrag</td><td><center>$helpdesk->speeldatum</td><td><center>$gestartdoor</td><td><center>$gespeelddoor</td></tr>";
}
?>
En dit is het resultaat...
Mijn ORDER BY doet het niet helemaal goed zoals je ziet.
In de DB staat het als 777777777 en niets als 7,777,777... voor alle duidelijkheid. Is het misschien ivm met tegrote bedragen?
Gewijzigd op 01/01/1970 01:00:00 door DeleteAll DeletelAll
Edit:
Nu staat er ook het probleem, net stond er alleen: "Ik heb de volgende code"
Nu staat er ook het probleem, net stond er alleen: "Ik heb de volgende code"
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
Dus:
1,5 = anderhalf = voor MySQL: één komma vijf
1.5 = anderhalf = voor MySQL: anderhalf
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
PHP Newbie schreef op 03.11.2006 18:59:
Kijk m'n resultaat ;-).jah gefeliciteerd met je code, wat is het probleem?
Uiteraard de rest van de problemen in je script ook nog oplossen.
Ps. Sinds eind jaren '90 is <font> een vervallen html-tag. Gebruik css om de boel op te maken.
@ Frank: dat was alleen voor Gewonnen, verloren of gelijk dat ik met <font> werkte ;-).
Nieuw probleem (Zie topic).
ik zie geen nieuw probleem?
PHP Newbie schreef op 03.11.2006 19:10:
Updated, zie bovenaan topic: Probleem 2.ik zie geen nieuw probleem?
SELECT user ORDER BY (verloren + gelijk + gewonnen) ASC LIMIT 10
veld type??
Paul schreef op 03.11.2006 19:23:
DECIMALveld type??
PHP Newbie schreef op 03.11.2006 19:21:
ik denk zoiets:
SELECT user ORDER BY (verloren + gelijk + gewonnen) ASC LIMIT 10
SELECT user ORDER BY (verloren + gelijk + gewonnen) ASC LIMIT 10
werkt dit?
Tip: Pas het datamodel aan en sla geen berekende gegevens op in jouw database. Het is niet nodig en er kunnen eigenlijk alleen maar dingen fout gaan.
& Frank: Ik slaag nergens berekende gegevens op hoor?
Edit: Totaal voorbeeldje...
Gewijzigd op 01/01/1970 01:00:00 door DeleteAll DeletelAll
Misschien zoiets:
Code (php)
1
2
3
2
3
SELECT velden, die, je, nodig, hebt, (gewonnen + verloren + gelijk) AS totaal,
FROM tabel
ORDER BY totaal DESC;
FROM tabel
ORDER BY totaal DESC;
Ik twijfel alleen over het +, ik dacht dat SUM vermenigvuldigen was, dus dat zou niet werken, maar mischien moet het wel iets van SOM zijn, maar kan niks in de manual vinden.
Aymeric DL schreef op 03.11.2006 21:13:
Dat is niet wat je hier zegt:Het werkt ;-). Bedankt iedereen!
& Frank: Ik slaag nergens berekende gegevens op hoor?
& Frank: Ik slaag nergens berekende gegevens op hoor?
Quote:
Dat zijn dus 3 velden in de database die niet nodig zijn en voor problemen kunnen zorgen.wedstrijden verloren: 1 -> Dit is veld in DB
wedstrijden gelijk: 2 -> Dit is veld in DB
wedstrijden gewonnen: 1 -> Dit is veld in DB
wedstrijden gelijk: 2 -> Dit is veld in DB
wedstrijden gewonnen: 1 -> Dit is veld in DB
hoe zou jij dat dan doen Frank?