Nochmal ein Versuch zum Thema "Tendenzpfeile" (komplett anderes Thema, deswegen neuer Post) ...
Ich habe mir die ganze Geschichte mal angesehen (zum ersten Mal, übles Zeug

) und habe folgende Änderungen vorgenommen, die ich zum Nachvollziehen (für die-/denjenigen, die das ursprünglich gebaut haben) mal kommentiere.
Wäre nicht schlecht, wenn ein paar Leute das testen könnten, das scheint ja momentan die letzte Baustelle zu sein.
Datei:
em_stats.php
folgender Code
Code: Alles auswählen
// absolute position now
$int_userpos_absolute = $i+1;
// user position yesterday
$int_userpos_yesterday = get_rank_of_yesterday($em_users_data[$i]['tipp_user']);
// compare the absolute positions
if($int_userpos_yesterday < $int_userpos_absolute )
{
$userpos_change = '<img src="./images/em/down.gif" alt="Down" border="0" />';
}
else if ($int_userpos_yesterday == $int_userpos_absolute )
{
$userpos_change = '<img src="./images/em/stay.gif" alt="Stay" border="0" />';
}
else if ($int_userpos_yesterday > $int_userpos_absolute )
{
$userpos_change = '<img src="./images/em/up.gif" alt="Up" border="0" />';
}
$int_userposalt = $int_userpos;
$int_userpos = ($int_userpkt != $em_users_data[$i]['user_points']) ? $int_userpos + 1 : $int_userpos;
soll die aktuelle Position mit der vergleichen, die der User gestern gehabt hat.
Aber: die Variable
$int_userpos_absolute enthält nur "$i+1" also die Position des Users im Array (+1). Das Array ist zwar bereits nach Punkten sortiert, es können aber mehrere User auf demselben Platz sein, was hierbei nicht berücksichtigt wird, es wird einfach das Array durchgezählt. Deswegen stimmt der Rangvergleich so nicht, und deswegen werden momentan - vor dem ersten Anstoß - bis auf den ersten User nur rote Pfeile angezeigt. Später im Turnier wird es dann wahrscheinlich auch immer so sein, daß nur der erste User, der sich einen Platz mit anderen teilt, die richtige Tendenz hat.
Daher habe ich den Code wie folgt abgeändert:
Code: Alles auswählen
$int_userposalt = $int_userpos;
$int_userpos = ($int_userpkt != $em_users_data[$i]['user_points']) ? $int_userpos + 1 : $int_userpos;
// user position yesterday
$int_userpos_yesterday = get_rank_of_yesterday($em_users_data[$i]['tipp_user']);
// compare the absolute positions
if($int_userpos_yesterday < $int_userpos )
{
$userpos_change = '<img src="./images/em/down.gif" alt="verschlechtert" title="verschlechtert" border="0" />';
}
else if ($int_userpos_yesterday == $int_userpos )
{
$userpos_change = '<img src="./images/em/stay.gif" alt="unverändert" title="unverändert" border="0" />';
}
else if ($int_userpos_yesterday > $int_userpos )
{
$userpos_change = '<img src="./images/em/up.gif" alt="verbessert" title="verbessert" border="0" />';
}
Damit wird jetzt
zuerst berechnet, wie denn die aktuelle Position überhaupt aussieht (mit Berücksichtigung, daß mehrere User auf demselben Platz sein können),
dann wird die Position von gestern geholt und mit der aktuellen verglichen.
(Zusätzlich habe ich die alt-Texte der Bilder verändert, aber das ist ja pure Kosmetik.)
Vorausgesetzt, daß die Funktion
get_rank_of_yesterday korrekt funktioniert (die ist, genau wie der jetzt von mir korrigierte Code, nicht von mir und wurde von mir nicht geprüft), sollte das meinem Verständnis nach jetzt korrekt funktionieren.
Bei mir sind nach dieser Änderung alle User auf "unverändert", trage ich ein erstes Ergebnis ein, ist der komplette erste Platz auf "unverändert", alle folgende stehen auf "verschlechtert" - soweit stimmt das.
Eine Verifikation auf einem anderen System (wenn möglich mit Durchspielen mehrere Spieltage inkl. Datumsänderungen) wäre nicht schlecht.
Soweit von mir, mir qualmt die Rübe ...
B.