Order BY
2e probleem:
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:
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?
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
jah gefeliciteerd met je code, wat is het probleem?
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
begin is met die backtics uit je query te halen en je order by werkt wel, alleen moet je in MySQL geen , gebruiken voor decimale getallen maar een punt.
Dus:
1,5 = anderhalf = voor MySQL: één komma vijf
1.5 = anderhalf = voor MySQL: anderhalf
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:
Kijk m'n resultaat ;-).jah gefeliciteerd met je code, wat is het probleem?
Wanneer ik een hele berg backtics ` in de code zie, een alias met dezelfde naam als het origineel en een ontbrekende foutafhandeling, dan neem ik aan dat 'bedrag' geen getal is, maar een stuk tekst (bv. VARCHAR). En daar kun je natuurlijk nooit netjes op sorteren! Ja, daar kun je alfabetisch op sorteren, maar dan komt het getal 20 toch echt pas na het getal 11034. Een getal opslaan als een getal, INT of bv. DECIMAL, lost een hoop problemen op.
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.
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.
Ok, bedankt iedereen ;-). Dit probleem is al opgelost.
@ Frank: dat was alleen voor Gewonnen, verloren of gelijk dat ik met <font> werkte ;-).
Nieuw probleem (Zie topic).
@ Frank: dat was alleen voor Gewonnen, verloren of gelijk dat ik met <font> werkte ;-).
Nieuw probleem (Zie topic).
ik zie geen nieuw probleem?
'PHP:
Updated, zie bovenaan topic: Probleem 2.ik zie geen nieuw probleem?
ik denk zoiets:
SELECT user ORDER BY (verloren + gelijk + gewonnen) ASC LIMIT 10
SELECT user ORDER BY (verloren + gelijk + gewonnen) ASC LIMIT 10
veld type??
'Paul:
DECIMALveld type??
'PHP:
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?
Gewonnen, gelijk of verloren, zijn afgeleiden van de uitslagen. Het is dus overbodig om deze gegevens nogmaals op te slaan. Het houdt zelfs een risico in, iemand behaalt de meeste punten, maar door in de fout in de query of in het script wint hij niet. Dit kan ook gebeuren bij b.v. een update van de gegevens.
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.
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.
Het werkt ;-). Bedankt iedereen!
& Frank: Ik slaag nergens berekende gegevens op hoor?
Edit: Totaal voorbeeldje...

& Frank: Ik slaag nergens berekende gegevens op hoor?
Edit: Totaal voorbeeldje...

Gewijzigd op 01/01/1970 01:00:00 door DeleteAll DeletelAll
PHP Newbie, het zal sowieso al niet werken, aangezien je er geen FROM in hebt..
Misschien zoiets:
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.
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:
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?




