Top 5 maken in MySQL
Op mijn site heb ik een ledenbestand helemaal in MySQL, alleen nu wil ik een soort top-5 maken van Landen waaruit de meeste leden komen...
Mijn database ziet er (sterk versimpeld) ongeveer zo uit:
+-----------+-------------------------------------+
| gebruiker | land |
+-----------+-------------------------------------+
| kees | Nederland |
| jan | België |
| klaas | Nederland |
| truus | Nederland |
| peter | Engeland |
+-----------+-------------------------------------+
Nu wil ik dus dat het php-script weergeeft:
1. Nederland
2. België
3. Engeland
Hoe kan ik dit maken??
Gewijzigd op 04/10/2003 10:37:00 door Ros
Nederland tel je bij elkaar op
Belgie tel je op
etc.
Je moet eerst doen wat Sander net zei, daarna moet je dat met wat ik zei doen
select alles uit de database
en doe dan via PHP optellen
doe zoiets als dit:
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
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
<?
$sql = "SELECT land FROM tabel ORDER BY land";
$res = mysql_query($sql);
while ($row = mysql_fetch_array($res))
{
if (!$firstland)
{
$firstland = $row[land];
$count = 1;
}
if ($firstland == $row[land])
{
if (!$counter[$count])
$counter[$count] = 1;
else
$counter[$count]++;
}
else
{
$count = $count+1;
$firstland = $row[land];
$counter[$count] = 1;
}
}
?>
$sql = "SELECT land FROM tabel ORDER BY land";
$res = mysql_query($sql);
while ($row = mysql_fetch_array($res))
{
if (!$firstland)
{
$firstland = $row[land];
$count = 1;
}
if ($firstland == $row[land])
{
if (!$counter[$count])
$counter[$count] = 1;
else
$counter[$count]++;
}
else
{
$count = $count+1;
$firstland = $row[land];
$counter[$count] = 1;
}
}
?>
weet niet of het werkt, maar weet ook niet of er een SQL commando voor is waarmee je het gelijk 'goed' kunt sorteren..
geef je alleen een mogelijkheid, denk dat die van Ros beter is ;)
Gewijzigd op 04/10/2003 10:45:00 door B a s
Hoe krijg ik dan de resultaten van als output in HTML?
en gbruik: echo ;)