webForumDet fria alternativet

Få fram placering mha. id

PHPur PHP

12 svar · 478 visningar · startad av Melea

Medlem sedan juli 20033 147 inlägg
Frågan#1

Hejsan!

Har en sida där jag listar olika spelare som är rankade. Rankingen räknas så att alla börjar på 1000 poäng från början. Sen får man mer resp. mindre om man vinner/förlorar.
Nu när man listar alla spelare är det inga svårigheter att visa vilken placering respektive spelare har. Detta gör jag genom

$placering = 0;
while($rs = mysql_fetch_array($SQL)){
$placering = $placering + 1;

mer kod...

}

Däremot om man trycker på profilen på en spelare, så vet jag inte hur jag ska få fram placeringen.

Går det att på något vis kolla alla poster i databasen och sen mha. WHERE id2 = $_GET[id] ta ut den specifika användaren och kolla vilken placering han/hon har?

Tack på förhand.

Medlem sedan mars 20032 667 inlägg
#2

Har du tillgång till både spelarens id och vilken poäng han/hon har kan du enkelt kolla vilken placering spelaren har. Har du inte tillgång till poängen blir det bökigare. ;)

select count(*) 
from tabellen
where userid = " . $_GET['id'] . "
and poang <= 1213
Medlem sedan juli 20033 147 inlägg
#3

Får jag med den koden fram placeringen?
Låt säga att jag har ett användarnamn: Melea och id:et 1.
Min poäng är 1420 vilket ger mig en 18:de plats.
18:de platsen står ingenstans i databasen, bara att jag har id 1 och poäng 1420.

Medlem sedan mars 20032 667 inlägg
#4

Ja, under förutsättning att spelaren med lägst poäng har placering 1 och att poängen för spelaren i mitt exempel är 1213.

/RED
Fel justerat.

Medlem sedan juli 20033 147 inlägg
#5

Hm, han har placering 1 mha. ORDER BY $poang DESC.

Ska pröva, hold on ;)

Medlem sedan sep. 2000232 inlägg
#6

Vet inte om det är så hemskt effektivt direkt men du kan ju att köra loopen som du använder för att lista alla spelare men välja att bara skriva ut resultatet då id:et är samma som det du vill visa.

Typ såhär:

$placering = 0;
while($rs = mysql_fetch_array($SQL)){
$placering = $placering + 1;

if($_GET['id'] == $rs[id])
{
echo 'Placering: '.$placering;
}

}

Medlem sedan mars 20032 667 inlägg
#7

Alltså nu dribblade jag bort både dig och mig själv. Min fråga förutsatte att poängen sorteras efter Asceding. Alltså att högsta poäng är sist och då blir det fel att skriva som jag gjorde. Men vi vänder på den istället:

select count(*) 
from tabellen
where userid = " . $_GET['id'] . "
and poang >= 1213
Medlem sedan juli 20033 147 inlägg
#8

Borde det inte vara

select count(*) 
from tabellen [b]as count[/b]
where userid = " . $_GET['id'] . "
and poang >= 1213

:) ?

Medlem sedan mars 20032 667 inlägg
#9

Melea skrev:

Borde det inte vara

select count(*) 
from tabellen [b]as count[/b]
where userid = " . $_GET['id'] . "
and poang >= 1213

:) ?

Nä, i detta faller har du ingen nytta av att ge tabellen ett alias. Resultatet kan du antingen få ut med index 0 eller med ett alias på din "count".

select count(*) as placering
from tabellen
where userid = " . $_GET['id'] . "
and poang >= 1213
Medlem sedan dec. 200012 464 inlägg
#10

Varför skall man blada in userid i denna fråga?

select count(*) + 1 
from tabellen
where poang > 1213
Medlem sedan mars 20032 667 inlägg
#11

LarsG skrev:

Varför skall man blada in userid i denna fråga?

Ja, det kan man fråga sig. Kastar något hårt i huvudet på mig själv. :r

Medlem sedan juli 20033 147 inlägg
#12

Hur skapar jag isåfall objektet? Om jag inte döper countern till något?

Medlem sedan juli 20033 147 inlägg
#13

Funkar utmärkt nu, jag som hade fibblat till det, tack så mkt :)

134 ms totalt · 3 externa anrop · v20260731065814-full.8a4e7caf
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)