Forum

"Platzierungen" in einer for-Schleife

Fragen & Probleme rund um PHP

"Platzierungen" in einer for-Schleife

Beitragvon tele10 am 28.01.12 19:10

Hallo,

ich habe eine Tabelle, wo ich Sachen wie Shows etc. bewerte & diese lasse ich dann via for-Schleife geordnet nach der Wertung (Hoch -> Niedrig) angeben.

Nun kommt es vor, dass einige Sachen die gleiche Wertung haben - so z.B. drei Mal die Wertung "5.47".
Die for-Schleife bietet somit natürlich bloß die einzelnen Platzierungen, in diesem Beispiel dann 55., 56. & 57.

Code: Alles auswählen
$query = mysql_query("SELECT * FROM `wertungen` ORDER BY `wertung` DESC LIMIT $start, $eintraege_pro_seite") or die(mysql_error());

for($i = $start+1; $row = mysql_fetch_assoc($query); $i++)  {
[...]
}


Ist es da irgendwie möglich, dass die Wertungen mit 5.47-Punkte alle denn 55. Platz zugewiesen bekommen & die nächst niedrigere Wertung dann eben Platz 58?


Vielen Dank. :)
tele10
Fun-Trial
 
Beiträge: 41
Registriert: 05.03.10 19:15

Re: "Platzierungen" in einer for-Schleife

Beitragvon scummos am 29.01.12 02:51

Naja, ja. Benutze eine while-Schleife, und zähl' das $i nur dann hoch, wenn das aktuelle Ergebis ungleich dem vorherigen ist.
Mein Browserspiel: http://feorar.org (wird nicht mehr weiterentwickelt)
Python-Sprachunterstützung für die KDevelop-Entwicklungsumgebung
Bitte keine Forums-Nachrichten schicken (stattdessen gern per ICQ: #263628834)
Benutzeravatar
scummos
Erfahrener User
 
Beiträge: 1666
Registriert: 30.07.07 17:45

Re: "Platzierungen" in einer for-Schleife

Beitragvon johannesms am 29.01.12 13:03

Nee, dann wird der nächste ja nur um 1 erhöht, auch wenn es dazwischen mehrere auf einem Platz gab. Geht es um die Ausgabe? Dann würd ich das dort machen und eben nur dann $i ausgeben,
scummos hat geschrieben:wenn das aktuelle Ergebis ungleich dem vorherigen ist.
Grüße, Johannes

"Mache die Dinge so einfach wie möglich - aber nicht einfacher." (A. Einstein)
http://yahia.eu || http://astro.yahia.eu
Live-Support || Funpic bei Facebook: http://www.facebook.com/Funpic.de
Kein Support per PN! (außer wenn dazu aufgefordert wurde)
Benutzeravatar
johannesms
Moderator
 
Beiträge: 7325
Registriert: 02.05.04 13:30

Re: "Platzierungen" in einer for-Schleife

Beitragvon DrHoffmann am 29.01.12 13:53

Wenn MySQL das selbst nicht anbietet, so kannst du das
ja recht einfach per PHP lösen.
Dort speicherst du jeweils die letzte Bewertung und die
letzte notierte Platzierung zwischen.
Ist die aktuelle Bewertung gleich der letzten, änderst du die
notierte Platzierung für die Ausgabe eben nicht, sonst
verwendest du für die Ausgabe als Platzierung eben, was
die for-Schleife als Zahl bietet.
Minimales Projekt XHTML+CSS+PHP zum Nachvollziehen
SVG Vektorgrafik
SVG Animationstest
Benutzeravatar
DrHoffmann
Erfahrener User
 
Beiträge: 4435
Registriert: 06.09.04 18:29
Wohnort: Hannover

Re: "Platzierungen" in einer for-Schleife

Beitragvon tele10 am 29.01.12 17:03

Klingt zwar alles schön & gut, aber eine wirkliche Idee, wie man das verwirklichen kann, ist mir dennoch nicht gegeben - auch weil ich das bis dato noch nie gemacht habe. :D
tele10
Fun-Trial
 
Beiträge: 41
Registriert: 05.03.10 19:15

Re: "Platzierungen" in einer for-Schleife

Beitragvon scummos am 29.01.12 20:13

johannesms hat geschrieben:Nee, dann wird der nächste ja nur um 1 erhöht, auch wenn es dazwischen mehrere auf einem Platz gab. Geht es um die Ausgabe? Dann würd ich das dort machen und eben nur dann $i ausgeben,
scummos hat geschrieben:wenn das aktuelle Ergebis ungleich dem vorherigen ist.

Nun, soviel Selbständigkeit habe ich dem Ersteller noch zugetraut.

Egal, hier der Pseudocode:
Code: Alles auswählen
$skip = 0;
$current = 1;
$previous_score = -1;
while ( $result = mysql_fetch_assoc($q) ) {
  if ( $previous_score == $result[score] ) {
    $skip += 1;
  }
  else {
    if ( $skip != 0 ) {
      $current += $skip;
      $skip = 0;
    }
    $current += 1;
  }
  echo $current . $result[keineahnungwas];
  $previous_score = $result[score];


Modulo off-by-one-Fehler sollte das funktionieren.
Mein Browserspiel: http://feorar.org (wird nicht mehr weiterentwickelt)
Python-Sprachunterstützung für die KDevelop-Entwicklungsumgebung
Bitte keine Forums-Nachrichten schicken (stattdessen gern per ICQ: #263628834)
Benutzeravatar
scummos
Erfahrener User
 
Beiträge: 1666
Registriert: 30.07.07 17:45


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast