diff --git a/html/_layouts/default.php b/html/_layouts/default.php
index 7fc051ca856f6b3d2ad1a3fff08d16970126674e..f728b9cd06f19f83c37cbf80bbf1d1f2a1f4e6b8 100644
--- a/html/_layouts/default.php
+++ b/html/_layouts/default.php
@@ -79,23 +79,43 @@ if( !empty($csv) ){
     }
     var SPIELER=<?=json_encode( db_getFromSpieler() )?>;
     var ERGEBNISSE=<?=json_encode( db_getFromErgebnisse() )?>;
-    var STAT=<?=json_encode( db_getFromStatistikBySaison(SAISON))?>;
-    STATISTIK={};
-    STAT.forEach(
+    var STAT_SAISON=<?=json_encode( db_getFromStatistikBySaison(SAISON))?>;
+    var STAT_ALL=<?=json_encode( db_getFromStatistik())?>;
+    STATISTIK_SAISON={};
+    STAT_SAISON.forEach(
       function(v,i){
-        if( STATISTIK[v.SpielerID] == undefined ) STATISTIK[v.SpielerID]={ 'S' :0, 'T' : 0, 'A' : 0, 'Z' : 0, 'Zpos' : 0, 'Zneg' : 0, 'MID' : [] };
-        STATISTIK[v.SpielerID].S++;
-        STATISTIK[v.SpielerID].T+=v.Tore*1;
-        STATISTIK[v.SpielerID].A+=v.Assists*1;
-        STATISTIK[v.SpielerID].Z+=v.Zwk*1;
-        STATISTIK[v.SpielerID].Zpos+=v.Zpos*1;
-        STATISTIK[v.SpielerID].Zneg+=v.Zneg*1;
-        STATISTIK[v.SpielerID].MID.push(v.MID);
-        STATISTIK[v.SpielerID].name=v.name;
-        STATISTIK[v.SpielerID].age=v.age*1;
-        STATISTIK[v.SpielerID].age_saison=v.age_saison*1;
-        STATISTIK[v.SpielerID].nt=v.nt;
-        STATISTIK[v.SpielerID].attr=v.attr;
+        if( STATISTIK_SAISON[v.SpielerID] == undefined ) STATISTIK_SAISON[v.SpielerID]={ 'S' :0, 'T' : 0, 'A' : 0, 'Z' : 0, 'Zpos' : 0, 'Zneg' : 0, 'MID' : [] };
+        STATISTIK_SAISON[v.SpielerID].S++;
+        STATISTIK_SAISON[v.SpielerID].T+=v.Tore*1;
+        STATISTIK_SAISON[v.SpielerID].A+=v.Assists*1;
+        STATISTIK_SAISON[v.SpielerID].Z+=v.Zwk*1;
+        STATISTIK_SAISON[v.SpielerID].Zpos+=v.Zpos*1;
+        STATISTIK_SAISON[v.SpielerID].Zneg+=v.Zneg*1;
+        STATISTIK_SAISON[v.SpielerID].MID.push(v.MID);
+        STATISTIK_SAISON[v.SpielerID].name=v.name;
+        STATISTIK_SAISON[v.SpielerID].age=v.age*1;
+        STATISTIK_SAISON[v.SpielerID].age_saison=v.age_saison*1;
+        STATISTIK_SAISON[v.SpielerID].nt=v.nt;
+        STATISTIK_SAISON[v.SpielerID].attr=v.attr;
+      }
+    );
+
+    STATISTIK_ALL={};
+    STAT_ALL.forEach(
+      function(v,i){
+        if( STATISTIK_ALL[v.SpielerID] == undefined ) STATISTIK_ALL[v.SpielerID]={ 'S' :0, 'T' : 0, 'A' : 0, 'Z' : 0, 'Zpos' : 0, 'Zneg' : 0, 'MID' : [] };
+        STATISTIK_ALL[v.SpielerID].S++;
+        STATISTIK_ALL[v.SpielerID].T+=v.Tore*1;
+        STATISTIK_ALL[v.SpielerID].A+=v.Assists*1;
+        STATISTIK_ALL[v.SpielerID].Z+=v.Zwk*1;
+        STATISTIK_ALL[v.SpielerID].Zpos+=v.Zpos*1;
+        STATISTIK_ALL[v.SpielerID].Zneg+=v.Zneg*1;
+        STATISTIK_ALL[v.SpielerID].MID.push(v.MID);
+        STATISTIK_ALL[v.SpielerID].name=v.name;
+        STATISTIK_ALL[v.SpielerID].age=v.age*1;
+        STATISTIK_ALL[v.SpielerID].age_saison=v.age_saison*1;
+        STATISTIK_ALL[v.SpielerID].nt=v.nt;
+        STATISTIK_ALL[v.SpielerID].attr=v.attr;
       }
     );
 
@@ -114,8 +134,8 @@ if( !empty($csv) ){
     if( check ){
       $(document).ready( function(){
           calculatePartien('{{ page.saison }}', '{{ page.date }}');
-          calculateTabelle('{{ page.saison }}', '7');
-          calculateTabelle( 0, '7');
+          calculatePunktestand('{{ page.saison }}', '7');
+          //calculatePunktestand( 0, '7');
           calculateTore('{{ page.saison }}');
           calculateAssists('{{ page.saison }}');
           calculateZwk('{{ page.saison }}');
@@ -150,13 +170,17 @@ if( !empty($csv) ){
 
   <div class="div_right">
     <div id="saisons">
-      <a href="./26.php"><button class="{% if page.saison == 26 %}active{% endif %}"><b>1</b><sup>26</sup></button></a>
-      <a href="./27.php"><button class="{% if page.saison == 27 %}active{% endif %}"><b>2</b><sup>27</sup></button></a>
-      <a href="./28.php"><button class="{% if page.saison == 28 %}active{% endif %}"><b>3</b><sup>28</sup></button></a>
-      <a href="./29.php"><button class="{% if page.saison == 29 %}active{% endif %}"><b>4</b><sup>29</sup></button></a>
-      <a href="./30.php"><button class="{% if page.saison == 30 %}active{% endif %}"><b>5</b><sup>30</sup></button></a>
+      <button id="ewige" class="" onclick="calculateEwige()"><b>EWIGE</b></button>
+      {% for f in site.pages %}
+        {% assign fn = f.name | slice:0,2 %}
+        {% assign fn_isnumeric = fn | is_numeric %}
+        {% if fn_isnumeric %}
+        {% assign fn = fn | times: 1 %}
+        <a href="./{{ fn }}.php"><button class="{% if page.saison == fn %}active{% endif %}"><b>{{ fn | minus: 25 }}</b><sup>{{ fn }}</sup></button></a>
+        {% endif %}
+      {% endfor %}
     </div>
-    <h2 class="tabelle">Tabelle <button>Ewige</button><button>Zweikampf</button><button>Assists</button><button>Tore</button><button class="active">Punktestand</button></h2>
+    <h2 class="tabelle">Tabelle <button>Zweikampf</button><button>Assists</button><button>Tore</button><button class="punktestand active">Punktestand</button></h2>
 
     <table id="tabelle_punktestand" class="tabelle">
       <thead>
@@ -217,23 +241,6 @@ if( !empty($csv) ){
       </tbody>
     </table>
 
-    <table id="tabelle_ewige" class="tabelle d-none">
-      <thead>
-        <tr>
-          <th>Pl.</th>
-          <th>Sp.</th>
-          <th>Team</th>
-          <th>S/U/N</th>
-          <th>Hist.</th>
-          <th>Tore</th>
-          <th>Dif</th>
-          <th>Pkt.</th>
-        </tr>
-      </thead>
-      <tbody>
-      </tbody>
-    </table>
-
     <table id="tabelle_team" class="tabelle d-none" ondblclick="backToActiveTable()">
       <thead>
         <tr>
diff --git a/html/_plugins/is_numeric.rb b/html/_plugins/is_numeric.rb
new file mode 100644
index 0000000000000000000000000000000000000000..a920bf625bc4232eb9f058472419715620b07c6c
--- /dev/null
+++ b/html/_plugins/is_numeric.rb
@@ -0,0 +1,10 @@
+
+module Is_Numeric
+
+  def is_numeric(string)
+    true if Float(string) rescue false
+  end
+
+end
+
+Liquid::Template.register_filter(Is_Numeric) # register filter globally
diff --git a/html/assets/js/script.js b/html/assets/js/script.js
index 180751b4c8da3a1178cc5e748bbb7c261dcae9b6..76ed6a58c389fc96a0a4f48243d5a24a19562ddc 100644
--- a/html/assets/js/script.js
+++ b/html/assets/js/script.js
@@ -64,7 +64,7 @@ function calculatePartien(saison,date){
 
   if( done.reduce( (a,b) => a && b ) == true ){
 
-    var Tabelle = calculateTabelle( saison, runde, false );
+    var Tabelle = calculatePunktestand( saison, runde, false );
 
   } else {
 
@@ -195,7 +195,7 @@ function grpPartien( date,steps,saison,runde,spieltag,Bg ){
           var th=(( ergebnis.MID > 0 ) ? '<a href="https://ultrasoccer.de/match/?id='+ergebnis.MID+'" target="ultrasoccer">'+ergebnis.TH+'</a>' : ergebnis.TH );
           var ta=(( ergebnis.MID > 0 ) ? '<a href="https://ultrasoccer.de/match/?id='+ergebnis.MID+'" target="ultrasoccer">'+ergebnis.TA+'</a>' : ergebnis.TA );
           var dt=new Date(ergebnis.T).toJSON().slice(0,10);
-          var st=STAT.filter( (a) => ( a.MID == ergebnis.MID )).length == 12;
+          var st=STAT_SAISON.filter( (a) => ( a.MID == ergebnis.MID )).length == 12;
           ergebnis['partie']=partie;
         } else {
           var th='-'; var ta='-'; var dt='<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i> <sup>'+(steps+LIGASPIELTAG)+'</sup>'; var st=false; done=false; var match='';
@@ -243,7 +243,7 @@ function getCsv(saison, runde, spieltag){
   $('#copypaste textarea').text('runde,spieltag,T,H,A,TH,TA,MID\n'+csv);
 }
 
-function calculateTabelle(saison,runde,show=true){
+function calculatePunktestand(saison,runde,show=true){
 
   $.each( TEAMS,
     function( i,v ){
@@ -304,7 +304,7 @@ function calculateTabelle(saison,runde,show=true){
     return Tabelle;
   }
 
-  var tabelle=( saison == '0' ) ? '#tabelle_ewige tbody' : '#tabelle_punktestand tbody';
+  var tabelle='#tabelle_punktestand tbody';
   $(tabelle).html('');
 
   Tabelle.forEach(
@@ -331,8 +331,10 @@ function calculateTabelle(saison,runde,show=true){
 }
 
 function calculateTore(saison){
+  var STATISTIK=saison == 0 ? STATISTIK_ALL : STATISTIK_SAISON;
   var n=Object.entries( STATISTIK ).sort( function(a,b){ return ( ( a[1].T < b[1].T || ( a[1].T == b[1].T && a[1].S > b[1].S ) ) ? 1 : -1 ) } ).slice(0,10).map(
     function(v,i){
+      console.log( v );
       var team=TEAMS.filter( (a) => ( a.nt == v[1].nt ) );
       if( team.length == 0 ){
         var team_flag='<img class="flags" src="./images/flags/xx.svg" title="n/a">';
@@ -348,7 +350,7 @@ function calculateTore(saison){
       [
         i+1,
         (( STATISTIK[v[0]] != undefined ) ? STATISTIK[v[0]].S : 0),
-        team_flag+' '+attr+' '+(( v[1].name != null ) ? v[1].name+' ('+(v[1].age+saison*1-v[1].age_saison)+')' : '<a href="https://ultrasoccer.de/playerprofile/?id='+v[0]+'" target="ultrasoccer">'+v[0]+'</a>' ),
+        team_flag+' '+attr+' '+(( v[1].name != null ) ? v[1].name+' ('+(v[1].age+saison*1+parseInt(SAISON)-v[1].age_saison)+')' : '<a href="https://ultrasoccer.de/playerprofile/?id='+v[0]+'" target="ultrasoccer">'+v[0]+'</a>' ),
         team_name,
         v[1].T
       ].join('</td><td>')+'</td>';
@@ -358,6 +360,7 @@ function calculateTore(saison){
 }
 
 function calculateAssists(saison){
+  var STATISTIK=saison == 0 ? STATISTIK_ALL : STATISTIK_SAISON;
   var n=Object.entries( STATISTIK ).sort( (a,b) => ( a[1].A < b[1].A || ( a[1].A == b[1].A && a[1].S > b[1].S ) ) ? 1 : -1 ).slice(0,10).map(
     function(v,i){
       var team=TEAMS.filter( (a) => ( a.nt == v[1].nt ) );
@@ -375,7 +378,7 @@ function calculateAssists(saison){
       [
         i+1,
         (( STATISTIK[v[0]] != undefined ) ? STATISTIK[v[0]].S : 0),
-        team_flag+' '+attr+' '+(( v[1].name != null ) ? v[1].name+' ('+(v[1].age+saison*1-v[1].age_saison)+')' : '<a href="https://ultrasoccer.de/playerprofile/?id='+v[0]+'" target="ultrasoccer">'+v[0]+'</a>' ),
+        team_flag+' '+attr+' '+(( v[1].name != null ) ? v[1].name+' ('+(v[1].age+saison*1+parseInt(SAISON)-v[1].age_saison)+')' : '<a href="https://ultrasoccer.de/playerprofile/?id='+v[0]+'" target="ultrasoccer">'+v[0]+'</a>' ),
         team_name,
         v[1].A
       ].join('</td><td>')+'</td>';
@@ -385,6 +388,7 @@ function calculateAssists(saison){
 }
 
 function calculateZwk(saison){
+  var STATISTIK=saison == 0 ? STATISTIK_ALL : STATISTIK_SAISON;
   var n=Object.entries( STATISTIK ).sort( (a,b) => ( a[1].Z < b[1].Z || ( a[1].Z == b[1].Z && a[1].S > b[1].S ) ) ? 1 : -1 ).slice(0,10).map(
     function(v,i){
       var team=TEAMS.filter( (a) => ( a.nt == v[1].nt ) );
@@ -402,7 +406,7 @@ function calculateZwk(saison){
       [
         i+1,
         (( STATISTIK[v[0]] != undefined ) ? STATISTIK[v[0]].S : 0),
-        team_flag+' '+attr+' '+(( v[1].name != null ) ? v[1].name+' ('+(v[1].age+saison*1-v[1].age_saison)+')' : '<a href="https://ultrasoccer.de/playerprofile/?id='+v[0]+'" target="ultrasoccer">'+v[0]+'</a>' ),
+        team_flag+' '+attr+' '+(( v[1].name != null ) ? v[1].name+' ('+(v[1].age+saison*1+parseInt(SAISON)-v[1].age_saison)+')' : '<a href="https://ultrasoccer.de/playerprofile/?id='+v[0]+'" target="ultrasoccer">'+v[0]+'</a>' ),
         team_name,
         (( v[1].Z > 0 ) ? '+' : '' )+v[1].Z
       ].join('</td><td>')+'</td>';
@@ -440,6 +444,18 @@ function calculateTeam(saison,nt){
   $('#tabelle_team tbody').html( '<tr>'+n.join('</tr><tr>') + '</tr>' );
 }
 
+function calculateEwige(){
+  calculatePunktestand(0,'7');
+  calculateTore(0);
+  calculateAssists(0);
+  calculateZwk(0);
+  $('button.active').toggleClass('active',false);
+  $('#ewige').toggleClass('active',true);
+  $('table.tabelle').toggleClass('d-none',true);
+  $('#tabelle_punktestand').toggleClass('d-none');
+  $('h2.tabelle > button.punktestand').toggleClass('active',true);
+}
+
 function backToActiveTable(){
   $('table.tabelle').toggleClass('d-none',true);
   $('#tabelle_'+ $('button.active').text().toLowerCase() ).toggleClass('d-none');
diff --git a/html/functions/db_methods.php b/html/functions/db_methods.php
index 1601358789fefee7236dd759a369e66119d99994..82fb623144eb12d165500d2ba7dd03ddd09c8b60 100644
--- a/html/functions/db_methods.php
+++ b/html/functions/db_methods.php
@@ -309,4 +309,36 @@ function db_getFromStatistikBySaison($saison){
 
 }
 
+function db_getFromStatistik(){
+
+  $db=new db;
+
+  /*
+  $sql = 'SELECT Statistik.MID, Statistik.SpielerID, Spieler.name, Spieler.nt, Spieler.age, Teams.id, SUM(Statistik.Tore) AS "Tore", SUM(Statistik.Assists) AS "Assists", SUM(Statistik.Zpos - Statistik.Zneg) AS "Zwkbilanz" FROM Statistik
+          INNER JOIN Ergebnisse ON Ergebnisse.MID = Statistik.MID
+          LEFT JOIN Spieler     ON Spieler.id = Statistik.SpielerID
+          LEFT JOIN Teams       ON Teams.id = Spieler.teamID
+          WHERE Ergebnisse.saison = '.$saison.'
+          GROUP BY SpielerID, MID';
+  */
+  $sql='SELECT Statistik.MID, Statistik.SpielerID, Spieler.name, Spieler.nt, Spieler.attr, Spieler.age, Spieler.age_saison, Teams.id, Statistik.Tore, Statistik.Assists, Statistik.Zpos, Statistik.Zneg, Statistik.Zpos - Statistik.Zneg AS "Zwk" FROM Statistik
+          INNER JOIN Ergebnisse ON Ergebnisse.MID = Statistik.MID
+          LEFT JOIN Spieler     ON Spieler.id = Statistik.SpielerID
+          LEFT JOIN Teams       ON Teams.id = Spieler.teamID
+          GROUP BY SpielerID, MID';
+
+  $result = $db->query($sql);
+
+  $ROW=Array();
+
+  while( $row = $result->fetch_assoc() ){
+    $row['SpielerID']=bin2hex($row['SpielerID']);
+    $ROW[]=$row;
+  }
+
+  unset($db);
+  return $ROW;
+
+}
+
 ?>