ranglijst?
ik heb 2 tabellen. een met members en een met punten die de members gehaald hebben.
ik wil een lijst met members en het totaal aantal punten dat ze hebben gehaald op volgorde van de punten hebben (dus degene met de meeste punten bovenaan)
het probleem is dat het totaal aantal punten niet in de tabel staat omdat dat telkens veranderd. dus die moeten in de lus berekent worden en daarna kunnen ze pas op volgorde gezet worden.. maar dat lukt me dus niet.
ik weet dat het een onduidelijk verhaal is maar hoop dat iemand het begrijpt :S
in tabel "member" member_id, en username,
in tabel "punten" member_id, en punten
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?
//functie voor het selecteren van de gebruikers naam. aan de hand van member_id. Dit kan overal gebruikt woorden.
function select_member($id)
{
//sql query die volgens mij genoeg uit legt
$sql = "SELECT username FROM member WHERE member_id = '".$id."' ";
//voer de sql query uit
$uit = mysql_query($sql);
//haal gegevens op en stop allen in een array
$row = mysql_fetch_assoc($uit);
//return de waarde in cel 'username'
return $row['username'];
}
//sql query voor de "punten" georderd op punten aantal DESC omdat 1000 hoger is dan 1 en 1000 boven aan wilt hebben
$sql = "SELECT member_id, punten FROM punten ORDER BY punten DESC";
//voer query uit
$uit = mysql_query($sql);
//voor volgende stap uit todat alles is geweest.
while($row = mysql_fetch_assoc($uit)){
//echo alles eventueel met een punten aantal. een variable als 1 defineren en steeds 1 er bij.
echo select_member($row['id']). " ".$row['punten'];
}
?>
//functie voor het selecteren van de gebruikers naam. aan de hand van member_id. Dit kan overal gebruikt woorden.
function select_member($id)
{
//sql query die volgens mij genoeg uit legt
$sql = "SELECT username FROM member WHERE member_id = '".$id."' ";
//voer de sql query uit
$uit = mysql_query($sql);
//haal gegevens op en stop allen in een array
$row = mysql_fetch_assoc($uit);
//return de waarde in cel 'username'
return $row['username'];
}
//sql query voor de "punten" georderd op punten aantal DESC omdat 1000 hoger is dan 1 en 1000 boven aan wilt hebben
$sql = "SELECT member_id, punten FROM punten ORDER BY punten DESC";
//voer query uit
$uit = mysql_query($sql);
//voor volgende stap uit todat alles is geweest.
while($row = mysql_fetch_assoc($uit)){
//echo alles eventueel met een punten aantal. een variable als 1 defineren en steeds 1 er bij.
echo select_member($row['id']). " ".$row['punten'];
}
?>
Zo iets
Gewijzigd op 14/06/2004 21:00:00 door Eris -
Je maakt bij te tabel van members een rij punten (int)
en dan zet je vanboven van je script pagina
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$sql = "SELECT * FORM member";
$res= mysql_query($sql);
$aantal_leden= mysql_nuw_rows($res);
for($i=0,$i<$aantal_leden;$i++){
$row= mysql_fetch_array($res);
$punten=""//Hier zet je manier van punten berekenen
$sql="Update members set punten='$punten' where member_id='$row[member_id]'"
}
?>
$sql = "SELECT * FORM member";
$res= mysql_query($sql);
$aantal_leden= mysql_nuw_rows($res);
for($i=0,$i<$aantal_leden;$i++){
$row= mysql_fetch_array($res);
$punten=""//Hier zet je manier van punten berekenen
$sql="Update members set punten='$punten' where member_id='$row[member_id]'"
}
?>
Voila laat mij weten of het werkt
Edit:
dubbele post
Gewijzigd op 14/06/2004 23:16:00 door Marien xD
Quote:
Quote:
Nee dat help niet en ik heb dit probleem ook gehad en ik heb er een oplossing voor.
Je maakt bij te tabel van members een rij punten (int)
en dan zet je vanboven van je script pagina
Voila laat mij weten of het werkt
Je maakt bij te tabel van members een rij punten (int)
en dan zet je vanboven van je script pagina
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$sql = "SELECT * FROM member";
$res= mysql_query($sql);
$aantal_leden= mysql_nuw_rows($res);
for($i=0,$i<$aantal_leden;$i++){
$row= mysql_fetch_array($res);
$punten=""//Hier zet je manier van punten berekenen
$sql="Update members set punten='$punten' where member_id='$row[member_id]'"
}
?>
$sql = "SELECT * FROM member";
$res= mysql_query($sql);
$aantal_leden= mysql_nuw_rows($res);
for($i=0,$i<$aantal_leden;$i++){
$row= mysql_fetch_array($res);
$punten=""//Hier zet je manier van punten berekenen
$sql="Update members set punten='$punten' where member_id='$row[member_id]'"
}
?>
Voila laat mij weten of het werkt
De From is niet goed er stond FORM
zal het wat simpeler uitleggen
heb een tabel met naam, score1, score2, score3
hoe maak ik een lijst met de 5 hoogste totaalpunten?? kan dat zonder een veld totaal te hebben dus dat je het eerst berekend en dan op volgorde zet.. of moet je perse een veld totaal aanmaken??
Code (php)
1
2
3
4
5
2
3
4
5
<?
$sql = "SELECT veld1+veld2+veld3 as totaal FROM table_name";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
?>
$sql = "SELECT veld1+veld2+veld3 as totaal FROM table_name";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
?>
$row['totaal'] = dan totale score
zal het vanmiddag ff proberen.. moet nu naar school :(
Ja dat kun je ook ORDER BY totaal doen ja.. succes op school :)
thnx!