Rankingsystem, Anzeige des eigenen Platzes?

2Pac

Erfahrenes Mitglied
Hallo,

ich habe die Suchfunktion zwar genutzt aber irgendwie ergab das nicht so die richtigen Treffer. Falls ich es übersehen habe, bitte einfach den Link posten. Besten Dank.

Nun mein Problem:

Ich habe ein Userranking das sortiert wird.

SELECT Befehl sieht wie folgt aus:
PHP:
$i=0;
$select = mysql_query("SELECT * FROM user ORDER BY variable LIMIT $start,$end");
while ($row = mysql_fetch_object($select))
{
 $i++;
 echo "$i - Ausgabe der Daten";
}

Habe auch eine Sortierung nach bestimmten Kategorien eingebaut indem ich prüfe ob $sort definiert ist und ob es intval($sort) > 0 ist. Dann definiere ich wie der SELECT Befehl bei 1,2,3,4 usw. aussehen soll.

Das Klappt wunderbar.

Nur meine Frage, wie kann ich anzeigen ganz oben in der Tabelle, wo sich der User der das ganze aufruft befindet?

Sprich soll wie folgt aussehen:

-----------------------------------------------------------------
5. User5 blabla
6. User6 blabla
7. Du blabla
8. User8 blabla
9. User9 blabla
----------------------------------------------------------------
25. User50 blabla
26. User51 blabla
27. User52 blabla
28. User67 blabla
29. User97 blabla
30. User 120 blabla

usw...

Jemand eine Idee wie man das umsetzen könnte?

Danke im Voraus
Ronny
 
Zuletzt bearbeitet:
Vorschlag
PHP:
while ($row = mysql_fetch_object($select))
{
 $i++;
 If ($i == $eigenerplatz){
 echo "$i - Ausgabe der Daten fett geschrieben";
 } else {
 echo "$i - Ausgabe der Daten";
}

so oder so ähnlich ;)

mfg Spikaner
 
Problem ist aber der eigene Platz muss ja nicht in der Abfrage vorkommen.

Sagen wir ich bin auf Platz 200. Die Plätze sind ja nicht in der Datenbank vorhanden, sondern werden anhand der Sortierung durch $i ermittelt.
Da also nur eine bestimmte Datensatzanzahl vorher angezeigt, entspricht $i = $page*$maxproseite-$maxproseite.

Nun ich lasse mir jetzt anzeigen: Plätze 50 - 100.

Jetzt bin ich in der Auswahl nicht dabei.

Aber ich soll trotzdem mit 2 User vor mir und 2 User nach mir vor der Tabelle angezeigt werden. Wäre also mit deinem Vorschlag nicht möglich.

Vielleicht hatte ich mich aber auch falsch ausgedrückt?

Noch jemand eine Idee?
Gruß Ronny
 
Du hasst nee anzahl von Seiten, weißt wieviele user pro seite angezeigt werden, eigene id .. was brauchst du mehr ?
$userproseite = 50;
$seitedieangezeigtwird = $seite
$eigenepositon = $userproseite * $seitedieangezeigtwird + $i;
If ($eigenepositon == $eigenerplatz){ ...

so in der Art ...

mfg Spikaner
 
Ja aber den eigenen Platz habe ich doch nicht!

Ich sortiere nach einer Variable die Tabelle mit Limit 0,50. Da ich aber selbst bei der Abfrage LIMIT 150,200 dabei bin, habe ich den Datensatz also auch nicht in der Abfrage von LIMIT 0,50 drin.

Insofern kann ich meinen eigenen Platz auch nicht ausgeben mit 2 Usern vor und nach mir. Es nützt mir doch auch gar nichts, weil mein Platz doch nicht fest in der Datenbank verankert wird. Wäre ja auch blöd bei jedem Abruf jeden Datensatz im Ranking zu updaten, vor allem weil ich nach mehreren Kriterien sortieren lasse.

Insofern ist das was du schreibst gar nicht möglich.

$eigenerplatz existiert nicht.

Also kann ich auch nicht in der Abfrage der Plätze von 1-50 auf Platz 200 zugreifen. Ich glaube du verstehst mich da nicht richtig :(
 
Ja aber dann eine Punktzahl oder etc... irgendwo muss ja Platz 1 herkommen , und genau da prüfst du dann ob es eine darüber darunter die eigene ist, wie ist denn die Tabelle ansich aufgebaut ?

mfg spikaner
 
Die Tabelle sieht wie folgt aus:

userid | name | einwohner | level | hoch

Dabei sind natürlich alle Spalten Integerwerte, außer der Name.

Ich verstehe im Grundprinzip was du meinst mit dem prüfen darüber und darunter. Nur verstehe ich nicht wie ich herausbekommen soll, welchen Platz ich selbst habe, wenn ich nicht in der Abfrage vorkomme.

Die Tabelle muss ja im Groben wie folgt aussehen:

198. User vor mir
199. User vor mir
200. Ich selbst
201. User hinter mir
201. User hinter mir
-----------------------------
1. User 1
2. User 2
3. User 3
4. User 4
5. User 5
................
................
................
47. User 47
48. User 48
49. User 49
50. User 50

Da ich aber in der SELECT Abfrage von LIMIT 0,50 nicht vorkomme, kann ich ja auch meine Punktzahlen nicht erhalten weißt du was ich meine? Okay ich könnte eine separate Abfrage nach meiner ID machen über die SESSION["id"]. Aber wie setze ich die Punkte dann in Zusammenhang mit den Plätzen? Ich prüfe per 2. DB Abfrage, wieviele Datensätze weniger als meine Punktzahl haben oder wie?
 
Wie wäre es dann mit
PHP:
while ($row = mysql_fetch_object($select))
{
 $i++;
 If ($row['name'] == $_SESSION['eigener name']){
 echo "$i - Ausgabe der Daten fett geschrieben";
 } else {
 echo "$i - Ausgabe der Daten";
}

mfg Spikaner
 
Zurück