Avatar billede udvikler Nybegynder
22. november 2005 - 17:56 Der er 23 kommentarer og
1 løsning

Top 10 brugere ?

Hvordan laver man en top 10 ? ligsom her på eksperten hvor den sortere efter fx point
Avatar billede jaw Nybegynder
22. november 2005 - 17:57 #1
SELECT brugernavn FROM brugertabel ORDER BY point DESC LIMIT 10

?
Avatar billede udvikler Nybegynder
22. november 2005 - 17:59 #2
Vidste ikke det var så enkelt ? :)

Hvad så med alle dem der ingen point har ?
hvad bliver de sorteret efter ?
Avatar billede jaw Nybegynder
22. november 2005 - 18:00 #3
Dit point-felt er vel int som type - altså tal? Og så vil det felt jo have en standard-værdi, f.eks. 0 normalt, som den så bare vil sortere efter.
Avatar billede udvikler Nybegynder
22. november 2005 - 18:01 #4
Ja selvfølgelig er det int :)

Så det du siger er at php ordner det selv ?
Avatar billede udvikler Nybegynder
22. november 2005 - 18:21 #5
Og hvordan kan man så senere hen finde ud af hvilken placering en bestemt person har ?

- læg da lige et svar ;)
Avatar billede jakobdo Ekspert
22. november 2005 - 18:33 #6
PHP ordner det ikke selv, det gør SQL/MYSQL.
Avatar billede udvikler Nybegynder
22. november 2005 - 18:37 #7
Okay, tusinde tak :)

Ved du noget om det andet jeg spurgte om ?
  22/11-2005 18:21:28
Avatar billede hmortensen Nybegynder
22. november 2005 - 18:40 #8
Placering må blive:
SELECT COUNT(*) + 1 FROM tabel WHERE point > $point
Avatar billede hmortensen Nybegynder
22. november 2005 - 18:41 #9
COUNT(*)+1 AS placering
er nok bedre.
Avatar billede udvikler Nybegynder
22. november 2005 - 18:43 #10
Hey hmortensen, vil det sige at jeg skal oprette et felt i phpmyadmin der hedder placering eller ? og hvad skal det være varchar,int,.. ?
Avatar billede hmortensen Nybegynder
22. november 2005 - 18:46 #11
Nej, du skal ikke oprette et felt.
SQL ordet 'AS' laver et alias for det forestående, i det her tilfælde COUNT(*)+1
Avatar billede udvikler Nybegynder
22. november 2005 - 18:50 #12
Så det vil sige at jeg kun skal gøre følgene:

<?
include "mysql.php";

$query = mysql_query("COUNT(*)+1 AS placering");
WHILE($placering = mysql_fetch_array($query)) {

echo $placering;

}
?>

?
Avatar billede hmortensen Nybegynder
22. november 2005 - 18:51 #13
Nej, du skal have hele sætningen med, som i min første kommentar
Avatar billede pidgeot Nybegynder
22. november 2005 - 18:51 #14
<?
include "mysql.php";

$query = mysql_query("SELECT COUNT(*)+1 AS placering FROM tabel WHERE point > $point");
WHILE($placering = mysql_fetch_array($query)) {

echo $placering;

}
?>

er det korrekte.
Avatar billede jaw Nybegynder
22. november 2005 - 18:52 #15
Og så echo $placering['placering'];
Avatar billede udvikler Nybegynder
22. november 2005 - 18:55 #16
Tak alle sammen :)

men hvordan skal jeg indsætte det når jeg allerede har udtrukket noget på den måde, bare sådan her?:

<?
include "mysql.php";

$s_medlemmer = mysql_query("SELECT id,brugernavn,point,dato FROM brugere ORDER BY point DESC");
WHILE($medlemmer = mysql_fetch_array($s_medlemmer)) {
$query = mysql_query("SELECT COUNT(*)+1 AS placering FROM brugere WHERE point > $point");
WHILE($placering = mysql_fetch_array($query)) {

echo "<tr>";
echo "<td width=\"150\"><center><a href=\"profil.php?id=$medlemmer[id]\">$medlemmer[brugernavn]</a></center></td>";
echo "<td width=\"150\"><center>$medlemmer[dato]</center></td>";
echo "<td width=\"150\"><center>$placering</center></td>";
echo "<td width=\"150\"><center>$medlemmer[point]</center></td>";
echo "</tr>";

}
}
?>
Avatar billede hmortensen Nybegynder
22. november 2005 - 19:05 #17
Nu blander du jo spm1 sammen med spm2.
Avatar billede udvikler Nybegynder
22. november 2005 - 19:06 #18
Så for i bare 30 point ekstra ? :)
Avatar billede hmortensen Nybegynder
22. november 2005 - 19:07 #19
Ikke point jeg mener, men din kode.
Avatar billede udvikler Nybegynder
22. november 2005 - 19:11 #20
Nårh, ja, men læg mærke til hvad jeg skriver, jeg skal lave 2 udtræk :)

1. udtræk: for at skrive point antallet,skrive navnet og tilmedlingsdato

2. udtræk for at lave placeringen, eller er dette ikke nødvendigt ?

hvis du kan bixe det samme i en lang query ville jeg blive super duper glad :)
Avatar billede hmortensen Nybegynder
22. november 2005 - 19:13 #21
"Og hvordan kan man så senere hen finde ud af hvilken placering en bestemt person har ?"

Har jo ikke noget med din top 10 at gøre.

Hvis du vil ha placering på top 10'en, så lav en tæller i din while løkke.
Avatar billede udvikler Nybegynder
22. november 2005 - 19:15 #22
Det jeg mener med placering er at hvis man går ind på en eller anden profil står der fx 7 (dvs han er i Top 10) håber du forstår. Hvordan kan sådan en tæller se ud ? :)
Avatar billede hmortensen Nybegynder
22. november 2005 - 19:18 #23
$s_medlemmer = mysql_query("SELECT id,brugernavn,point,dato FROM brugere ORDER BY point DESC");
$placering = 1;
while ($medlemmer = mysql_fetch_array($s_medlemmer)) {

echo "<tr>";
echo "<td width=\"150\"><center><a href=\"profil.php?id=$medlemmer[id]\">$medlemmer[brugernavn]</a></center></td>";
echo "<td width=\"150\"><center>$medlemmer[dato]</center></td>";
echo "<td width=\"150\"><center>$placering</center></td>";
echo "<td width=\"150\"><center>$medlemmer[point]</center></td>";
echo "</tr>";
$placering++;
}

Og så kan du bruge den anden sql sætning til at skrive placering på profil siden.
Avatar billede udvikler Nybegynder
22. november 2005 - 19:26 #24
Jamen på profil siden er det det samme profil, der har jeg også allerede udtrukket noget :( hvad skal jeg så gøre ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester