Hey, ik gebruik een soort van ledensysteem waarbij ik op deze pagina alle leden uit de db haal met daarbij hun aantal posts enz, dat zijn hun punten. Nu wil ik deze ordenen van hoog naar laag dus bovenaan de meeste punten onderaan minste. Maar ik zie niet precies hoe ik dit kan doen omdat ik anders wel met m'n mysql query kan ordenen maar aangezien hier de waarden voor het ordenen pas na de query bekent zijn zie ik niet juist hoe ik dit kan doen:s


<?
$u = mysql_query("SELECT * FROM user_users WHERE status = 1") or die(mysql_error());
while($fd = mysql_fetch_array($u)){
    ...
    $uhits = (mysql_num_rows(mysql_query("SELECT * FROM u_uhits WHERE u ='".$fd['u']."'")))*20;
	$comments = (mysql_num_rows(mysql_query("SELECT * FROM u_comments WHERE u='".$fd['u']."'")))*20;
	$tpoints = $tmedia + $uhits + $comments;
     #nu heb ik dus de points van een blog maar hoe orden ik die nu?

}
?>
Edit\\ Niet goed gelezen
group by:

SELECT * FROM user_users WHERE status = 1 GROUP BY punten


edit:
andere query's had ik nog niet gezien, Waar ie moet moet je zelf maar uitzoeken
iig group by toevoegen, dit dus:

GROUP BY puntencolumn
Ja maar er is geen punten column ik maak een puntenvar aan na de query:s
Optie 1: alle gegevens in een array zetten, en deze met de sort() functie van php sorteren.

Optie 2: de berekening van het aantal punten al in je mysql query uitvoeren en dan sorter mbv een ORDER BY clause.

De laatste zou mijn voorkeur hebben...
Idd, optie 2 is wat simpeler, die puntenvar in db gooien en dan van hoog naar laag (@blanche daar is geen order by voor nodig) op punten, dus een group by.

Dan de query gebruiken die ik eerder al postte.
Lijkt me bijde logisch maar ik zie niet hoe ik het juist doe:s
@Kalle: ik neem aan dat de TS alle gebruikers wil tonen. Als je een GROUP BY gebruikt, wordt er van een bepaald punten aantal maar 1 record getoond. Gevolg: als gebruikers hetzelfde punten aantal hebben, vallen er gebruikers weg.

Als je wilt sorteren op het punten aantal (en alle gebruikers wilt tonen), zul je daar een ORDER BY voor moeten gebruiken.
Je kan natuurlijk ook gebruik maken van sub-queries. Als je die gebruikt kan je op het resultaat van zo'n subquery gewoon ordenen.
@blanche dat weet ik wel maar het puntenaantal is maar na de query gemaakt, hij staat niet in de db:s ik moet dus met andere woorden iets ordenen wat uit de db komt samen met iets dat er niet uitkomt. Arrays zou mss een oplossing kunnen zijn maar kzie helemaal niet hoe
ik weet niet of dat ook in php kan maar anders kan je met SQL de query's counten:
count()
en dan gewoon ascend (als k het goed heb ander descend)
dat doe ik iig met mijn gewone database

Reageren