Seite 150 von 204

Verfasst: 13.06.2006 23:53
von jorymiller
zweistein hat geschrieben:
Soki Sokrates hat geschrieben: Dann sollte es bei gleichem Punktstand alphabetisch sortiert sein und zwei gleichplatzierte den gleichen Platz inne haben.
Dafür hab ich bereits eine Lösung gecodet und weiter vorne auch schon gepostet. Muss jetzt leider weg.

Empfehle Dir die Suchfunktion. Ansonsten post ich morgen noch mal den Link auf meinen Beitrag.

Verfasst: 14.06.2006 00:00
von Soki Sokrates
jorymiller hat geschrieben:
zweistein hat geschrieben:
Soki Sokrates hat geschrieben: Dann sollte es bei gleichem Punktstand alphabetisch sortiert sein und zwei gleichplatzierte den gleichen Platz inne haben.
Dafür hab ich bereits eine Lösung gecodet und weiter vorne auch schon gepostet. Muss jetzt leider weg.

Empfehle Dir die Suchfunktion. Ansonsten post ich morgen noch mal den Link auf meinen Beitrag.
O.K. Danke. ich such gleich mal. Ansonsten warte ich noch gespannt auf zweisteins Ranglisten. *hoff*

Verfasst: 14.06.2006 00:26
von Einste1n

Verfasst: 14.06.2006 01:37
von Soki Sokrates
Hier noch ein weiterer Anreiz (für spätere MODs) (vielleicht kann ich das ja selbstr bis zur EM2008): http://www.onanierfreun.de/wm2006.php

Die Tabellen direkt sehen zu können, wäre sehr interessant (für später natürlich, muss nicht jetzt sein).

Ansonsten: DANKE hab das mit der Sortierung hingekriegt.

Verfasst: 14.06.2006 01:55
von zweistein
@Soki Sokrates: Die Umsetzung der Tendenz hat mich gereizt. Die anderen beiden Statistik Add-ons werde ich wahrscheinlnich Do nachreichen....


Habe nun umgesetzt, dass man die Tendenz sieht:

[ externes Bild ]
(die Lupe ist ein weiteres Addon das ich ev. am Do poste)

ACHTUNG:
Für die Ermittlung der Ränge wird die Aufsplittung der Punkte benutztm daher sollte die Anzeige auch demenstprechend aussehen. Hier das Addon: http://www.phpbb.de/viewtopic.php?p=715103#715103

Features:
- zum Vergleich wird der Rang des letzten Tages mit einem Spiel verwendet
- unabhängig davon ob vorne bspw. (1, -, -, 2, -, 3,...) oder (1,2,3,4,5,...) angezeigt wird wird mit der absoluten Platzierung (1,2,3,4,5,...) verglichen


ACHTUNG:
- Ob die Tendenz tatsächlich richtig angezeigt wird muss die nächsten Tage noch überprft werden.


Hier die benötigten Grafiken (falls jemand schönere, ev rot grün hat, bitte melden):

http://wiwico.de/images/wm/stay.gif
http://wiwico.de/images/wm/up.gif
http://wiwico.de/images/wm/down.gif


Hier die Änderungen (von mehreren Personen bestätigt, siehe folgenden Posts):

Code: Alles auswählen

#
#-----[ COPY ]------------------------------------------
#
images/wm/up.gif
images/wm/stay.gif
images/wm/down.gif


#
#-----[ OPEN ]------------------------------------------
#

include/functions_wm.php

#
#-----[ FIND ]------------------------------------------
# 

	$db->sql_freeresult($result);

	return $wm_users;

 }


#
#-----[ ADD, AFTER ]------------------------------------------
# 
  // Get wm users data and points 	up to yesterday
 // for historical information
 function get_wm_user_points_up_to_yesterday() {

        global $db;

	// Load Config
		$wm_config    = array();  // Config values
		$wm_config    = get_wm_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  " . WM_TIPPS_TABLE . " A 
		 LEFT JOIN " . WM_TIPPS_TABLE . " B ON A.tipp_id = B.tipp_id 
		 AND A.tipp_points = " . $wm_config['points_tendency'] . " 
		 LEFT JOIN " . WM_TIPPS_TABLE . " C ON A.tipp_id = C.tipp_id 
		 AND A.tipp_points = " . $wm_config['points_tordiff'] . " 
		 LEFT JOIN " . WM_TIPPS_TABLE . " D ON A.tipp_id = D.tipp_id 
		 AND A.tipp_points = " . $wm_config['points_match'] . "
		 WHERE A.tipp_time < ". $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";


				
	if( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not get historical user tipps data', '', __LINE__, __FILE__, $sql);
	}

	$wm_user_points_up_to_yesterday = array();
	while ( $row = $db->sql_fetchrow($result) )
	{
	//	$wm_users[][$row['tipp_user']] = $row;
	   $wm_user_points_up_to_yesterday[] = $row['tipp_user'];
	}
	$db->sql_freeresult($result);

	return $wm_user_points_up_to_yesterday;

 }
 
 function get_timestamp_for_ranking_history(){

    global $db;
		
	$timestamp_now=time();
	
	$month = strftime("%m",$timestamp_now);
	$day = strftime("%d",$timestamp_now);
	$year = strftime("%Y",$timestamp_now);
	
	$timestamp_today_begin = mktime(0,0,0,$month,$day,$year);
	$timestamp_today_end = mktime(23,59,0,$month,$day,$year);
	
	$timestamp_first_game_of_today;
	$timestamp_first_game_of_last_day_with_a_game;
	$timestamp_last_game_of_last_day_with_a_game;
	
	// get playing times of today
	$sql = "SELECT game_time 
		FROM  " . WM_GAMES_TABLE . "
		WHERE game_time > ". $timestamp_today_begin ." 
			AND game_time < ". $timestamp_today_end ." 
        ORDER BY game_time ASC";
		
	if( !($result_times = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not get playing times of today', '', __LINE__, __FILE__, $sql);
	}	
	
	$row_times = $db->sql_fetchrow($result_times);
	$timestamp_first_game_of_today = $row_times['game_time'];


	if($timestamp_first_game_of_today < $timestamp_now){
		// first game of today has started -> use all results before this game
		return $timestamp_first_game_of_today;
	}else{
		// first game of today is not started 
		// saerch the first game of last playing day
		$sql = "SELECT game_time 
			FROM  " . WM_GAMES_TABLE . "
			WHERE game_time < ". $timestamp_today_begin ." 
			ORDER BY game_time DESC";
		if( !($result_times = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Could not get playing times of today', '', __LINE__, __FILE__, $sql);
		}	
		
		$row_times = $db->sql_fetchrow($result_times);
		$timestamp_last_game_of_last_day_with_a_game = $row_times['game_time'];
			
		$month_last_day_with_a_game = strftime("%m",$timestamp_last_game_of_last_day_with_a_game);
		$day_last_day_with_a_game = strftime("%d",$timestamp_last_game_of_last_day_with_a_game);
		$year_last_day_with_a_game = strftime("%Y",$timestamp_last_game_of_last_day_with_a_game);
		
		$timestamp_last_day_with_a_game_begin = mktime(0,0,0,$month_last_day_with_a_game,$day_last_day_with_a_game,$year_last_day_with_a_game);
		$timestamp_last_day_with_a_game_end = mktime(23,59,0,$month_last_day_with_a_game,$day_last_day_with_a_game,$year_last_day_with_a_game);
			
		
		$sql = "SELECT game_time 
			FROM  " . WM_GAMES_TABLE . "
			WHERE game_time > ". $timestamp_last_day_with_a_game_begin ." 
				AND game_time < ". $timestamp_last_day_with_a_game_end ." 
			ORDER BY game_time ASC";
		if( !($result_times = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Could not get playing times of today', '', __LINE__, __FILE__, $sql);
		}	
		
		$row_times = $db->sql_fetchrow($result_times);
		$timestamp_first_game_of_last_day_with_a_game = $row_times['game_time'];

		return $timestamp_first_game_of_last_day_with_a_game+1; // +1 becaouse of the < comparison
	}

 }
 
 
 function get_rank_of_yesterday($userid){
 
	$wm_user_points_up_to_yesterday = get_wm_user_points_up_to_yesterday();
	
	$rank_of_yesterday = array_search($userid, $wm_user_points_up_to_yesterday) + 1; // +1 because erray starts with index 0	
 	 
	 return $rank_of_yesterday;	
 }



#
#-----[ OPEN ]------------------------------------------
#
wm_stats.php

#
#-----[ FIND ]------------------------------------------
# 

for ( $i = 0; $i < count($wm_users_data); $i++ )
{

#
#-----[ ADD, AFTER ]------------------------------------------
# 

	// absolute position now
	$int_userpos_absolute = $i+1;
	
	// user position yesterday
	$int_userpos_yesterday = get_rank_of_yesterday($wm_users_data[$i]['tipp_user']);

	// compare the absolute positions
	if($int_userpos_yesterday < $int_userpos_absolute ){
		$userpos_change = '<img src="./images/wm/down.gif" alt="Down" border="0" />';	
	}else if ($int_userpos_yesterday == $int_userpos_absolute ){
		$userpos_change = '<img src="./images/wm/stay.gif" alt="Stay" border="0" />';		
	}else if ($int_userpos_yesterday > $int_userpos_absolute ){
		$userpos_change = '<img src="./images/wm/up.gif" alt="Up" border="0" />';	
	} 


#
#-----[ FIND ]------------------------------------------
# 

      'USER_WM_MADE'      => $wm_users_data[$i]['user_total_tipps'],

#
#-----[ ADD, AFTER ]------------------------------------------
# 

	  'USER_WM_POS_CHANGE' => $userpos_change,


#
#-----[ OPEN ]------------------------------------------
#
wm_stats_body.tpl


#
#-----[ FIND ]------------------------------------------
# 

><span class="cattitle"><a href="#">{L_WM_TITLE}</a></span></td>

#
#-----[ ATTENTION - special change ]------------------------------------------
#

Count up the colspan, for example

CHANGE <td class="cat" colspan="8"> 
TO     <td class="cat" colspan="9">

#
#-----[ FIND ]------------------------------------------
# 

    <td class="row2" align="center" nowrap="nowrap" valign="middle">  <strong><span class="genmed">{L_WM_STATS_POS}</span></strong>  </td>

#
#-----[ ADD, AFTER ]------------------------------------------
# 

    <td class="row2" align="center" nowrap="nowrap" valign="middle"> </td>


#
#-----[ FIND ]------------------------------------------
# 

    <td class="row1" align="center" nowrap="nowrap" valign="middle">  <strong><span class="genmed">{userrow.USER_POS}</span></strong>  </td>


#
#-----[ ADD, AFTER ]------------------------------------------
# 

    <td class="row1" align="center" nowrap="nowrap" valign="middle"> {userrow.USER_WM_POS_CHANGE}</td>


Verfasst: 14.06.2006 02:52
von SoLo1905
[ externes Bild ]

*klick* dann auf der seite in der mitte :P selber gemacht ^^

Verfasst: 14.06.2006 05:41
von Soki Sokrates
Schade, dann warte ich bis Donnerstag sehnsüchtigst.

Andererseits super, dass du dich an die Tendenzanzeige gesetzt hast. Bau ich gleich mal ein und feedbacke!

Verfasst: 14.06.2006 05:52
von Soki Sokrates
Klappt wunderbar! BRAVO.

Ein grüner Pfeil wäre wohl wirklich schöner, jedoch hat der gepostete Pfeil von Solo1905 den Nachteil an entsprechender Stelle nicht transparent zu sein und somit etwas unschön zu sein auf z.B. ockergelben Background. Habe deshalb wieder den blauen genommen.

BRAVO, BRAVO!

Weiter so. Vielleicht bist du ja schneller als Don. 8)

Verfasst: 14.06.2006 06:16
von Soki Sokrates
Mir ist grad was aufgefallen in meiner Rangliste:

1 1ter Brasilien 3x 6x 2x 37
2 2ter Brasilien 3x 4x 3x 33
3 3ter A Deutschland 4x 2x 3x 32
3ter B Deutschland 3x 1x 7x 32

Wegen den 4 richtigen Tippen müsste 3ter A nicht nur bei der Sortierung (hier ja richtig) vor 3ter B liegen, Sondern und vor allem einen eigenen Platz inne haben, weil er trotz der Punkte bessere Perfect-Tips hatte.

Also 3ter A als einzigster 3. und 3ter B eigentlich 4ter.

Kann man das also nicht nur in der Sortierfolge sondern auch der Rangfolge einbauen?

Ausserdem versteh ich nicht wieso da immer stehen muss wieviel Tips jeder abgegeben hat. Dient zwar a bissel der Errinerung, falls man noch was tippen muss, aber so richtig nützen tut es nicht. Viel eher fände ich es gut, (muss ja auch nicht in einer Spalte sein) die Anzeige wieviele Spiele bereits vorbei sind und in die Wertung eingegangen sind. Durch die leichte Benotung (5Pkt.) könnte man dann schnell sehen, wieviel max. Punkte bereits mögich waren (vielleicht auch wieviele noch möglich sind).

Wenn Spalte, dann könnte man zeigen, bei wievielen erfolgten Spielen man auch wirklichmitgetippt hat, dann kann man vielleicht noch sehen, dass ein Schussel vergessen hat 3 Spiele zu tippen und zumindest relativ gesehen ein sehr guter Tipper ist.

Nur so Ideen, die mir morgens so durch den Kopf gehen. Vielleicht sind diese ja auch Humbuck.

Ach so: Was ich noch endlustig fände, wäre wenn man die Geschlechtszeichen aus der Datenbank entziehen kann und neben dem Namen in die Rangliste ausführen kann. Einige haben es im Profil zwar nicht angegeben, aber wenn es doch viele machen, sieht man wer beim Kampf der Geschlechter besser tippt.

[ externes Bild ]
[ externes Bild ]

Verfasst: 14.06.2006 08:17
von plACEbo
Soki Sokrates hat geschrieben:Klappt wunderbar! BRAVO.

Ein grüner Pfeil wäre wohl wirklich schöner, jedoch hat der gepostete Pfeil von Solo1905 den Nachteil an entsprechender Stelle nicht transparent zu sein und somit etwas unschön zu sein auf z.B. ockergelben Background. Habe deshalb wieder den blauen genommen.

BRAVO, BRAVO!

Weiter so. Vielleicht bist du ja schneller als Don. 8)
Hier der Pfeil in grün mit Transparenz in den Aussenbereichen:
[ externes Bild ] http://www.poplatschky.de/images/wm/up.gif

mfg