Einige nutzlose, aber interessante Statistiken\n"; } $statcount = 0; $teams = Query("SELECT id, name FROM wm_teams", RESOLVE_IDS); $users = Query("SELECT id, name FROM wm_users", RESOLVE_IDS); function MatchDesc($line) { global $teams; return "" . $teams[$line['teamA']]['name'] . " – " .$teams[$line['teamB']]['name'] . " (" . MatchGroup($line['class'], $line['number']) . ")"; } function PluralSingular($n, $sg, $pl) { return ($n == 1) ? $sg : $pl; } function Percent($num, $den) { return strval(intval(($num * 100.0) / $den)) . "%"; } function Multilist($l, $key) { $cnt = count($l); $s = "{$l[0][$key]}"; if ($cnt < 2) { return $s; } for ($i = 1; $i < ($cnt - 1); $i++) { $s = "$s, {$l[$i][$key]}"; } return "$s und " . $l[$cnt - 1][$key] . ""; } function worstbetter($a, $b) { return $b['x'] - $a['x']; } function namecmp($a, $b) { return strcasecmp($a['name'], $b['name']); } function GetTopBetters(& $res, & $totals) { if (!$res) $res = array(); for ($i = 0; $i < count($res); $i++) { $t = $totals[$res[$i]['user']]['cnt']; $res[$i]['total'] = $t; $res[$i]['x'] = $res[$i]['cnt'] * 100 - $t; } usort($res, 'worstbetter'); $xmax = count($res) ? $res[0]['x'] : 0; for ($i = count($res) - 1; $i > 0; $i--) { if ($res[$i]['x'] < $xmax) unset($res[$i]); } usort($res, 'namecmp'); return count($res); } $CurrMatchCount = intval(QuerySingleValue("SELECT COUNT(*) FROM wm_matches WHERE NOT ISNULL(goalsA)", 0)); $UntilNow = ($CurrMatchCount == MatchCount) ? "" : " bisher "; $Champion = ($CurrMatchCount == MatchCount) ? GetChampion() : 0; $ChampionTeamName = $Champion ? $teams[$Champion]['name'] : ""; //////////////////////////////////////////////////////////////////////////////// if ($CurrMatchCount == MatchCount) { $n = intval(QuerySingleValue("SELECT COUNT(cnt) FROM (SELECT COUNT(*) AS cnt FROM wm_bets GROUP BY user) AS x WHERE cnt>=$CurrMatchCount", 0)); $nmax = count($users); if (($n > 1) && ($n < $nmax)) { echo "

Nur $n von $nmax Tippern (" . Percent($n, $nmax); echo ") haben Tipps für alle $CurrMatchCount "; echo "Spiele abgegeben.

\n"; } } //////////////////////////////////////////////////////////////////////////////// $res = Query(<<Der zeitlich knappste Tipp kam von "; echo "{$users[$line['user']]['name']}"; echo " für das Spiel " . MatchDesc($line); echo ": er wurde $delta vor Anpfiff abgegeben.

\n"; $statcount++; } } //////////////////////////////////////////////////////////////////////////////// $totals = Query(<< 1) { echo "

Die meisten exakten Vorhersagen machten "; echo Multilist($res, 'name') . ": für jeweils $good von $nbets Tipps ("; echo Percent($good, $nbets) . ") gab es volle " . ScoreExact . " Punkte.

\n"; } else if (count($res) == 1) { echo "

Die meisten exakten Vorhersagen machte "; echo $res[0]['name'] . ": für $good von $nbets Tipps ("; echo Percent($good, $nbets) . ") gab es volle " . ScoreExact . " Punkte.

\n"; } //////////////////////////////////////////////////////////////////////////////// $res = Query(<< SIGN(wm_matches.goalsA - wm_matches.goalsB) GROUP BY wm_users.id ORDER BY cnt DESC EOF ); if (GetTopBetters($res, $totals)) { $nbets = $res[0]['total']; $good = $nbets - $res[0]['cnt']; } if (count($res) > 1) { echo "

Kein gutes Händchen hatten " . Multilist($res, 'name'); echo ", die nur für jeweils $good von $nbets Tipps ("; echo Percent($good, $nbets) . ") Punkte kassieren konnten.

\n"; } else if (count($res) == 1) { echo "

Kein gutes Händchen: nur für $good "; echo "von $nbets Tipps (" . Percent($good, $nbets); echo ") gab es Punkte auf dem Zettel von {$res[0]['name']}.

\n"; } //////////////////////////////////////////////////////////////////////////////// $res = Query(<<= 2)) { $line = $res[0]; $pc = intval($line['ratio']); echo "

Am einfachsten vorherzusehen war der Sieger des Spiels "; echo MatchDesc($line) . ": {$line['correct']} von {$line['bets']} Tippern"; echo " ($pc%) durften sich über Punkte für dieses Spiel freuen.

\n"; $line = $res[count($res) - 1]; $pc = intval($line['ratio']); echo "

Kaum abzusehen war hingegen der Ausgang von " . MatchDesc($line); if ($line['correct'] == 0) { echo ": kein einziger der {$line['bets']} Tipper "; echo "hat Punkte für dieses Spiel erhalten.

\n"; } else if ($line['correct'] == 1) { echo ": für dieses Spiel erhielt nur ein einziger "; echo "von {$line['bets']} Tippern Punkte.

\n"; } else { echo ": bei diesem Spiel "; echo " gingen nur {$line['correct']} von {$line['bets']} Tippern"; echo " ($pc%) nicht leer aus.

\n"; } $statcount++; } //////////////////////////////////////////////////////////////////////////////// $TotalBets0 = Query("SELECT COUNT(*) AS cnt FROM wm_users WHERE NOT ISNULL(bet0) AND bet0 > 0"); $TotalBets0 = ($TotalBets0 && $TotalBets0[0]) ? $TotalBets0[0]['cnt'] : 0; $res = Query(<< 0 GROUP BY bet0 ORDER BY cnt DESC LIMIT 1 EOF ); if ($res && $res[0] && $TotalBets0) { $cnt = $res[0]['cnt']; $team = $res[0]['team']; echo "

Der häufigste " . ChampionName . "-Tipp "; echo "vor Turnierbeginn ist " . $teams[$team]['name'] . ": "; echo "$cnt von $TotalBets0 Tippern (" . Percent($cnt, $TotalBets0) . ") "; if ($team == $Champion) { echo "haben den Triumph dieser Mannschaft vorhergesehen.

\n"; } else if (!$Champion) { echo "würden diese Mannschaft gerne triumphieren sehen.

\n"; } else { echo "hätten dieser Mannschaft den Triumph zugetraut.

\n"; $res = Query("SELECT COUNT(*) AS cnt, $ANY_VALUE(name) AS name FROM wm_users WHERE bet0=$Champion GROUP BY bet0"); if ($res && $res[0]) { $cnt = $res[0]['cnt']; echo "

Den tatsächlichen " . ChampionName. ", "; echo $teams[$Champion]['name'] . ", "; if ($cnt > 1) { echo "haben hingegen nur $cnt von $TotalBets0 Tippern ("; echo Percent($cnt, $TotalBets0) . ") korrekt vorausgesagt.

\n"; } else { echo "hat hingegen " . ($cnt ? "nur ein" : "kein"); echo " einziger Tipper auf dem Zettel gehabt"; if ($cnt) echo ", nämlich {$res[0]['name']}"; echo ".

\n"; } } } } //////////////////////////////////////////////////////////////////////////////// $res = Query(<< goalsB, 100 * goalsA + goalsB, 100 * goalsB + goalsA) AS gkey FROM wm_bets GROUP BY gkey ORDER BY cnt DESC, gkey DESC LIMIT 1 EOF ); if ($res && $res[0]) { $cnt = $res[0]['cnt']; $ga = intval($res[0]['gkey'] / 100); $gb = intval($res[0]['gkey'] % 100); $TotalBets = Query("SELECT COUNT(*) AS cnt FROM wm_bets"); if ($TotalBets && $TotalBets[0]) { $TotalBets = $TotalBets[0]['cnt']; echo "

Das am häufigsten getippte Ergebnis ist "; echo "$ga:$gb: $cnt von $TotalBets Tipps ("; echo Percent($cnt, $TotalBets) . ") gehen davon aus, dass "; echo "ein Spiel so endet.

\n"; $statcount++; } } //////////////////////////////////////////////////////////////////////////////// $res = Query(<< goalsB, 100 * goalsA + goalsB, 100 * goalsB + goalsA) AS gkey FROM wm_matches WHERE NOT ISNULL(goalsA) GROUP BY gkey ORDER BY cnt DESC, gkey DESC LIMIT 1 EOF ); if ($res && $res[0] && $CurrMatchCount) { $cnt = $res[0]['cnt']; $ga = intval($res[0]['gkey'] / 100); $gb = intval($res[0]['gkey'] % 100); echo "

Das häufigste Spielergebnis ist "; echo "$ga:$gb: bei $cnt von $UntilNow $CurrMatchCount Partien ("; echo Percent($cnt, $CurrMatchCount) . ") trennten sich die Mannschaften "; echo "bei diesem Spielstand.

\n"; $statcount++; } //////////////////////////////////////////////////////////////////////////////// $res = Query(<<Das $UntilNow torreichste Spiel war " . MatchDesc($line); echo " mit {$line['goals']} "; echo "({$line['goalsA']}:{$line['goalsB']}) "; echo PluralSingular($line['goals'], "Tor", "Toren") . ".

\n"; $statcount++; } //////////////////////////////////////////////////////////////////////////////// $res = Query(<< 0 ORDER BY goaldiff DESC, time DESC LIMIT 1 EOF ); if ($res && $res[0]) { $line = $res[0]; if ($line['goalsA'] > $line['goalsB']) echo "

Den höchsten Sieg gab es mit "; else echo "

Die größte Niederlage gab es mit "; echo "{$line['goalsA']}:{$line['goalsB']} in der Partie "; echo MatchDesc($line) . ".

\n"; $statcount++; } //////////////////////////////////////////////////////////////////////////////// $res = Query(<< 1)) { echo "

In dieser " . MatchType . " sind $UntilNow"; echo "insgesamt {$res[0]['totalgoals']} Tore gefallen.

\n"; $statcount++; } //////////////////////////////////////////////////////////////////////////////// $res = Query(<<$ec " . PluralSingular($ec, "Spiel", "Spiele"); echo " (" . Percent($ec, $CurrMatchCount) . ") "; echo PluralSingular($ec, "verlief", "verliefen") . "$UntilNow unentschieden.

\n"; $statcount++; } //////////////////////////////////////////////////////////////////////////////// $maxteam = TeamCount; $res = Query(<< $maxval) { $maxval = $val; $maxcnt = 0; $maxline = $line; } } return $maxcnt ? FALSE : $maxline; } if ($res) { $line = GetSingleMax($res, 'owngoals', +1); if ($line && ($line['owngoals'] > 1)) { echo "

Die meisten Tore "; echo "schoss {$line['name']}: "; echo "{$line['owngoals']}-mal ging der Ball ins Netz ihrer Gegner.

\n"; $statcount++; } $line = GetSingleMax($res, 'owngoals', -1); if ($line) { if ($line['owngoals']) { echo "

Die wenigsten Tore (lediglich "; echo "{$line['owngoals']} an der Zahl) erzielte "; echo "{$line['name']}.

\n"; } else { echo "

Die Mannschaft von {$line['name']} "; echo "blieb als einzige komplett torlos.

\n"; } $statcount++; } $line = GetSingleMax($res, 'antigoals', +1); if ($line && ($line['antigoals'] > 1)) { echo "

Die meisten Gegentore, nämlich "; echo "{$line['antigoals']} Stück, "; echo "kassierte {$line['name']}.

\n"; $statcount++; } $line = GetSingleMax($res, 'antigoals', -1); if ($line) { if ($line['antigoals']) { echo "

Die wenigsten Gegentore gab es für "; echo "{$line['name']}: nur "; echo "{$line['antigoals']}-mal ließ der Torwart "; echo "den Ball in den Kasten.

\n"; } else { echo "

Nur {$line['name']} gelang es, "; echo "kein einziges Gegentor zu kassieren.

\n"; } $statcount++; } } //////////////////////////////////////////////////////////////////////////////// function ChampionBetHistogram($fld, $cls, $title, $cond=TRUE) { global $statcount, $ChampionTeamName; if ($cond && QuerySingleValue("SELECT MIN(time) <= NOW() FROM wm_matches WHERE class=$cls") && Histogram(<<Verteilung der " . ChampionName . "-Tipps $title\n")) $statcount++; } ChampionBetHistogram("bet0", 100, "vor den Vorrunden"); ChampionBetHistogram("bet8", 8, "vor dem Achtelfinale", HaveRO16); ChampionBetHistogram("bet4", 4, "vor dem Viertelfinale"); ChampionBetHistogram("bet2", 2, "vor dem Halbfinale"); //////////////////////////////////////////////////////////////////////////////// if (!$statcount) { echo "

Sorry, aber zur Zeit liegen noch keine Statistiken vor.

\n"; } if (!IncludeOnly) { EndPage(); CloseDB(); } ?>