diff options
author | Arun Persaud <arun@nubati.net> | 2008-05-04 19:40:10 -0700 |
---|---|---|
committer | Arun Persaud <arun@nubati.net> | 2008-05-04 19:40:10 -0700 |
commit | 981c12ce5d5aaf606584a4ab59054316d2b6c6c2 (patch) | |
tree | c6b6d3eda8483a392ea14d3622356d19c3f70b8b | |
parent | 64f953012ebda0912a4e92ff3301f09957019477 (diff) | |
download | e-DoKo-981c12ce5d5aaf606584a4ab59054316d2b6c6c2.tar.gz e-DoKo-981c12ce5d5aaf606584a4ab59054316d2b6c6c2.tar.bz2 e-DoKo-981c12ce5d5aaf606584a4ab59054316d2b6c6c2.zip |
NEW FEATURES: show global statistic
show points/game for all players that have 10 or more games
Signed-off-by: Arun Persaud <arun@nubati.net>
-rw-r--r-- | include/db.php | 13 | ||||
-rw-r--r-- | include/functions.php | 62 | ||||
-rw-r--r-- | include/stats.php | 5 |
3 files changed, 73 insertions, 7 deletions
diff --git a/include/db.php b/include/db.php index 42d2bef..b13c0f0 100644 --- a/include/db.php +++ b/include/db.php @@ -919,10 +919,15 @@ function DB_get_gameids_of_finished_games_by_session($session) { $ids = array (); - $queryresult = mysql_query("SELECT id FROM Game ". - " WHERE session=$session ". - " AND status='gameover' ". - " ORDER BY create_date ASC"); + if($session==0) /* return all games */ + $queryresult = mysql_query("SELECT id FROM Game ". + " WHERE status='gameover' ". + " ORDER BY create_date ASC"); + else /* return games in a session */ + $queryresult = mysql_query("SELECT id FROM Game ". + " WHERE session=$session ". + " AND status='gameover' ". + " ORDER BY create_date ASC"); $i=0; while($r = mysql_fetch_array($queryresult,MYSQL_NUM) ) diff --git a/include/functions.php b/include/functions.php index 4abaf93..2e4c083 100644 --- a/include/functions.php +++ b/include/functions.php @@ -838,7 +838,6 @@ function display_user_menu() function generate_score_table($session) { - /* get all ids */ $gameids = DB_get_gameids_of_finished_games_by_session($session); @@ -892,4 +891,65 @@ function generate_score_table($session) return $output; } +function generate_global_score_table() +{ + /* get all ids */ + $gameids = DB_get_gameids_of_finished_games_by_session(0); + + if($gameids == NULL) + return ""; + + /* get player id, names... from the User table */ + $player = array(); + $result = mysql_query("SELECT User.id, User.fullname FROM User"); + + while( $r = mysql_fetch_array($result,MYSQL_NUM)) + $player[] = array( 'id' => $r[0], 'name'=> $r[1], 'points' => 0 ,'nr' => 0); + + /* get points and generate table */ + foreach($gameids as $gameid) + { + $re_score = DB_get_score_by_gameid($gameid); + /* TODO: this shouldn't loop over all players, just the 4 players that are in the game */ + foreach($player as $key=>$pl) + { + $party = DB_get_party_by_gameid_and_userid($gameid,$pl['id']); + if($party == "re") + if(DB_get_gametype_by_gameid($gameid)=="solo") + $player[$key]['points'] += 3*$re_score; + else + $player[$key]['points'] += $re_score; + else if ($party == "contra") + $player[$key]['points'] -= $re_score; + if($party) + $player[$key]['nr']+=1; + } + } + + echo "<table>\n <tr>\n"; + function cmp($a,$b) + { + if($a['nr']==0 ) return 1; + if($b['nr']==0) return 1; + + $a=$a['points']/$a['nr']; + $b=$b['points']/$b['nr']; + + if ($a == $b) + return 0; + return ($a > $b) ? -1 : 1; + } + usort($player,"cmp"); + foreach($player as $pl) + { + if($pl['nr']>10) + echo " <tr><td>",$pl['name'],"</td><td>",round($pl['points']/$pl['nr'],3),"</td></tr>\n"; + } + echo "</table>\n"; + + return; +} + + + ?> diff --git a/include/stats.php b/include/stats.php index cbfd866..bde6a09 100644 --- a/include/stats.php +++ b/include/stats.php @@ -228,8 +228,9 @@ echo "</p>\n"; echo $r[1]." (".$r[0].") <br />\n"; echo " games</p>\n"; */ - - +echo "<p>Points/game (you need at least 10 games to be in this statistic): <br />\n"; +generate_global_score_table(); +echo "</p>\n"; /* how often is the last trick a non-trump trick */ |