Versio

Order BY

Overzicht Reageren

DeleteAll DeletelAll

DeleteAll DeletelAll

03/11/2006 18:58:00
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>";
}

?>


En dit is het resultaat...
http://img232.imageshack.us/img232/4136/vaagyd9.jpg
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
 
PHP hulp

PHP hulp

25/05/2012 09:15:46
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
PHP Newbie

PHP Newbie

03/11/2006 18:59:00
Quote Anchor link
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"
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
 
PHP Newbie

PHP Newbie

03/11/2006 19:02:00
Quote Anchor link
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
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
 
DeleteAll DeletelAll

DeleteAll DeletelAll

03/11/2006 19:03:00
Quote Anchor link
PHP Newbie schreef op 03.11.2006 18:59:
jah gefeliciteerd met je code, wat is het probleem?
Kijk m'n resultaat ;-).
 
Frank -

Frank -

03/11/2006 19:05:00
Quote Anchor link
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.
 
DeleteAll DeletelAll

DeleteAll DeletelAll

03/11/2006 19:09:00
Quote Anchor link
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).
 
PHP Newbie

PHP Newbie

03/11/2006 19:10:00
Quote Anchor link
ik zie geen nieuw probleem?
 
DeleteAll DeletelAll

DeleteAll DeletelAll

03/11/2006 19:14:00
Quote Anchor link
PHP Newbie schreef op 03.11.2006 19:10:
ik zie geen nieuw probleem?
Updated, zie bovenaan topic: Probleem 2.
 
PHP Newbie

PHP Newbie

03/11/2006 19:21:00
Quote Anchor link
ik denk zoiets:

SELECT user ORDER BY (verloren + gelijk + gewonnen) ASC LIMIT 10
 
Paul K

Paul K

03/11/2006 19:23:00
Quote Anchor link
veld type??
 
DeleteAll DeletelAll

DeleteAll DeletelAll

03/11/2006 19:23:00
Quote Anchor link
Paul schreef op 03.11.2006 19:23:
veld type??
DECIMAL
 
PHP Newbie

PHP Newbie

03/11/2006 19:27:00
Quote Anchor link
PHP Newbie schreef op 03.11.2006 19:21:
ik denk zoiets:

SELECT user ORDER BY (verloren + gelijk + gewonnen) ASC LIMIT 10


werkt dit?
 
Frank -

Frank -

03/11/2006 21:07:00
Quote Anchor link
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.
 
DeleteAll DeletelAll

DeleteAll DeletelAll

03/11/2006 21:13:00
Quote Anchor link
Het werkt ;-). Bedankt iedereen!
& Frank: Ik slaag nergens berekende gegevens op hoor?

Edit: Totaal voorbeeldje...
http://img523.imageshack.us/img523/8791/top10jn5.jpg
Gewijzigd op 01/01/1970 01:00:00 door DeleteAll DeletelAll
 
Willem Jan Z

Willem Jan Z

03/11/2006 21:15:00
Quote Anchor link
PHP Newbie, het zal sowieso al niet werken, aangezien je er geen FROM in hebt..

Misschien zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT velden, die, je, nodig, hebt, (gewonnen + verloren + gelijk) AS totaal,
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.
 
Frank -

Frank -

03/11/2006 21:17:00
Quote Anchor link
Aymeric DL schreef op 03.11.2006 21:13:
Het werkt ;-). Bedankt iedereen!
& Frank: Ik slaag nergens berekende gegevens op hoor?
Dat is niet wat je hier zegt:
Quote:
wedstrijden verloren: 1 -> Dit is veld in DB
wedstrijden gelijk: 2 -> Dit is veld in DB
wedstrijden gewonnen: 1 -> Dit is veld in DB
Dat zijn dus 3 velden in de database die niet nodig zijn en voor problemen kunnen zorgen.
 
PHP Newbie

PHP Newbie

03/11/2006 22:57:00
Quote Anchor link
hoe zou jij dat dan doen Frank?
 



Overzicht Reageren

Get Adobe Flash player