PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP-MySQL BG->Rangliste ?



007hobbit
14-02-2006, 12:52
Ich entwickle gerade ein eigenes Browsergame und bin gerade dabei die rangliste zu erstellen. Dabei sollen immer 10 Leute angezeigt werden.
Tabelle: ID || Username || Points

Es sollen wir oben genannt immer 10 Leute angezeigt werden (LIMIT 10)
und eben nach Punkten geordnet werden (ODER BY `points` DESC).
Also praktisch so
Meiste punkte 1
" " 2
...
...

Nur wie mach ich es dass der eigene User auch in der Mitte angezeigt wird also so:
User 1
User 5
Mein User
User 2
....
???

Wär nice wenn jmd da etwas wüsste^^
würde mich wirklich freuen

so long
hobbit

ninguno
14-02-2006, 13:15
ich versteh nicht was du meinst. willst du jetzt eine rangliste der zehn besten? oder soll auf jeden fall der eigene user auch angezeigt werden? aber wieso in der mitte?

007hobbit
14-02-2006, 13:46
...nein...^^
sorry wenn es undeutlich war...
es soll der eigene player angezeigt also auf welchem rang er sich befindet...
anhand der punkte wird der rang bestimmt...
also sagen wir der user ist auf rang 43
dann soll es so angezeigt werden:
user40
user41
user42
user43
user44
...
user49

oder wenn der user auf rang 33 ist dann so
user30
user31
user32
user33
...
user39

also immer in zehnerpäckchen...und da wollte ich fragen ob hier jemand eine idee hätte...man müsste die user ersteinmal alle zählen um den rang zu bestimmen glaube ich nur weiter weiss ich leider auch nicht...
ist es jetzt verständlich?

inner.glow
14-02-2006, 16:19
Sorry :-)

Leider ist es nicht so wirklich verständlich...

Was für Tabellen hast du denn? Wenn du nur eine Tabelle mit allen Usern hast, dann ist der eigene User doch da auch drin... ?

Sag uns doch mal deine Datenbankstruktur :-)

sg

007hobbit
14-02-2006, 16:40
sturktur:
user
Feld Typ Null Standard Verweise Kommentare MIME
id int(11) Nein
username varchar(50) Nein
password varchar(50) Nein
ip varchar(20) Nein 0
points int(11) Nein 0
email varchar(50) Nein
ally int(11) Nein -1
islands int(11) Nein 0
status int(11) Nein 0
text text Nein
premium int(11) Nein 0
lastlogin bigint(20) Nein 0
time int(10) Nein -1
registertime bigint(20) Nein 0
newmail smallint(6) Nein 0
newreport smallint(6) Nein 0
session varchar(10) Nein 0
browser varchar(50) Nein

was genau habt ihr denn nicht verstanden ? :o

hobbit

inner.glow
14-02-2006, 16:48
Du möchtest also eine Abfrage, mit der du bestimmen kannst, auf welchem Platz der eigene User ist?

SELECT COUNT(*) FROM user WHERE points >= 70

70 einfach durch die Punktezahl des eigenen Benutzers ersetzen.

War das deine Frage?? Auf jeden Fall wird dir COUNT(*) nützich sein, oder?

sg.

Turbohummel
14-02-2006, 17:59
Hallo, ne, das löst das Problem nicht.

Ich stand vor dem gleichen Problem vor einiger Zeit, und habe dass dann so gelöst (mit 2 Querys):
Tabelle spieler (id, name, ..., punkte, rang)
Der Rang hängt zwar von den Punkten ab (2.NF), aber aus Performancegründen mit reingenommen.
Query 1:
SELECT rang AS rang_spieler FROM spieler WHERE id = die_id_eben
Query 2:
SELECT * FROM spieler WHERE rang <= rang_spieler+10 && rang >= rang_spieler-10;
rang_spieler entsprechend aus der ersten Query. Wäre natürlich auch mit den Subquery möglich.

007hobbit
14-02-2006, 18:21
vielen dank Turbohummel
genau sowas hab ich gesucht
hast mir sehr geholfen...
vielen dank...^^

hobbit

Turbohummel
15-02-2006, 05:44
Ich stand vor genau dem gleichen Problem. Und das zu beschreiben, hab ich auch nicht wirklich verständlich hinbekommen ;)