09. juli 2005 - 16:33Der er
11 kommentarer og 1 løsning
Highscore nummer
Hej Folkens!
Jeg har brug for lidt hjælp til PHP/MySQL.
Jeg har en highscoredatabase ( id, navn, points ). Når jeg skal vise alle brugernes highscore er det intet problem at lave highscores, MEN når jeg skal vise en enkelt brugers profil er det et problem. Er der nogen måde hvorpå jeg let kan ornde dette?
Indtil videre sker dette med en $sql = "SELECT * FROM `highscores` ORDER BY `points` DESC"; $res = myql_query($sql); for($n = 0; ($row = mysql_fetch_array($res)) == TRUE; $n++){ if($row['id'] == $id){ $nummer = $n; } }
Er der nogen der har en smartere metode? Eventuelt en funktion?
ahh ok så brugerens point er underordnet, spørgsmålet er hvor mange som har flere point end brugeren Jeg tror ikke der er andet at gøre end noget ala det du gør Altså selecte det hele i sorteret rækkefølge og loope det igennem til du finder brugeren, og så stoppe fordi du der kender positionen Så er det vel en smags sag om man benytter en while eller for løkke Men jeg vil ikke mene du kan finde positionen i ren sql
Okay scriptet får et id som den skal vise en profil ud fra. Her er det vigtigt at man kan se highscore og points osv. I eksemplet er det underordnet - Det vigtige er at man kan se det nummer brugeren ligger på highscoren. Her er det så jeg godt kunne tænke mig at vide om man kunne lave nogle tricks så man slipper for at køre hele scoren igennem.
Jeg har overvejet denne løsning: $sql = "SELECT * FROM `highscores` WHERE >= '". [Variabel med points] ."' ORDER BY `points` DESC"; $res = mysql_query($sql); $nummer = mysql_num_rows($res);
ja selvfølgelig hvis du ved hvor mange point vedkommende har på forhånd Jeg troede blot du kun havde navn og id at gå ud fra :o) Måske der skal to forespørgsler til så En som finder personens point antal Select points From highscores Where Id = $id Dernæst en som blot tæller antallet som har flere points Select Count(*) From highscores Where points >= $points
ja ok så tror jeg altså den nemmeste løsning for dig er at løbe dem igennem i en løkke Hvor mange poster drejer det sig om? For det skal jo være pæænt mange før det kan mærkes i performance Du kunne også selecte på hvor mange som har $points og hvis flere end een har samme points så finde id´et som er højst og dernæst søge dennes position Men så er spørgsmålet om det er hurtigst at lave en løkke som løber måske 50poster igennem eller lave 2-4 seperate sql statements som løber alt igennem for at opnå det samme jo :o)
Alternativt skulle du bruge lidt krudt på en gang for alle at lave en "placerings" tabel i din database Den ville være rimelig nem at opdatere hver gang der kom en ny score fra en bruger i hver af de 25 kategorier Den kunne jo indeholde "kategori", "id" og "placering" Og den ville så være nem at hive ud af når noget skulle vises på de forskellige sider :o) Det kan du jo tænke over
Synes godt om
Ny brugerNybegynder
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.