Tritt bei mir auch auf, scheint ein Fehler in der Punktevergabe für "Sonderpunkt bei alleiniger korrekter Tipp" zu sein ... müßte am besten mal derjenige drüberkucken, der das ursprünglich gebaut hat (Patch ?).dasinnerevombrötchen hat geschrieben:wie kann es denn sein, dass zwei user, die beide erste spiele korrekt getippt haben, unterschiedliche punkte haben?
Da nich fürdouble78 hat geschrieben:nun ist er weg,thx buegelfalte

Und hier nochmal ein Versuch zur Korrektur dieser nervigen Tendenzpfeile - ich habe die vorhandenen Funktionen jetzt ein paar Stunden lang komplett auf links gezogen und kann folgende Lösung anbieten, die jetzt endlich die korrekten Tendenzen anzuzeigen scheint. (Und noch schneller läuft, da nicht für jeden User wieder ALLE Tipps bis vor dem letzten Spiel geholt werden, wie das vorher der Fall war.)
em_stats.php
finden
Code: Alles auswählen
for ( $i = 0; $i < count($em_users_data); $i++ )
{
$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" />';
}
Code: Alles auswählen
$arr_oldranks = array();
$arr_oldranks = get_em_user_points_up_to_yesterday();
for ( $i = 0; $i < count($em_users_data); $i++ )
{
$int_userposalt = $int_userpos;
$int_userpos = ($int_userpkt != $em_users_data[$i]['user_points']) ? $i + 1 : $int_userpos;
$int_userposabsolute = ($int_userpkt != $em_users_data[$i]['user_points']) ? $int_userposabsolute + 1 : $int_userposabsolute;
// user position yesterday
$int_userpos_yesterday = $arr_oldranks[$em_users_data[$i]['tipp_user']];
// compare the absolute positions
if($int_userpos_yesterday < $int_userposabsolute )
{
$userpos_change = '<img src="./images/em/down.gif" alt="Down" border="0" />';
}
else if ($int_userpos_yesterday == $int_userposabsolute )
{
$userpos_change = '<img src="./images/em/stay.gif" alt="Stay" border="0" />';
}
else if ($int_userpos_yesterday > $int_userposabsolute )
{
$userpos_change = '<img src="./images/em/up.gif" alt="Up" border="0" />';
}
finden
Code: Alles auswählen
function get_em_user_points_up_to_yesterday() {
global $db;
// Load Config
$em_config = array(); // Config values
$em_config = get_em_config();
$timestamp_last_game_before_this_day = get_timestamp_for_ranking_history();
//
// Get users data
//
$int_userpkt = -1;
$int_userpos = 0;
$sql = "SELECT A.tipp_user , sum( A.tipp_points ) AS user_points, count( A.tipp_points ) AS user_total_tipps, count(
B.tipp_points ) AS user_points_tendency, count( C.tipp_points ) AS user_points_difference, count( D.tipp_points ) AS user_points_result
FROM " . EM_TIPPS_TABLE . " A
LEFT JOIN " . EM_TIPPS_TABLE . " B ON A.tipp_id = B.tipp_id
AND A.tipp_points = " . $em_config['points_tendency'] . "
LEFT JOIN " . EM_TIPPS_TABLE . " C ON A.tipp_id = C.tipp_id
AND A.tipp_points = " . $em_config['points_tordiff'] . "
LEFT JOIN " . EM_TIPPS_TABLE . " D ON A.tipp_id = D.tipp_id
AND A.tipp_points >= " . $em_config['points_match'] . "
inner join (Select game_id, Game_time FROM " . EM_GAMES_TABLE . " Union Select game_id, Game_time FROM " . EM_FINALS_TABLE . ") as E on E.game_id = A.tipp_game and E.game_time < ". intval($timestamp_last_game_before_this_day) ."
GROUP BY A.tipp_user
ORDER BY user_points DESC, user_points_result DESC, user_points_difference DESC, user_points_tendency DESC, tipp_user ASC";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get historical user tipps data', '', __LINE__, __FILE__, $sql);
}
$em_user_points_up_to_yesterday = array();
while ( $row = $db->sql_fetchrow($result) )
{
if ($int_userpkt != $row['user_points']) {$int_userpos = $int_userpos + 1;}
// $em_users[][$row['tipp_user']] = $row;
$em_user_points_up_to_yesterday[] = $row['tipp_user'];
if ($int_userpkt != $row['user_points']) {$int_userpos = $int_userpos + 1;}
$int_userpkt =$row['user_points'];
}
$db->sql_freeresult($result);
return $em_user_points_up_to_yesterday;
}
Code: Alles auswählen
function get_em_user_points_up_to_yesterday() {
global $db;
// Load Config
$em_config = array(); // Config values
$em_config = get_em_config();
$timestamp_last_game_before_this_day = get_timestamp_for_ranking_history();
//
// Get users data
//
$sql = "SELECT A.tipp_user , sum( A.tipp_points ) AS user_points, count( A.tipp_points ) AS user_total_tipps, count(
B.tipp_points ) AS user_points_tendency, count( C.tipp_points ) AS user_points_difference, count( D.tipp_points ) AS user_points_result
FROM " . EM_TIPPS_TABLE . " A
LEFT JOIN " . EM_TIPPS_TABLE . " B ON A.tipp_id = B.tipp_id
AND A.tipp_points = " . $em_config['points_tendency'] . "
LEFT JOIN " . EM_TIPPS_TABLE . " C ON A.tipp_id = C.tipp_id
AND A.tipp_points = " . $em_config['points_tordiff'] . "
LEFT JOIN " . EM_TIPPS_TABLE . " D ON A.tipp_id = D.tipp_id
AND A.tipp_points >= " . $em_config['points_match'] . "
inner join (Select game_id, Game_time FROM " . EM_GAMES_TABLE . " Union Select game_id, Game_time FROM " . EM_FINALS_TABLE . ") as E on E.game_id = A.tipp_game and E.game_time < ". intval($timestamp_last_game_before_this_day) ."
GROUP BY A.tipp_user
ORDER BY user_points DESC, user_points_result DESC, user_points_difference DESC, user_points_tendency DESC, tipp_user ASC";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get historical user tipps data', '', __LINE__, __FILE__, $sql);
}
$em_user_points_up_to_yesterday = array();
$int_userposabsolute = 0;
$int_pktalt = -1;
while ( $row = $db->sql_fetchrow($result) )
{
$int_userposabsolute = ($row['user_points'] != $int_pktalt) ? $int_userposabsolute + 1 : $int_userposabsolute;
$em_user_points_up_to_yesterday[$row['tipp_user']] = $int_userposabsolute;
$int_pktalt = $row['user_points'];
}
$db->sql_freeresult($result);
return $em_user_points_up_to_yesterday;
}
B.