php datenbank rangliste

hi

folgende ausgangssituiation:

ich hab eine tabelle darin 2 Spalten eine Spalte der Username stehen in der anderen Spalte stehen Zahlen

so ich hab nun in der php datei die variable für den user etz möchte ich anzeigen welchen platzt er nach der zahl belegt also die höchste zahl platzt 1 die 2. platzt 2 usw.

wie realisier ich etz das am besten das der platzt angezeigt wird? ich komm da irgendwie nicht drauf wie ich das machen kann ?( ?(

hoffe auf tatkräftige hilfe ;)

mfg

chrisi01
 
Beim abrufen folgenden String verwenden

Code:
SELECT * FROM users ORDER BY zahl

Wenn es die falsch Reihenfolge ist, dann folgenden:

Code:
SELECT * FROM users ORDER BY zahl DESC
 
danke

soweit war ich auch schon das problem ist, wie bekomm ich dann zum platzt? also welcher platzt er gesammt ist? ich bekomms da ja nur sortiert raus!

mfg

chrisi01
 
Ich verstehe nicht ganz. Sollen die Zahlen addiert werden, wenn die Reihenfolge nicht der Platz ist ? Oder was möchtest du ganz genau ausgegeben haben ?

Der Hesse
 
also es liegen etz z.b. 3 user drinnen:

user1 200
user2 300
user3 400

wenn nun user 2 angemeldet ist (was schon funktioniert mit session usw.) soll er ausgeben du bist auf platzt 2 wenn user 1 dann halt platzt 3 und wenn user3 dann eben platzt 1

mfg

chrisi01
 
Aha. Also legen wir mal los. Ich sage jetzt mal, in deinem PHP Script ist der angemeldete Username in der Variable $user. In der Tabelle heissen die Spalten USER und PLATZ. Musst du halt mit deinen echten Werten ergänzen. Meine PHP Anweisung würde jetzt so aussehen.

Code:
$sql = "select * from Tabelle order by PLATZ desc"; 
$erg = mysql_query($sql); 
$zaehler = 0; 
while ($row = mysql_fetch_objekt($erg)) 
{ 
zaehler = zaehler + 1;
if ($row->USER = $user)
{ 
echo "Hallo $user, du bist auf Platz $zaehler"; 
}
}

Ich bin mir jetzt nicht sicher, ob du desc in der SQL Anweisung brauchst oder nicht. Gib mal ein Feedback ob es funktioniert. War jetzt aus der Kalten programmiert.

Der Hesse
 
danke drauas kann ich es evtl. hinbekommen bekomm zar noch foglenden fehler:

Fatal error: Call to undefined function: mysql_fetch_objekt() in /srv/www/htdocs/php/test2.php on line 22

wobei line 22 folgende ist:

while ($row = mysql_fetch_objekt($erg))

werds mir nochmal selber angucken vllt. komm ich selber druff *g* danke dir schonmal über weitere hilfe wär ich trotzdem dankbar

mfg

chrisi01
 
Oh Mann. Das passiert wenn man aus der Kalten programmiert. Natürlich muss es heissen :

mysql_fetch_object($erg);

Englisch und Deutsch sind halt immer noch ein wenig anders.

Der Hesse
 
lol hät ich selber draufkommen können :D willste die ausgabe wissen?

Hallo chrisi01, du bist auf Platz 1Hallo chrisi01, du bist auf Platz 2Hallo chrisi01, du bist auf Platz 3Hallo chrisi01, du bist auf Platz 4Hallo chrisi01, du bist auf Platz 5

und nun? so ganz ok is das net *fg* :D :D :D

ok fehler:
if (irgendwas = <-- HIER FEHLT EIN =)

das problem wenn ich das = hinmach dann gibts gar keine ausgabe mehr


mfg

chrisi01
 
Stimmt. Es muss heissen:

Code:
if ($row->USER == $user)

Aber damit muss eine Ausgabe kommen. Bist du sicher, dass alle Variablen stimmen ? $user ist der User, der grade angemeldet ist und $row->USER ist der User der in der DB steht.

Wenn du möchtest, dann kannst du mir dein Projekt mit SQL-Dump mal schicken, ich schau es mir dann an.
 
viel zu schicken gibts da net.

http://chrisi01.no-ip.org/php/test.php ist die php datei

in der datenbank sieht es folgendermaßen aus: Bn (user) ranglist (platzt) dazwischen sind noch paar andere spalten aber die dürften nicht stören oder? die tabelle heißt waren.

ich hab jetzt folgendes gemacht:

PHP:
      while ($row = mysql_fetch_object($erg))
      {
      $zaehler = $zaehler + 1;
      echo "$user"; (<-- DAS IST WICHIG!!!!!)
         if ($row->Bn == $user)
         {
         echo "Hallo $user, du bist auf Platz $zaehler";

dann erhalt ich als ausgabe:

chrisi01chrisi01chrisi01chrisi01chrisi01

was heißt der läuft die schleife 5x ab (genausoviele user wie in der db stehen obwohl der user chrisi01 auf platzt 1 sein müsste und demnach die schleife nur einmal ablaufen dürfte oder?)

mfg

chrisi01
 
Die Schleife läuft 5 mal durch, das ist korrekt. So oft, wie Datensätze in der DB sind. Bei jedem Durchlauf prüft die If Anweisung, ob der angemeldete User in der Datenbank ist und auf welchem Platz er steht ($zaehler). Die SQL Anweisung holt die größte Punktzahl zuerst, d.h. du bist auf dem ersten Platz.

Heißt die Spalte BN, bn, oder Bn ? Das ist wichtig. Eigendlich müsste einmal die Ausgabe der If-Bedingung kommen.

Der Hesse
 
da werden die 5 Benutzernamen aus der db angezeigt aber irgendwie nach nix geordnet is für mich zufall wie die angezeigt werdens eh darin keine ordnung

mfg

chrisi01
 
Das check ich jetzt nicht mehr. Wenn alle User angezeigt werden, und mind. 1 User gleich dem angemeldeten User ist, dann MUSS die If Anweisung ausgeführt werden. Es geht ja gar nicht anders.
Ich bin jetzt echt ein wenig fertig. Wo ist der Fehler ?????????????

Der Hesse
 
mir gehts genauso ich seh wohl den wald vor lauter bäumen nicht ?( ?( ?(

wer kann uns helfen? ich kann heut nacht bestimmt nicht schlafen und morgen arbeiten wird ebenfalls eine qual
 
ICH HABS ICH HABS

ich hab den login mit username: chrisi01 gemacht allerdings steh ich in der db mit Chrisi01 ist wohl irgendwie beim einloggen kein problem und funzelt auch aber in den script funzt es net lol naja wenn ich mich mit Chrisi01 einlogg hauts hin das ganze nur ein problem User1: 300 Punkte User2: 200 Punkte User3: 100 Punkte ich bin user 2 werd aber als 3. platzt angezeigt?!? UND USER 3 wird auf platzt 2 gelistet was zur hölle soll das? und etz das beste user1 wird auf platzt 1 gelistet?!????

wie zum teufel kann das gehen?

und wie bekomm ich das hin damit die groß/kleinschreibung egal ist?

mfg

chrisi01

//ich geh etz pennen morgen gehts weiter :D
 
Zurück
Oben