Portal Greentube

Alle Zeiten sind UTC + 1 Stunde




Forum gesperrt Dieses Thema ist gesperrt. Du kannst keine Beiträge editieren oder weitere Antworten erstellen.  [ 85 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste
Autor Nachricht
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Fr Dez 05, 2014 22:19:05 
Wengana
Wengana
Benutzeravatar
Offline

Registriert: Fr Nov 21, 2008 19:42:18
Beiträge: 256
Wohnort: Wien
Geschlecht: Männlich
Alter: 50
SC-Nickname: Manfredo67er
Nationencup: Team Trinidad und Tobago
Flagge:
OS: Windows 10
Danke gegeben: 7
Danke bekommen: 0
 
filu84 hat geschrieben:
er hat mir die php datei per mail gesendet.

1. Scheint mal das problem zu sein, dass sein server nicht alle fehlermeldungen anzeigt...
2. der fehler lag bei zeile 233
ich hab da zwar kein unterschied gesehen. hab dann den code neu kopiert und ihm die datei zurückgesendet und warte nun auf Antwort.


Danke! Danke!

Die neue Datei hat funktioniert, allerdings auf einem neuen Hoster! Bei "bplaced" hat es nicht funktioniert!

lg Manfred

_________________
LIVE RANKING


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Fr Dez 05, 2014 23:22:40 
Skilehrer's Liebling
Skilehrer's Liebling
Offline

Registriert: Mi Jan 18, 2006 19:15:16
Beiträge: 30
Geschlecht: Keine Angabe
Danke gegeben: 4
Danke bekommen: 0
 
Servus zusammen!

Hat jemand zufällig die IDs der mobile-Rennen?

Danke!!! phg


EDIT: zumindest für die ersten Rennen gefunden: Startet bei 890 und dann jeweils zum nächsten Rennen +15


Code:
    //Konstanten für die einzelnen Strecken und Bedingungen (Mobile) 
      //--------------------------------------------------------------
     
      //----BEAVER CREEK----
      define('BEAVER_SUN_MOB',  890);
      define('BEAVER_SNOW_MOB', 891);
      define('BEAVER_ICE_MOB',  892);
      define('BEAVER_RACE_MOB', 893);
      //Freeride
      define('BEAVER_FREE_MOB', 894);
    
      //----GRÖDEN----
      define('GROEDEN_SUN_MOB',  905);
      define('GROEDEN_SNOW_MOB', 906);
      define('GROEDEN_ICE_MOB',  907);
      define('GROEDEN_RACE_MOB', 908);
      //Freeride
      define('GROEDEN_FREE_MOB', 909);
     
      //----BORMIO----
      define('BORMIO_SUN_MOB',  924);
      define('BORMIO_SNOW_MOB', 925);
      define('BORMIO_ICE_MOB',  926);
      define('BORMIO_RACE_MOB', 927);
      //Freeride
      define('BORMIO_FREE_MOB', 928);
     
      //----WENGEN----
      define('WENGEN_SUN_MOB',  943);
      define('WENGEN_SNOW_MOB', 944);
      define('WENGEN_ICE_MOB',  945);
      define('WENGEN_RACE_MOB', 946);
      //Freeride
      define('WENGEN_FREE_MOB', 947);
     
      //----KITZBÜHEL----
      define('KITZ_SUN_MOB',  962);
      define('KITZ_SNOW_MOB', 963);
      define('KITZ_ICE_MOB',  964);
      define('KITZ_RACE_MOB', 965);
      //Freeride
      define('KITZ_FREE_MOB', 966);
     
      //----GARMISCH----
      define('GARMISCH_SUN_MOB',  981);
      define('GARMISCH_SNOW_MOB', 982);
      define('GARMISCH_ICE_MOB',  983);
      define('GARMISCH_RACE_MOB', 984);
      //Freeride
      define('GARMISCH_FREE_MOB', 985);
     
      //----SOTSCHI----
      define('SOTSCHI_SUN_MOB',  1000);
      define('SOTSCHI_SNOW_MOB', 1001);
      define('SOTSCHI_ICE_MOB',  1002);
      define('SOTSCHI_RACE_MOB', 1003);
      //Freeride
      define('SOTSCHI_FREE_MOB', 1004);   
     
      //----VAL'D ISERE----
      define('VALDI_SUN_MOB',  1005);
      define('VALDI_SNOW_MOB', 1006);
      define('VALDI_ICE_MOB',  1007);
      //Freeride
      define('VALDI_FREE_MOB', 1008);
     
      //----SCHLADMING----
      define('SCHLADMING_SUN_MOB',  1009);
      define('SCHLADMING_SNOW_MOB', 1010);
      define('SCHLADMING_ICE_MOB',  1011);
      //Freeride
      define('SCHLADMING_FREE_MOB', 1012);
     
      //----BEAVER CREEK SG----
      define('BEAVER_SG_SUN_MOB',  1013);
      define('BEAVER_SG_SNOW_MOB', 1014);
      define('BEAVER_SG_ICE_MOB',  1015);
      //Freeride
      define('BEAVER_SG_FREE_MOB', 1016);
     


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: So Dez 07, 2014 11:19:06 
SC'ler
SC'ler
Benutzeravatar
Offline

Registriert: Fr Dez 02, 2005 13:56:08
Beiträge: 80
Wohnort: Lilienfeld
Geschlecht: Männlich
Alter: 35
SC-Nickname: Fatmax
Flagge:
Ziel: Top 10.000
Danke gegeben: 2
Danke bekommen: 2
 
Gibt es schon eine Lösung für die Skieinstellungen bzw. aus aktuellem Anlass für die Weltcupwertung?

_________________
Lg
Fatmax

Bild

*~*~* Ranking der NFM-Speeddevils *~*~*


Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Di Dez 16, 2014 19:29:15 
SC'ler
SC'ler
Benutzeravatar
Offline

Registriert: Fr Dez 02, 2005 13:56:08
Beiträge: 80
Wohnort: Lilienfeld
Geschlecht: Männlich
Alter: 35
SC-Nickname: Fatmax
Flagge:
Ziel: Top 10.000
Danke gegeben: 2
Danke bekommen: 2
 
Hallo,
hat hier wirklich niemand eine Idee für die Weltcupwertung.
Ich grüble schon den ganzen Tag daran und habe zumindest herausgefunden, dass mit

Code:
$wc_wertung = $xml->playerScores->Score;
in der Funktion: "LoadRankings" die Daten in die Variable wc_wertung geschrieben werden, jedoch lässt sich dieses bei der Ausgabe der Tabelle (Funktion: "ErzeugeRanking") nicht ansprechen.
Einzig mit dem print_r Befehl in der Funktion "LoadRankings" lassen sich die Daten ansehen.

Kann mir jemand weiterhelfen?

_________________
Lg
Fatmax

Bild

*~*~* Ranking der NFM-Speeddevils *~*~*


Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Di Dez 16, 2014 21:14:25 
Schleppliftfahrer
Schleppliftfahrer
Offline

Registriert: Di Dez 03, 2013 08:30:07
Beiträge: 4
Geschlecht: Keine Angabe
SC-Nickname: schnoetz
Danke gegeben: 2
Danke bekommen: 3
 
Hi Fatmax, danke für die Vorarbeit fürs Raussuchen, wo das Ranking im XML liegt.
Ich habe jetzt auf Basis des Original-Skripts ganz oben von MagicBedda das eingebaut. Meine Änderungen habe ich immer am Ende der Zeile mit "// WCranking" markiert.
Ist sicher nicht perfekt (bin kein PHP-Profi), geht sicher schöner, aber erfüllt den Zweck.

Wo ist die Weltcupwertung? Ich hab das vorerst mal nur als Tooltip auf den Fahrer-Nickname eingetragen. Sucht nach der Variable $WCresult, da wird der Tooltip zusammengestellt und ein paar Zeilen darunter ausgegeben.
Ihr könnt das natürlich gerne als eigene Spalte ausgeben (ich mags nicht, dieser Wert ändert sich so selten, außerdem hat das mit der restlichen Ranking-Tabelle nichts zu tun).

Mit den Skieinstellungen kämpfe ich auch - ich kanns einmal auslesen, nur wenn ich das Skript gleich darauf nochmal starte, bekomme ich 403 Forbidden. Anscheinend werden da Massenaufrufe jetzt unterbunden... :(

lg
schnutz

Code:
<!-- Header des Teams -->
<H1 style="font-size: 24px; vertical-align: middle";><img src="http://www.moneypedia.de/images/thumb/8/86/Sealand1flag.jpg/200px-Sealand1flag.jpg" width="40" height="25" border="1" alt="Sealand" /> Team Fürstentum Sealand</H1>
<?php
   // Fehlermeldungen/Warnungen ausgeben
   //error_reporting(E_ALL);
   //ini_set('display_errors', '1');
   
   ErzeugeKonstanten();
   
   $nick = "";
   $playerData = "";
   $allWeatherMili = "";
   $skiSettings = array();
   
   // Für jede Art von Rennen ein Array
   $rankingSun  = array();
   $rankingSnow = array();
   $rankingIce  = array();
   $rankingRace = array();
   $rankingPS   = array();
   $rankingAll  = array();
   $rankingWC   = array();  // WCranking hinzugefügt
   
   // Nicknamen der Fahrer die aufgelistet werden sollen
   $nicks = array('DaKoni', 'Cr4zy8B4ll', 'Jaegermeister', 'frfr', 'gustel007', 'm4xx_rko', 'MagicBedda', 'ManiTheKing', 'MonkeyDLuffy', 'NatDwo', 'NewbloodII', 'surfer_flo', 'Superkeks30', 'madmax68', 'Spunkfrau', 'Schneehasel');
   
   // Die ID der einzelnen Rennen für das Ranking setzen
   $competitionIdSun  = BEAVER_SUN;
   $competitionIdSnow = BEAVER_SNOW;
   $competitionIdIce  = BEAVER_ICE;
   $competitionIdRace = BEAVER_RACE;
   $competitionIdPS   = MUENCHEN_Q;

   // Sollen Ski-Einstellungen geladen werden?
   $SkiEinstellungLaden = TRUE;
   
   // Lädt die Skieinstellungen
   LoadSkiSettings();
   
   // Lädt die Spielerprofile und befüllt die Rankings
   LoadRankings(DESKTOP);
   
   // Die Rankings die angezeigt werden sollen
   ErzeugeRanking($rankingRace, BEAVER,   RACE);
   ErzeugeRanking($rankingSun,  BEAVER,   SUN);
   ErzeugeRanking($rankingSnow, BEAVER,   SNOW);
   ErzeugeRanking($rankingIce,  BEAVER,   ICE);
   ErzeugeRanking($rankingAll,  BEAVER,   ALL);
   ErzeugeRanking($rankingPS,   MUENCHEN, PS);
     
   //-------------------------------
   // Hilfsmethoden
   //-------------------------------
   
   //Lade die Skieinstellungen
   function LoadSkiSettings()
   {
      GLOBAL $SkiEinstellungLaden;
     
      if($SkiEinstellungLaden)
      {
         GLOBAL $nicks;
         GLOBAL $nick;
         GLOBAL $skiSettings;
       
         GLOBAL $competitionIdSun;
         GLOBAL $competitionIdSnow;
         GLOBAL $competitionIdIce;
         GLOBAL $competitionIdRace;
         GLOBAL $competitionIdPS;
       
         foreach ($nicks as $nick)
         {   

            // Skieinstellungen der Spieler abrufen
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdSun.'&name='.urlencode($nick));
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdSnow.'&name='.urlencode($nick));
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdIce.'&name='.urlencode($nick));
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdRace.'&name='.urlencode($nick));
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdPS.'&name='.urlencode($nick));
         }   
       
         $curl_Rudi = array();
     
         // erzeuge einen neuen cURL-Multi-Handle
         $curl_multi_handle_Rudi = curl_multi_init();
       
         for($i = 0; $i < count($urls_Rudi); $i++)
         {
            $url_Rudi = $urls_Rudi[$i];

            // erzeuge einen neuen cURL-Handle
            $curl_Rudi[$i] = curl_init($url_Rudi);         
            curl_setopt($curl_Rudi[$i], CURLOPT_RETURNTRANSFER, TRUE);
            curl_multi_add_handle($curl_multi_handle_Rudi, $curl_Rudi[$i]);
         }   
         do
         {
            curl_multi_exec($curl_multi_handle_Rudi, $running_Rudi);
         } while($running_Rudi > 0) ;
       
         for($i = 0; $i < count($urls_Rudi); $i++)
         {
            $result_Rudi = curl_multi_getcontent($curl_Rudi[$i]);
            preg_match("/\[.*\]/", $result_Rudi, $helpSki);
            $helpSki = str_replace("[", "", $helpSki);
            $helpSki = str_replace("]", "", $helpSki);
            $helpSki = str_replace("\"", "", $helpSki);
            if ((count($helpSki) > 0) && (strlen($helpSki[0] >= 1)))
            {   
               $skiSettings[] = $helpSki[0];
            }
         }
      }
   }

   // Lädt die Skieinstellungen für einen Fahrer (wenn kein Request von Rudi kommt)
   function LoadSkiSettingsPlayer($player)
   {
      GLOBAL $SkiEinstellungLaden;
     
      if($SkiEinstellungLaden)
      {
         GLOBAL $skiSettings;
         
         GLOBAL $competitionIdSun;
         GLOBAL $competitionIdSnow;
         GLOBAL $competitionIdIce;
         GLOBAL $competitionIdRace;
         GLOBAL $competitionIdPS;
               
         // Skieinstellungen der Spieler abrufen
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdSun.'&name='.urlencode($player));
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdSnow.'&name='.urlencode($player));
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdIce.'&name='.urlencode($player));
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdRace.'&name='.urlencode($player));
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdPS.'&name='.urlencode($player));
         
         $curl_Rudi = array();
         
         // erzeuge einen neuen cURL-Multi-Handle
         $curl_multi_handle_Rudi = curl_multi_init();
         
         for($i = 0; $i < count($urls_Rudi); $i++)
         {
            $url_Rudi = $urls_Rudi[$i];
           
            // erzeuge einen neuen cURL-Handle
            $curl_Rudi[$i] = curl_init($url_Rudi);
            curl_setopt($curl_Rudi[$i], CURLOPT_RETURNTRANSFER, TRUE);
            curl_multi_add_handle($curl_multi_handle_Rudi, $curl_Rudi[$i]);
         }
         do
         {
            curl_multi_exec($curl_multi_handle_Rudi, $running_Rudi);
         } while($running_Rudi > 0) ;
         
         for($i = 0; $i < count($urls_Rudi); $i++)
         {
            $result_Rudi = curl_multi_getcontent($curl_Rudi[$i]);
            preg_match("/\[.*\]/", $result_Rudi, $helpSki);
            $helpSki = str_replace("[", "", $helpSki);
            $helpSki = str_replace("]", "", $helpSki);
            $helpSki = str_replace("\"", "", $helpSki);
            if ((count($helpSki) > 0) && (strlen($helpSki[0] >= 1)))
            {
               $skiSettings[] = $helpSki[0];
            }
         }
         curl_multi_close($curl_multi_handle_Rudi);
      }
   }
   
   //Befüllt die Rankings
   function LoadRankings($gameId)
   {
      GLOBAL $nicks;
      GLOBAL $nick;
      GLOBAL $playerData;
      GLOBAL $allWeatherMili;
     
      GLOBAL $rankingSun;
      GLOBAL $rankingSnow;
      GLOBAL $rankingIce;
      GLOBAL $rankingRace;
      GLOBAL $rankingPS;
      GLOBAL $rankingAll;
      GLOBAL $rankingWC;     // WCranking hinzugefügt
     
      GLOBAL $competitionIdSun;
      GLOBAL $competitionIdSnow;
      GLOBAL $competitionIdIce;
      GLOBAL $competitionIdRace;
      GLOBAL $competitionIdPS;
     
      $url = sprintf('https://www.ski-challenge.com/gm-proxy.php');
     
      $curl_array = array();
     
      // erzeuge einen neuen cURL-Multi-Handle
      $curl_multi_handle = curl_multi_init();
     
      for($i = 0; $i < count($nicks); $i++)
      {
         // erzeuge einen neuen cURL-Handle
         $curl_array[$i] = curl_init($url);
         
         //Settings
         curl_setopt($curl_array[$i], CURLOPT_ENCODING, "deflate, gzip");
         curl_setopt($curl_array[$i], CURLOPT_POST, 1);
         curl_setopt($curl_array[$i], CURLOPT_POSTFIELDS, 'service=1&function=GetPlayerProfileByNick&gameId='.$gameId.'&nick='.urlencode($nicks[$i]));
         curl_setopt($curl_array[$i], CURLOPT_HTTPHEADER, array(
         "Accept: */*",
         "Accept-Language: de-DE,de,q=0.5",
         "Host: www.ski-challenge.com",
         "User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)",
         "X-Requested-With: XMLHttpRequest",
         ));
         curl_setopt($curl_array[$i], CURLOPT_SSL_VERIFYHOST, 0);
         curl_setopt($curl_array[$i], CURLOPT_SSL_VERIFYPEER, FALSE);
         curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, TRUE);
         
         curl_multi_add_handle($curl_multi_handle, $curl_array[$i]);
      }   
      do
      {
         curl_multi_exec($curl_multi_handle, $running);
      } while($running > 0);

      for($i = 0; $i < count($nicks); $i++)
      {
         $result = curl_multi_getcontent($curl_array[$i]);

         // führe die Aktion aus und gebe die Daten an den Browser weiter
         $xml = new SimpleXMLElement($result);
         
         //print_r($xml); //Gibt das gesamte Ergebnis als XML-Element aus
         
         $nick = (string)$xml->playerDetails->nick;        // WCranking  "(string)" hinzugefügt
       
         $playerData = $xml->playerSpecifics->SpecificData;
         
         $allWeatherMili = 0;
         $counterAllWeather = 0;
         $rankingWC[$nick]=array("rank"=>(int)$xml->playerScores->Score->position, "points"=>(int)$xml->playerScores->Score->points);  // WCranking hinzugefügt
         
         // Durchsuche alle gefahrenen Zeiten des Spielers
         foreach ($xml->playerRankings->Ranking as $key => $row)
         {   
            //Je nach Rennen (Strecke, Bedingung) ein anderes Array befüllen
            if ($row->competitionId == $competitionIdSun)
            {
               $rankingSun[]   = SetRankingArray($row, $competitionIdSun);
               $allWeatherMili = $allWeatherMili + ErmittleZeitMili($row->p1);
               $counterAllWeather++;
            }
            elseif ($row->competitionId == $competitionIdSnow)
            {
               $rankingSnow[]  = SetRankingArray($row, $competitionIdSnow);
               $allWeatherMili = $allWeatherMili + ErmittleZeitMili($row->p1);
               $counterAllWeather++;
            }
            elseif ($row->competitionId == $competitionIdIce)
            {
               $rankingIce[]   = SetRankingArray($row, $competitionIdIce);
               $allWeatherMili = $allWeatherMili + ErmittleZeitMili($row->p1);
               $counterAllWeather++;
            }
            elseif ($row->competitionId == $competitionIdRace)
            {
               $rankingRace[] = SetRankingArray($row, $competitionIdRace);
            }
            elseif ($row->competitionId == $competitionIdPS)
            {
               $rankingPS[] = SetRankingArray($row, $competitionIdPS);
            }
         }       
         
         //Nur Fahrer hinzufügen die bei allen Bedingungen gefahren sind
         if ($counterAllWeather == 3)
         {
            $rankingAll[] = SetRankingArrayAllWeather();
         }
      }
   }
   
   //Zeit ermitteln; Format(0:00,000)
   function ErmittleZeit($time_micro)
   {           
      $min_temp = substr($time_micro, 0, -3) / 60;
         
      $min = substr($min_temp, 0, 1);
         
      $sek = substr($time_micro, 0, -3) - ($min * 60);
     
      if (strlen($sek) <= 1)
      {
         $sek = "0".$sek;
      }
     
      $mili = substr($time_micro, -3);
     
      return $min .":". $sek .",". $mili;
   }
   
   //Differenz zwischen 2 Zeiten ermitteln
   function ErmittleDiff($timeVorher, $timeNachher)
   {
      $helpDiff = $timeNachher - $timeVorher;
      $newMin = floor($helpDiff / 60000);
      $helpDiff = $helpDiff - ($newMin * 60000);
      $newSec = floor($helpDiff / 1000);
      $helpDiff = $helpDiff - ($newSec * 1000);
      $newMili = $helpDiff;
     
      if (strlen($newSec) <= 1)
      {
         $newSec = "0".$newSec;
      }
      if (strlen($newMili) <= 1)
      {
         $newMili = "0".$newMili;
      }
      if (strlen($newMili) <= 2)
      {
         $newMili = "0".$newMili;
      }
     
      return "+ ". $newMin .":". $newSec .",". $newMili;
   }
   
   //Zeit in Millisekunden ermitteln
   function ErmittleZeitMili($time_micro)
   {           
      $min_temp = substr($time_micro, 0, -3) / 60;
         
      $min = substr($min_temp, 0, 1);
         
      $sek = substr($time_micro, 0, -3) - ($min * 60);
     
      if (strlen($sek) <= 1)
      {
         $sek = "0".$sek;
      }
     
      $mili = substr($time_micro, -3);
     
      return ($min * 60000) + ($sek * 1000) + $mili;
   }
   
   //Zeit für die All-Weather-Wertung berechnen
   function ErmittleZeitAllWeather($milisec)
   {
      $newMin = floor($milisec / 60000);
      $milisec = $milisec - ($newMin * 60000);
      $newSec = floor($milisec / 1000);
      $milisec = $milisec - ($newSec * 1000);
      $newMili = $milisec;
     
      if (strlen($newSec) <= 1)
      {
         $newSec = "0".$newSec;
      }
      if (strlen($newMili) <= 1)
      {
         $newMili = "0".$newMili;
      }
      if (strlen($newMili) <= 2)
      {
         $newMili = "0".$newMili;
      }
     
      return $newMin .":". $newSec .",". $newMili;
   }
   
   //Befüllt das Array für das Ranking
   function SetRankingArray($xmlArr, $compId)
   {   
      GLOBAL $nick;
      GLOBAL $playerData;
      GLOBAL $skiSettings;
     
      $zeit = ErmittleZeit($xmlArr->p1);
     
      $milisec = ErmittleZeitMili($xmlArr->p1);
     
      $position = $xmlArr->position;
     
      $km = 0;
     
      foreach ($playerData as $key => $row)
      {
         if (($row->competitionId == $compId) && ($row->specificId == KMID))
         {
            $km = $row->value / 1000;
            break;
         }
      }
     
      $ski = "";
     
      foreach ($skiSettings as $key => $row)
      {     
         $row = explode(",", $row);
         if (($row[7] == $compId) && ($row[1] == $nick))
         {
            $ski = $row[3]."-".$row[4]."-".$row[5];
            break;
         }
      }
     
      if ($ski == "")
      {
         LoadSkiSettingsPlayer($nick);
         foreach ($skiSettings as $key => $row)
         {
            $row = explode(",", $row);
            if (($row[7] == $compId) && ($row[1] == $nick))
            {
               $ski = $row[3]."-".$row[4]."-".$row[5];
               break;
            }
         }
      }
     
      return array('Platz' =>$position,'Fahrer' =>$nick,'Zeit' =>$zeit,'Km' =>$km, 'Mili' =>$milisec, 'Ski' =>$ski);
   }
   
   //Befüllt das Array für das Ranking (AllWeather)
   function SetRankingArrayAllWeather()
   {   
      GLOBAL $nick;
      GLOBAL $playerData;
      GLOBAL $allWeatherMili;
      GLOBAL $competitionIdSun;
      GLOBAL $competitionIdSnow;
      GLOBAL $competitionIdIce;
     
      $zeit = ErmittleZeitAllWeather($allWeatherMili);
           
      $milisec = $allWeatherMili;
     
      $position = "";
      $ski = "";
     
      $km = 0;
     
      foreach ($playerData as $key => $row)
      {
         if ((($row->competitionId == $competitionIdSun)  && ($row->specificId == KMID)) ||
            (($row->competitionId == $competitionIdSnow) && ($row->specificId == KMID)) ||
            (($row->competitionId == $competitionIdIce)  && ($row->specificId == KMID)))
         {
            $km = $km + $row->value;
         }
      }
     
      if ($km > 0)
      {
         $km = $km / 1000;
      }
     
      return array('Platz' =>$position,'Fahrer' =>$nick,'Zeit' =>$zeit,'Km' =>$km, 'Mili' =>$milisec, 'Ski' =>$ski);
   }
   
   //Baut die Ranking-Table auf
   function ErzeugeRanking($rankArray, $strecke, $bedingung)
   {
      GLOBAL $rankingWC;     // WCranking hinzugefügt
      if (count($rankArray) > 0)
      {
         echo "<br /><H3>".$strecke." - ".$bedingung."</H3>";
     
         foreach ($rankArray as $key => $row)
         {         
            $platz[$key]  = $row['Platz'];
            $player[$key] = $row['Fahrer'];
            $zeit[$key]   = $row['Zeit'];
            $mili[$key]   = $row['Mili'];
            $km[$key]     = $row['Km'];
            $ski[$key]    = $row['Ski'];
         }
         
         if ($bedingung <> ALL)
         {
            array_multisort($platz, SORT_NUMERIC, $rankArray);
         }
         else
         {
            array_multisort($mili, SORT_NUMERIC, $rankArray);
         }
         
         echo "<table border='0'>";
         echo "<colgroup>";
         echo "<col width='30'>";
         echo "<col width='10'>";
         if ($bedingung <> ALL)
         {
            echo "<col width='60'>";
            echo "<col width='10'>";
         }
         echo "<col width='110'>";
         echo "<col width='10'>";
         echo "<col width='60'>";
         echo "<col width='10'>";
         echo "<col width='80'>";
         echo "<col width='10'>";
         echo "<col width='80'>";
         echo "<col width='10'>";
         echo "<col width='60'>";
         if ($bedingung <> ALL)
         {
            echo "<col width='10'>";
            echo "<col width='70'>";
         }
         echo "</colgroup>";
         echo "<tr>";
         
         echo "<th style='text-align: center;'>Pos</th>";
         echo "<th style='text-align: center;'>  </th>";
         if ($bedingung <> ALL)
         {
            if ($bedingung == RACE)
            {
               echo "<th style='text-align: center;'>Rennen</th>";
            }
            else
            {
               echo "<th style='text-align: center;'>Quali</th>";
            }
            echo "<th style='text-align: center;'>  </th>";
         }
         echo "<th style='text-align: center;'>Athlet</th>";
         echo "<th style='text-align: center;'>  </th>";
         echo "<th style='text-align: center;'>Zeit</th>";
         echo "<th style='text-align: center;'>  </th>";
         echo "<th style='text-align: center;'>Diff</th>";
         echo "<th style='text-align: center;'>  </th>";
         echo "<th style='text-align: center;'>Diff 1.</th>";
         echo "<th style='text-align: center;'>  </th>";
         echo "<th style='text-align: center;'>Km</th>";
         if ($bedingung <> ALL)
         {
            echo "<th style='text-align: center;'>  </th>";
            echo "<th style='text-align: center;'>Ski</th>";
         }
         echo "</tr>";
         
         $index = 1;
         $helpMili = 0;
         $helpMiliFirst = 0;
         $newDiff = "";
         $newDiffGesamt = "";
         
         foreach ($rankArray as $key => $row)
         { 
            $WCresult="SC-Worldcup: ".$rankingWC[$row['Fahrer']]['rank'].". - ".$rankingWC[$row['Fahrer']]['points']."pts";    // WCranking hinzugefügt
            if ($index == 1)
            {
               $helpMiliFirst = $row['Mili'];
            }
            if ($index > 1)
            {
               $newDiff = ErmittleDiff($helpMili, $row['Mili']);
               $newDiffGesamt = ErmittleDiff($helpMiliFirst, $row['Mili']);
            }
            $helpMili = $row['Mili'];
           
            echo "<tr>";
            echo "<td style='text-align: right;'>$index</td>";
            echo "<td style='text-align: center;'>  </td>";
            if ($bedingung <> ALL)
            {
               echo "<td style='text-align: right;'>".$row['Platz']."</td>";
               echo "<td style='text-align: center;'>  </td>";
            }
            echo "<td style='text-align: left;' title='".$WCresult."'>".$row['Fahrer']."</td>";   // WCranking title-tag hinzugefügt
            echo "<td style='text-align: center;'>  </td>";
            echo "<td style='text-align: right;'>".$row['Zeit']."</td>";
            echo "<td style='text-align: center;'>  </td>";
            echo "<td style='text-align: right;'>".$newDiff."</td>";
            echo "<td style='text-align: center;'>  </td>";
            echo "<td style='text-align: right;'>".$newDiffGesamt."</td>";
            echo "<td style='text-align: center;'>  </td>";
            echo "<td style='text-align: right;'>".number_format($row['Km'], '2', ',', '.')."</td>";
            if ($bedingung <> ALL)
            {
               echo "<td style='text-align: center;'>  </td>";
               echo "<td style='text-align: right;'>".$row['Ski']."</td>";
            }
            echo "</tr>";
            $index++;
         }
         echo "</table>";       
      }
   }
   
   function ErzeugeKonstanten()
   {
      //---------------------------------------------------------------
      //Konstanten für die einzelnen Strecken und Bedingungen (Desktop)
      //---------------------------------------------------------------
     
      //----BEAVER CREEK----
      define('BEAVER_SUN',  880);
      define('BEAVER_SNOW', 881);
      define('BEAVER_ICE',  882);
      define('BEAVER_RACE', 883);
      //Minimodes
      define('BEAVER_FREE',    884);
      define('BEAVER_BLACK',   885);
      define('BEAVER_ATTACK',  886);
      define('BEAVER_LAST',    887);
      define('BEAVER_ARCADE',  888);
      define('BEAVER_EXTREME', 889);
     
      //----GRÖDEN----
      define('GROEDEN_SUN',  895);
      define('GROEDEN_SNOW', 896);
      define('GROEDEN_ICE',  897);
      define('GROEDEN_RACE', 898);
      //Minimodes
      define('GROEDEN_FREE',    899);
      define('GROEDEN_BLACK',   900);
      define('GROEDEN_ATTACK',  901);
      define('GROEDEN_LAST',    902);
      define('GROEDEN_ARCADE',  903);
      define('GROEDEN_EXTREME', 904);
     
      //----BORMIO----
      define('BORMIO_SUN',  910);
      define('BORMIO_SNOW', 911);
      define('BORMIO_ICE',  912);
      define('BORMIO_RACE', 913);
      //Minimodes
      define('BORMIO_FREE',    914);
      define('BORMIO_BLACK',   915);
      define('BORMIO_ATTACK',  916);
      define('BORMIO_LAST',    917);
      define('BORMIO_ARCADE',  918);
      define('BORMIO_EXTREME', 919);
     
      //----WENGEN----
      define('WENGEN_SUN',  920);
      define('WENGEN_SNOW', 921);
      define('WENGEN_ICE',  922);
      define('WENGEN_RACE', 923);
      //Minimodes
      define('WENGEN_FREE',    924);
      define('WENGEN_BLACK',   925);
      define('WENGEN_ATTACK',  926);
      define('WENGEN_LAST',    927);
      define('WENGEN_ARCADE',  928);
      define('WENGEN_EXTREME', 929);
     
      //----KITZBÜHEL----
      define('KITZ_SUN',  930);
      define('KITZ_SNOW', 931);
      define('KITZ_ICE',  932);
      define('KITZ_RACE', 933);
      //Minimodes
      define('KITZ_FREE',    934);
      define('KITZ_BLACK',   935);
      define('KITZ_ATTACK',  936);
      define('KITZ_LAST',    937);
      define('KITZ_ARCADE',  938);
      define('KITZ_EXTREME', 939);
     
      //----BEAVER CREEK CS----
      define('BEAVER_CS_SUN',  940);
      define('BEAVER_CS_SNOW', 941);
      define('BEAVER_CS_ICE',  942);
      define('BEAVER_CS_RACE', 943);
     
      //----GARMISCH----
      define('GARMISCH_SUN',  944);
      define('GARMISCH_SNOW', 946);
      define('GARMISCH_ICE',  947);
      define('GARMISCH_RACE', 948);
      //Minimodes
      define('GARMISCH_FREE',    949);
      define('GARMISCH_BLACK',   950);
      define('GARMISCH_ATTACK',  951);
      define('GARMISCH_LAST',    952);
      define('GARMISCH_ARCADE',  953);
      define('GARMISCH_EXTREME', 954);
     
      //----SCHLADMING---- ?!
      define('SCHLADMING_SUN',  972);
      define('SCHLADMING_SNOW', 973);
      define('SCHLADMING_ICE',  974);
      define('SCHLADMING_RACE', 975);
      //Minimodes
      define('SCHLADMING_FREE',    976);
      define('SCHLADMING_BLACK',   977);
      define('SCHLADMING_ATTACK',  978);
      define('SCHLADMING_LAST',    979);
      define('SCHLADMING_ARCADE',  980);
      define('SCHLADMING_EXTREME', 981);
     
      //----MÜNCHEN----
      define('MUENCHEN_Q', 945);
     
      //--------------------------------------------------------------
      //Konstanten für die einzelnen Strecken und Bedingungen (Mobile)  !!!!! NICHT AKTUELL !!!!!!
      //--------------------------------------------------------------
     
      //----BEAVER CREEK----
      define('BEAVER_SUN_MOB',  683);
      define('BEAVER_SNOW_MOB', 684);
      define('BEAVER_ICE_MOB',  685);
      define('BEAVER_RACE_MOB', 686);
      //Freeride
      define('BEAVER_FREE_MOB', 753);
     
      //----GRÖDEN----
      define('GROEDEN_SUN_MOB',  687);
      define('GROEDEN_SNOW_MOB', 688);
      define('GROEDEN_ICE_MOB',  689);
      define('GROEDEN_RACE_MOB', 690);
      //Freeride
      define('GROEDEN_FREE_MOB', 754);
     
      //----BORMIO----
      define('BORMIO_SUN_MOB',  691);
      define('BORMIO_SNOW_MOB', 692);
      define('BORMIO_ICE_MOB',  693);
      define('BORMIO_RACE_MOB', 694);
      //Freeride
      define('BORMIO_FREE_MOB', 755);
     
      //----WENGEN----
      define('WENGEN_SUN_MOB',  695);
      define('WENGEN_SNOW_MOB', 696);
      define('WENGEN_ICE_MOB',  697);
      define('WENGEN_RACE_MOB', 698);
      //Freeride
      define('WENGEN_FREE_MOB', 756);
     
      //----KITZBÜHEL----
      define('KITZ_SUN_MOB',  699);
      define('KITZ_SNOW_MOB', 700);
      define('KITZ_ICE_MOB',  701);
      define('KITZ_RACE_MOB', 702);
      //Freeride
      define('KITZ_FREE_MOB', 757);
     
      //----GARMISCH----
      define('GARMISCH_SUN_MOB',  703);
      define('GARMISCH_SNOW_MOB', 704);
      define('GARMISCH_ICE_MOB',  705);
      define('GARMISCH_RACE_MOB', 706);
      //Freeride
      define('GARMISCH_FREE_MOB', 758);
     
      //----SOTSCHI----
      define('SOTSCHI_SUN_MOB',  707);
      define('SOTSCHI_SNOW_MOB', 708);
      define('SOTSCHI_ICE_MOB',  709);
      define('SOTSCHI_RACE_MOB', 710);
      //Freeride
      define('SOTSCHI_FREE_MOB', 759);   
     
      //----VAL'D ISERE----
      define('VALDI_SUN_MOB',  760);
      define('VALDI_SNOW_MOB', 761);
      define('VALDI_ICE_MOB',  762);
      //Freeride
      define('VALDI_FREE_MOB', 763);
     
      //----SCHLADMING----
      define('SCHLADMING_SUN_MOB',  764);
      define('SCHLADMING_SNOW_MOB', 765);
      define('SCHLADMING_ICE_MOB',  766);
      //Freeride
      define('SCHLADMING_FREE_MOB', 767);
     
      //----BEAVER CREEK SG----
      define('BEAVER_SG_SUN_MOB',  768);
      define('BEAVER_SG_SNOW_MOB', 769);
      define('BEAVER_SG_ICE_MOB',  770);
      //Freeride
      define('BEAVER_SG_FREE_MOB', 771);
     
      //-------------------------------------------
      //Konstanten für die einzelnen Streckennamen
      //-------------------------------------------
      define('BEAVER',     'Beaver Creek');
      define('GROEDEN',    'Gröden');
      define('BORMIO',     'Bormio');
      define('WENGEN',     'Wengen');
      define('KITZ',       'Kitzbühel');
      define('GARMISCH',   'Garmisch');
      define('SCHLADMING', 'Schladming');
      define('MUENCHEN',   'München');
      define('VALDI',      'Val\'d Isere');
      define('SOCHI',      'Sochi');
      define('BEAVER_SG',  'Beaver Creek SG');
      define('BEAVER_CS',  'Beaver Creek CS');
     
      //-----------------------------------------
      //Konstanten für die einzelnen Bedingungen
      //-----------------------------------------
      define('SUN',     'Sonne');
      define('SNOW',    'Schnee');
      define('ICE',     'Eis');
      define('RACE',    'Rennen');
      define('PS',      'Parallelslalom');
      define('ALL',     'All-Weather');
      define('FREE',    'Freeride');
      define('BLACK',   'Blitzeis');
      define('ATTACK',  'Zeitbombe');
      define('LAST',    'Letzte Talfahrt');
      define('ARCADE',  'Arcade');
      define('EXTREME', 'Extrem');
     
      //------------------------------------------
      //Konstanten für die verschiedene Versionen
      //------------------------------------------
      define('DESKTOP', 1737);
      define('MOBILE',  1738);
     
      //Konstante als Hilfe zum Auslesen der Kilometer, Stürze, ...
      define('ZEITID', 12);
      define('KMID', 13);
      define('STARTID', 14);
      define('ZIELID', 15);
      define('SPRUNGID', 22);
      define('KMHID', 24);
      define('STURZID', 25);
   }
?>


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Mi Dez 17, 2014 14:15:55 
SC'ler
SC'ler
Benutzeravatar
Offline

Registriert: Fr Dez 02, 2005 13:56:08
Beiträge: 80
Wohnort: Lilienfeld
Geschlecht: Männlich
Alter: 35
SC-Nickname: Fatmax
Flagge:
Ziel: Top 10.000
Danke gegeben: 2
Danke bekommen: 2
 
Hallo,
Danke für die schnelle Antwort.

Ich habe die Änderungen durchgeführt. Es werden auch bei den Fahrernamen die Punkte und Rang für den Weltcup angezeigt, jedoch sind bei allen Fahrern immer die selben Werte.
Es zeigt mir immer die Werte für den 1. Fahrernamen in der Rangliste an, auch wenn ich mit der Maus über den anderen Fahrer bin.
Was könnte es hier noch haben?

_________________
Lg
Fatmax

Bild

*~*~* Ranking der NFM-Speeddevils *~*~*


Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Mi Dez 17, 2014 14:19:46 
SC'ler
SC'ler
Benutzeravatar
Offline

Registriert: Fr Dez 02, 2005 13:56:08
Beiträge: 80
Wohnort: Lilienfeld
Geschlecht: Männlich
Alter: 35
SC-Nickname: Fatmax
Flagge:
Ziel: Top 10.000
Danke gegeben: 2
Danke bekommen: 2
 
Hab den Fehler gefunden.
Man sollte
Code:
$WCresult="SC-Worldcup: ".$rankingWC[$row['Fahrer']]['rank'].". - ".$rankingWC[$row['Fahrer']]['points']."pts";    // WCranking hinzugefügt

nicht unter
Code:
if ($index == 1)

einfügen.

:-)

_________________
Lg
Fatmax

Bild

*~*~* Ranking der NFM-Speeddevils *~*~*


Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Mi Dez 17, 2014 21:07:19 
SC'ler
SC'ler
Benutzeravatar
Offline

Registriert: Fr Dez 02, 2005 13:56:08
Beiträge: 80
Wohnort: Lilienfeld
Geschlecht: Männlich
Alter: 35
SC-Nickname: Fatmax
Flagge:
Ziel: Top 10.000
Danke gegeben: 2
Danke bekommen: 2
 
schnutz hat geschrieben:
Hi Fatmax, danke für die Vorarbeit fürs Raussuchen, wo das Ranking im XML liegt.
Ich habe jetzt auf Basis des Original-Skripts ganz oben von MagicBedda das eingebaut. Meine Änderungen habe ich immer am Ende der Zeile mit "// WCranking" markiert.
Ist sicher nicht perfekt (bin kein PHP-Profi), geht sicher schöner, aber erfüllt den Zweck.

Wo ist die Weltcupwertung? Ich hab das vorerst mal nur als Tooltip auf den Fahrer-Nickname eingetragen. Sucht nach der Variable $WCresult, da wird der Tooltip zusammengestellt und ein paar Zeilen darunter ausgegeben.
Ihr könnt das natürlich gerne als eigene Spalte ausgeben (ich mags nicht, dieser Wert ändert sich so selten, außerdem hat das mit der restlichen Ranking-Tabelle nichts zu tun).

Mit den Skieinstellungen kämpfe ich auch - ich kanns einmal auslesen, nur wenn ich das Skript gleich darauf nochmal starte, bekomme ich 403 Forbidden. Anscheinend werden da Massenaufrufe jetzt unterbunden... :(

lg
schnutz

Code:
<!-- Header des Teams -->
<H1 style="font-size: 24px; vertical-align: middle";><img src="http://www.moneypedia.de/images/thumb/8/86/Sealand1flag.jpg/200px-Sealand1flag.jpg" width="40" height="25" border="1" alt="Sealand" /> Team Fürstentum Sealand</H1>
<?php
   // Fehlermeldungen/Warnungen ausgeben
   //error_reporting(E_ALL);
   //ini_set('display_errors', '1');
   
   ErzeugeKonstanten();
   
   $nick = "";
   $playerData = "";
   $allWeatherMili = "";
   $skiSettings = array();
   
   // Für jede Art von Rennen ein Array
   $rankingSun  = array();
   $rankingSnow = array();
   $rankingIce  = array();
   $rankingRace = array();
   $rankingPS   = array();
   $rankingAll  = array();
   $rankingWC   = array();  // WCranking hinzugefügt
   
   // Nicknamen der Fahrer die aufgelistet werden sollen
   $nicks = array('DaKoni', 'Cr4zy8B4ll', 'Jaegermeister', 'frfr', 'gustel007', 'm4xx_rko', 'MagicBedda', 'ManiTheKing', 'MonkeyDLuffy', 'NatDwo', 'NewbloodII', 'surfer_flo', 'Superkeks30', 'madmax68', 'Spunkfrau', 'Schneehasel');
   
   // Die ID der einzelnen Rennen für das Ranking setzen
   $competitionIdSun  = BEAVER_SUN;
   $competitionIdSnow = BEAVER_SNOW;
   $competitionIdIce  = BEAVER_ICE;
   $competitionIdRace = BEAVER_RACE;
   $competitionIdPS   = MUENCHEN_Q;

   // Sollen Ski-Einstellungen geladen werden?
   $SkiEinstellungLaden = TRUE;
   
   // Lädt die Skieinstellungen
   LoadSkiSettings();
   
   // Lädt die Spielerprofile und befüllt die Rankings
   LoadRankings(DESKTOP);
   
   // Die Rankings die angezeigt werden sollen
   ErzeugeRanking($rankingRace, BEAVER,   RACE);
   ErzeugeRanking($rankingSun,  BEAVER,   SUN);
   ErzeugeRanking($rankingSnow, BEAVER,   SNOW);
   ErzeugeRanking($rankingIce,  BEAVER,   ICE);
   ErzeugeRanking($rankingAll,  BEAVER,   ALL);
   ErzeugeRanking($rankingPS,   MUENCHEN, PS);
     
   //-------------------------------
   // Hilfsmethoden
   //-------------------------------
   
   //Lade die Skieinstellungen
   function LoadSkiSettings()
   {
      GLOBAL $SkiEinstellungLaden;
     
      if($SkiEinstellungLaden)
      {
         GLOBAL $nicks;
         GLOBAL $nick;
         GLOBAL $skiSettings;
       
         GLOBAL $competitionIdSun;
         GLOBAL $competitionIdSnow;
         GLOBAL $competitionIdIce;
         GLOBAL $competitionIdRace;
         GLOBAL $competitionIdPS;
       
         foreach ($nicks as $nick)
         {   

            // Skieinstellungen der Spieler abrufen
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdSun.'&name='.urlencode($nick));
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdSnow.'&name='.urlencode($nick));
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdIce.'&name='.urlencode($nick));
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdRace.'&name='.urlencode($nick));
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdPS.'&name='.urlencode($nick));
         }   
       
         $curl_Rudi = array();
     
         // erzeuge einen neuen cURL-Multi-Handle
         $curl_multi_handle_Rudi = curl_multi_init();
       
         for($i = 0; $i < count($urls_Rudi); $i++)
         {
            $url_Rudi = $urls_Rudi[$i];

            // erzeuge einen neuen cURL-Handle
            $curl_Rudi[$i] = curl_init($url_Rudi);         
            curl_setopt($curl_Rudi[$i], CURLOPT_RETURNTRANSFER, TRUE);
            curl_multi_add_handle($curl_multi_handle_Rudi, $curl_Rudi[$i]);
         }   
         do
         {
            curl_multi_exec($curl_multi_handle_Rudi, $running_Rudi);
         } while($running_Rudi > 0) ;
       
         for($i = 0; $i < count($urls_Rudi); $i++)
         {
            $result_Rudi = curl_multi_getcontent($curl_Rudi[$i]);
            preg_match("/\[.*\]/", $result_Rudi, $helpSki);
            $helpSki = str_replace("[", "", $helpSki);
            $helpSki = str_replace("]", "", $helpSki);
            $helpSki = str_replace("\"", "", $helpSki);
            if ((count($helpSki) > 0) && (strlen($helpSki[0] >= 1)))
            {   
               $skiSettings[] = $helpSki[0];
            }
         }
      }
   }

   // Lädt die Skieinstellungen für einen Fahrer (wenn kein Request von Rudi kommt)
   function LoadSkiSettingsPlayer($player)
   {
      GLOBAL $SkiEinstellungLaden;
     
      if($SkiEinstellungLaden)
      {
         GLOBAL $skiSettings;
         
         GLOBAL $competitionIdSun;
         GLOBAL $competitionIdSnow;
         GLOBAL $competitionIdIce;
         GLOBAL $competitionIdRace;
         GLOBAL $competitionIdPS;
               
         // Skieinstellungen der Spieler abrufen
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdSun.'&name='.urlencode($player));
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdSnow.'&name='.urlencode($player));
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdIce.'&name='.urlencode($player));
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdRace.'&name='.urlencode($player));
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdPS.'&name='.urlencode($player));
         
         $curl_Rudi = array();
         
         // erzeuge einen neuen cURL-Multi-Handle
         $curl_multi_handle_Rudi = curl_multi_init();
         
         for($i = 0; $i < count($urls_Rudi); $i++)
         {
            $url_Rudi = $urls_Rudi[$i];
           
            // erzeuge einen neuen cURL-Handle
            $curl_Rudi[$i] = curl_init($url_Rudi);
            curl_setopt($curl_Rudi[$i], CURLOPT_RETURNTRANSFER, TRUE);
            curl_multi_add_handle($curl_multi_handle_Rudi, $curl_Rudi[$i]);
         }
         do
         {
            curl_multi_exec($curl_multi_handle_Rudi, $running_Rudi);
         } while($running_Rudi > 0) ;
         
         for($i = 0; $i < count($urls_Rudi); $i++)
         {
            $result_Rudi = curl_multi_getcontent($curl_Rudi[$i]);
            preg_match("/\[.*\]/", $result_Rudi, $helpSki);
            $helpSki = str_replace("[", "", $helpSki);
            $helpSki = str_replace("]", "", $helpSki);
            $helpSki = str_replace("\"", "", $helpSki);
            if ((count($helpSki) > 0) && (strlen($helpSki[0] >= 1)))
            {
               $skiSettings[] = $helpSki[0];
            }
         }
         curl_multi_close($curl_multi_handle_Rudi);
      }
   }
   
   //Befüllt die Rankings
   function LoadRankings($gameId)
   {
      GLOBAL $nicks;
      GLOBAL $nick;
      GLOBAL $playerData;
      GLOBAL $allWeatherMili;
     
      GLOBAL $rankingSun;
      GLOBAL $rankingSnow;
      GLOBAL $rankingIce;
      GLOBAL $rankingRace;
      GLOBAL $rankingPS;
      GLOBAL $rankingAll;
      GLOBAL $rankingWC;     // WCranking hinzugefügt
     
      GLOBAL $competitionIdSun;
      GLOBAL $competitionIdSnow;
      GLOBAL $competitionIdIce;
      GLOBAL $competitionIdRace;
      GLOBAL $competitionIdPS;
     
      $url = sprintf('https://www.ski-challenge.com/gm-proxy.php');
     
      $curl_array = array();
     
      // erzeuge einen neuen cURL-Multi-Handle
      $curl_multi_handle = curl_multi_init();
     
      for($i = 0; $i < count($nicks); $i++)
      {
         // erzeuge einen neuen cURL-Handle
         $curl_array[$i] = curl_init($url);
         
         //Settings
         curl_setopt($curl_array[$i], CURLOPT_ENCODING, "deflate, gzip");
         curl_setopt($curl_array[$i], CURLOPT_POST, 1);
         curl_setopt($curl_array[$i], CURLOPT_POSTFIELDS, 'service=1&function=GetPlayerProfileByNick&gameId='.$gameId.'&nick='.urlencode($nicks[$i]));
         curl_setopt($curl_array[$i], CURLOPT_HTTPHEADER, array(
         "Accept: */*",
         "Accept-Language: de-DE,de,q=0.5",
         "Host: www.ski-challenge.com",
         "User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)",
         "X-Requested-With: XMLHttpRequest",
         ));
         curl_setopt($curl_array[$i], CURLOPT_SSL_VERIFYHOST, 0);
         curl_setopt($curl_array[$i], CURLOPT_SSL_VERIFYPEER, FALSE);
         curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, TRUE);
         
         curl_multi_add_handle($curl_multi_handle, $curl_array[$i]);
      }   
      do
      {
         curl_multi_exec($curl_multi_handle, $running);
      } while($running > 0);

      for($i = 0; $i < count($nicks); $i++)
      {
         $result = curl_multi_getcontent($curl_array[$i]);

         // führe die Aktion aus und gebe die Daten an den Browser weiter
         $xml = new SimpleXMLElement($result);
         
         //print_r($xml); //Gibt das gesamte Ergebnis als XML-Element aus
         
         $nick = (string)$xml->playerDetails->nick;        // WCranking  "(string)" hinzugefügt
       
         $playerData = $xml->playerSpecifics->SpecificData;
         
         $allWeatherMili = 0;
         $counterAllWeather = 0;
         $rankingWC[$nick]=array("rank"=>(int)$xml->playerScores->Score->position, "points"=>(int)$xml->playerScores->Score->points);  // WCranking hinzugefügt
         
         // Durchsuche alle gefahrenen Zeiten des Spielers
         foreach ($xml->playerRankings->Ranking as $key => $row)
         {   
            //Je nach Rennen (Strecke, Bedingung) ein anderes Array befüllen
            if ($row->competitionId == $competitionIdSun)
            {
               $rankingSun[]   = SetRankingArray($row, $competitionIdSun);
               $allWeatherMili = $allWeatherMili + ErmittleZeitMili($row->p1);
               $counterAllWeather++;
            }
            elseif ($row->competitionId == $competitionIdSnow)
            {
               $rankingSnow[]  = SetRankingArray($row, $competitionIdSnow);
               $allWeatherMili = $allWeatherMili + ErmittleZeitMili($row->p1);
               $counterAllWeather++;
            }
            elseif ($row->competitionId == $competitionIdIce)
            {
               $rankingIce[]   = SetRankingArray($row, $competitionIdIce);
               $allWeatherMili = $allWeatherMili + ErmittleZeitMili($row->p1);
               $counterAllWeather++;
            }
            elseif ($row->competitionId == $competitionIdRace)
            {
               $rankingRace[] = SetRankingArray($row, $competitionIdRace);
            }
            elseif ($row->competitionId == $competitionIdPS)
            {
               $rankingPS[] = SetRankingArray($row, $competitionIdPS);
            }
         }       
         
         //Nur Fahrer hinzufügen die bei allen Bedingungen gefahren sind
         if ($counterAllWeather == 3)
         {
            $rankingAll[] = SetRankingArrayAllWeather();
         }
      }
   }
   
   //Zeit ermitteln; Format(0:00,000)
   function ErmittleZeit($time_micro)
   {           
      $min_temp = substr($time_micro, 0, -3) / 60;
         
      $min = substr($min_temp, 0, 1);
         
      $sek = substr($time_micro, 0, -3) - ($min * 60);
     
      if (strlen($sek) <= 1)
      {
         $sek = "0".$sek;
      }
     
      $mili = substr($time_micro, -3);
     
      return $min .":". $sek .",". $mili;
   }
   
   //Differenz zwischen 2 Zeiten ermitteln
   function ErmittleDiff($timeVorher, $timeNachher)
   {
      $helpDiff = $timeNachher - $timeVorher;
      $newMin = floor($helpDiff / 60000);
      $helpDiff = $helpDiff - ($newMin * 60000);
      $newSec = floor($helpDiff / 1000);
      $helpDiff = $helpDiff - ($newSec * 1000);
      $newMili = $helpDiff;
     
      if (strlen($newSec) <= 1)
      {
         $newSec = "0".$newSec;
      }
      if (strlen($newMili) <= 1)
      {
         $newMili = "0".$newMili;
      }
      if (strlen($newMili) <= 2)
      {
         $newMili = "0".$newMili;
      }
     
      return "+ ". $newMin .":". $newSec .",". $newMili;
   }
   
   //Zeit in Millisekunden ermitteln
   function ErmittleZeitMili($time_micro)
   {           
      $min_temp = substr($time_micro, 0, -3) / 60;
         
      $min = substr($min_temp, 0, 1);
         
      $sek = substr($time_micro, 0, -3) - ($min * 60);
     
      if (strlen($sek) <= 1)
      {
         $sek = "0".$sek;
      }
     
      $mili = substr($time_micro, -3);
     
      return ($min * 60000) + ($sek * 1000) + $mili;
   }
   
   //Zeit für die All-Weather-Wertung berechnen
   function ErmittleZeitAllWeather($milisec)
   {
      $newMin = floor($milisec / 60000);
      $milisec = $milisec - ($newMin * 60000);
      $newSec = floor($milisec / 1000);
      $milisec = $milisec - ($newSec * 1000);
      $newMili = $milisec;
     
      if (strlen($newSec) <= 1)
      {
         $newSec = "0".$newSec;
      }
      if (strlen($newMili) <= 1)
      {
         $newMili = "0".$newMili;
      }
      if (strlen($newMili) <= 2)
      {
         $newMili = "0".$newMili;
      }
     
      return $newMin .":". $newSec .",". $newMili;
   }
   
   //Befüllt das Array für das Ranking
   function SetRankingArray($xmlArr, $compId)
   {   
      GLOBAL $nick;
      GLOBAL $playerData;
      GLOBAL $skiSettings;
     
      $zeit = ErmittleZeit($xmlArr->p1);
     
      $milisec = ErmittleZeitMili($xmlArr->p1);
     
      $position = $xmlArr->position;
     
      $km = 0;
     
      foreach ($playerData as $key => $row)
      {
         if (($row->competitionId == $compId) && ($row->specificId == KMID))
         {
            $km = $row->value / 1000;
            break;
         }
      }
     
      $ski = "";
     
      foreach ($skiSettings as $key => $row)
      {     
         $row = explode(",", $row);
         if (($row[7] == $compId) && ($row[1] == $nick))
         {
            $ski = $row[3]."-".$row[4]."-".$row[5];
            break;
         }
      }
     
      if ($ski == "")
      {
         LoadSkiSettingsPlayer($nick);
         foreach ($skiSettings as $key => $row)
         {
            $row = explode(",", $row);
            if (($row[7] == $compId) && ($row[1] == $nick))
            {
               $ski = $row[3]."-".$row[4]."-".$row[5];
               break;
            }
         }
      }
     
      return array('Platz' =>$position,'Fahrer' =>$nick,'Zeit' =>$zeit,'Km' =>$km, 'Mili' =>$milisec, 'Ski' =>$ski);
   }
   
   //Befüllt das Array für das Ranking (AllWeather)
   function SetRankingArrayAllWeather()
   {   
      GLOBAL $nick;
      GLOBAL $playerData;
      GLOBAL $allWeatherMili;
      GLOBAL $competitionIdSun;
      GLOBAL $competitionIdSnow;
      GLOBAL $competitionIdIce;
     
      $zeit = ErmittleZeitAllWeather($allWeatherMili);
           
      $milisec = $allWeatherMili;
     
      $position = "";
      $ski = "";
     
      $km = 0;
     
      foreach ($playerData as $key => $row)
      {
         if ((($row->competitionId == $competitionIdSun)  && ($row->specificId == KMID)) ||
            (($row->competitionId == $competitionIdSnow) && ($row->specificId == KMID)) ||
            (($row->competitionId == $competitionIdIce)  && ($row->specificId == KMID)))
         {
            $km = $km + $row->value;
         }
      }
     
      if ($km > 0)
      {
         $km = $km / 1000;
      }
     
      return array('Platz' =>$position,'Fahrer' =>$nick,'Zeit' =>$zeit,'Km' =>$km, 'Mili' =>$milisec, 'Ski' =>$ski);
   }
   
   //Baut die Ranking-Table auf
   function ErzeugeRanking($rankArray, $strecke, $bedingung)
   {
      GLOBAL $rankingWC;     // WCranking hinzugefügt
      if (count($rankArray) > 0)
      {
         echo "<br /><H3>".$strecke." - ".$bedingung."</H3>";
     
         foreach ($rankArray as $key => $row)
         {         
            $platz[$key]  = $row['Platz'];
            $player[$key] = $row['Fahrer'];
            $zeit[$key]   = $row['Zeit'];
            $mili[$key]   = $row['Mili'];
            $km[$key]     = $row['Km'];
            $ski[$key]    = $row['Ski'];
         }
         
         if ($bedingung <> ALL)
         {
            array_multisort($platz, SORT_NUMERIC, $rankArray);
         }
         else
         {
            array_multisort($mili, SORT_NUMERIC, $rankArray);
         }
         
         echo "<table border='0'>";
         echo "<colgroup>";
         echo "<col width='30'>";
         echo "<col width='10'>";
         if ($bedingung <> ALL)
         {
            echo "<col width='60'>";
            echo "<col width='10'>";
         }
         echo "<col width='110'>";
         echo "<col width='10'>";
         echo "<col width='60'>";
         echo "<col width='10'>";
         echo "<col width='80'>";
         echo "<col width='10'>";
         echo "<col width='80'>";
         echo "<col width='10'>";
         echo "<col width='60'>";
         if ($bedingung <> ALL)
         {
            echo "<col width='10'>";
            echo "<col width='70'>";
         }
         echo "</colgroup>";
         echo "<tr>";
         
         echo "<th style='text-align: center;'>Pos</th>";
         echo "<th style='text-align: center;'>  </th>";
         if ($bedingung <> ALL)
         {
            if ($bedingung == RACE)
            {
               echo "<th style='text-align: center;'>Rennen</th>";
            }
            else
            {
               echo "<th style='text-align: center;'>Quali</th>";
            }
            echo "<th style='text-align: center;'>  </th>";
         }
         echo "<th style='text-align: center;'>Athlet</th>";
         echo "<th style='text-align: center;'>  </th>";
         echo "<th style='text-align: center;'>Zeit</th>";
         echo "<th style='text-align: center;'>  </th>";
         echo "<th style='text-align: center;'>Diff</th>";
         echo "<th style='text-align: center;'>  </th>";
         echo "<th style='text-align: center;'>Diff 1.</th>";
         echo "<th style='text-align: center;'>  </th>";
         echo "<th style='text-align: center;'>Km</th>";
         if ($bedingung <> ALL)
         {
            echo "<th style='text-align: center;'>  </th>";
            echo "<th style='text-align: center;'>Ski</th>";
         }
         echo "</tr>";
         
         $index = 1;
         $helpMili = 0;
         $helpMiliFirst = 0;
         $newDiff = "";
         $newDiffGesamt = "";
         
         foreach ($rankArray as $key => $row)
         { 
            $WCresult="SC-Worldcup: ".$rankingWC[$row['Fahrer']]['rank'].". - ".$rankingWC[$row['Fahrer']]['points']."pts";    // WCranking hinzugefügt
            if ($index == 1)
            {
               $helpMiliFirst = $row['Mili'];
            }
            if ($index > 1)
            {
               $newDiff = ErmittleDiff($helpMili, $row['Mili']);
               $newDiffGesamt = ErmittleDiff($helpMiliFirst, $row['Mili']);
            }
            $helpMili = $row['Mili'];
           
            echo "<tr>";
            echo "<td style='text-align: right;'>$index</td>";
            echo "<td style='text-align: center;'>  </td>";
            if ($bedingung <> ALL)
            {
               echo "<td style='text-align: right;'>".$row['Platz']."</td>";
               echo "<td style='text-align: center;'>  </td>";
            }
            echo "<td style='text-align: left;' title='".$WCresult."'>".$row['Fahrer']."</td>";   // WCranking title-tag hinzugefügt
            echo "<td style='text-align: center;'>  </td>";
            echo "<td style='text-align: right;'>".$row['Zeit']."</td>";
            echo "<td style='text-align: center;'>  </td>";
            echo "<td style='text-align: right;'>".$newDiff."</td>";
            echo "<td style='text-align: center;'>  </td>";
            echo "<td style='text-align: right;'>".$newDiffGesamt."</td>";
            echo "<td style='text-align: center;'>  </td>";
            echo "<td style='text-align: right;'>".number_format($row['Km'], '2', ',', '.')."</td>";
            if ($bedingung <> ALL)
            {
               echo "<td style='text-align: center;'>  </td>";
               echo "<td style='text-align: right;'>".$row['Ski']."</td>";
            }
            echo "</tr>";
            $index++;
         }
         echo "</table>";       
      }
   }
   
   function ErzeugeKonstanten()
   {
      //---------------------------------------------------------------
      //Konstanten für die einzelnen Strecken und Bedingungen (Desktop)
      //---------------------------------------------------------------
     
      //----BEAVER CREEK----
      define('BEAVER_SUN',  880);
      define('BEAVER_SNOW', 881);
      define('BEAVER_ICE',  882);
      define('BEAVER_RACE', 883);
      //Minimodes
      define('BEAVER_FREE',    884);
      define('BEAVER_BLACK',   885);
      define('BEAVER_ATTACK',  886);
      define('BEAVER_LAST',    887);
      define('BEAVER_ARCADE',  888);
      define('BEAVER_EXTREME', 889);
     
      //----GRÖDEN----
      define('GROEDEN_SUN',  895);
      define('GROEDEN_SNOW', 896);
      define('GROEDEN_ICE',  897);
      define('GROEDEN_RACE', 898);
      //Minimodes
      define('GROEDEN_FREE',    899);
      define('GROEDEN_BLACK',   900);
      define('GROEDEN_ATTACK',  901);
      define('GROEDEN_LAST',    902);
      define('GROEDEN_ARCADE',  903);
      define('GROEDEN_EXTREME', 904);
     
      //----BORMIO----
      define('BORMIO_SUN',  910);
      define('BORMIO_SNOW', 911);
      define('BORMIO_ICE',  912);
      define('BORMIO_RACE', 913);
      //Minimodes
      define('BORMIO_FREE',    914);
      define('BORMIO_BLACK',   915);
      define('BORMIO_ATTACK',  916);
      define('BORMIO_LAST',    917);
      define('BORMIO_ARCADE',  918);
      define('BORMIO_EXTREME', 919);
     
      //----WENGEN----
      define('WENGEN_SUN',  920);
      define('WENGEN_SNOW', 921);
      define('WENGEN_ICE',  922);
      define('WENGEN_RACE', 923);
      //Minimodes
      define('WENGEN_FREE',    924);
      define('WENGEN_BLACK',   925);
      define('WENGEN_ATTACK',  926);
      define('WENGEN_LAST',    927);
      define('WENGEN_ARCADE',  928);
      define('WENGEN_EXTREME', 929);
     
      //----KITZBÜHEL----
      define('KITZ_SUN',  930);
      define('KITZ_SNOW', 931);
      define('KITZ_ICE',  932);
      define('KITZ_RACE', 933);
      //Minimodes
      define('KITZ_FREE',    934);
      define('KITZ_BLACK',   935);
      define('KITZ_ATTACK',  936);
      define('KITZ_LAST',    937);
      define('KITZ_ARCADE',  938);
      define('KITZ_EXTREME', 939);
     
      //----BEAVER CREEK CS----
      define('BEAVER_CS_SUN',  940);
      define('BEAVER_CS_SNOW', 941);
      define('BEAVER_CS_ICE',  942);
      define('BEAVER_CS_RACE', 943);
     
      //----GARMISCH----
      define('GARMISCH_SUN',  944);
      define('GARMISCH_SNOW', 946);
      define('GARMISCH_ICE',  947);
      define('GARMISCH_RACE', 948);
      //Minimodes
      define('GARMISCH_FREE',    949);
      define('GARMISCH_BLACK',   950);
      define('GARMISCH_ATTACK',  951);
      define('GARMISCH_LAST',    952);
      define('GARMISCH_ARCADE',  953);
      define('GARMISCH_EXTREME', 954);
     
      //----SCHLADMING---- ?!
      define('SCHLADMING_SUN',  972);
      define('SCHLADMING_SNOW', 973);
      define('SCHLADMING_ICE',  974);
      define('SCHLADMING_RACE', 975);
      //Minimodes
      define('SCHLADMING_FREE',    976);
      define('SCHLADMING_BLACK',   977);
      define('SCHLADMING_ATTACK',  978);
      define('SCHLADMING_LAST',    979);
      define('SCHLADMING_ARCADE',  980);
      define('SCHLADMING_EXTREME', 981);
     
      //----MÜNCHEN----
      define('MUENCHEN_Q', 945);
     
      //--------------------------------------------------------------
      //Konstanten für die einzelnen Strecken und Bedingungen (Mobile)  !!!!! NICHT AKTUELL !!!!!!
      //--------------------------------------------------------------
     
      //----BEAVER CREEK----
      define('BEAVER_SUN_MOB',  683);
      define('BEAVER_SNOW_MOB', 684);
      define('BEAVER_ICE_MOB',  685);
      define('BEAVER_RACE_MOB', 686);
      //Freeride
      define('BEAVER_FREE_MOB', 753);
     
      //----GRÖDEN----
      define('GROEDEN_SUN_MOB',  687);
      define('GROEDEN_SNOW_MOB', 688);
      define('GROEDEN_ICE_MOB',  689);
      define('GROEDEN_RACE_MOB', 690);
      //Freeride
      define('GROEDEN_FREE_MOB', 754);
     
      //----BORMIO----
      define('BORMIO_SUN_MOB',  691);
      define('BORMIO_SNOW_MOB', 692);
      define('BORMIO_ICE_MOB',  693);
      define('BORMIO_RACE_MOB', 694);
      //Freeride
      define('BORMIO_FREE_MOB', 755);
     
      //----WENGEN----
      define('WENGEN_SUN_MOB',  695);
      define('WENGEN_SNOW_MOB', 696);
      define('WENGEN_ICE_MOB',  697);
      define('WENGEN_RACE_MOB', 698);
      //Freeride
      define('WENGEN_FREE_MOB', 756);
     
      //----KITZBÜHEL----
      define('KITZ_SUN_MOB',  699);
      define('KITZ_SNOW_MOB', 700);
      define('KITZ_ICE_MOB',  701);
      define('KITZ_RACE_MOB', 702);
      //Freeride
      define('KITZ_FREE_MOB', 757);
     
      //----GARMISCH----
      define('GARMISCH_SUN_MOB',  703);
      define('GARMISCH_SNOW_MOB', 704);
      define('GARMISCH_ICE_MOB',  705);
      define('GARMISCH_RACE_MOB', 706);
      //Freeride
      define('GARMISCH_FREE_MOB', 758);
     
      //----SOTSCHI----
      define('SOTSCHI_SUN_MOB',  707);
      define('SOTSCHI_SNOW_MOB', 708);
      define('SOTSCHI_ICE_MOB',  709);
      define('SOTSCHI_RACE_MOB', 710);
      //Freeride
      define('SOTSCHI_FREE_MOB', 759);   
     
      //----VAL'D ISERE----
      define('VALDI_SUN_MOB',  760);
      define('VALDI_SNOW_MOB', 761);
      define('VALDI_ICE_MOB',  762);
      //Freeride
      define('VALDI_FREE_MOB', 763);
     
      //----SCHLADMING----
      define('SCHLADMING_SUN_MOB',  764);
      define('SCHLADMING_SNOW_MOB', 765);
      define('SCHLADMING_ICE_MOB',  766);
      //Freeride
      define('SCHLADMING_FREE_MOB', 767);
     
      //----BEAVER CREEK SG----
      define('BEAVER_SG_SUN_MOB',  768);
      define('BEAVER_SG_SNOW_MOB', 769);
      define('BEAVER_SG_ICE_MOB',  770);
      //Freeride
      define('BEAVER_SG_FREE_MOB', 771);
     
      //-------------------------------------------
      //Konstanten für die einzelnen Streckennamen
      //-------------------------------------------
      define('BEAVER',     'Beaver Creek');
      define('GROEDEN',    'Gröden');
      define('BORMIO',     'Bormio');
      define('WENGEN',     'Wengen');
      define('KITZ',       'Kitzbühel');
      define('GARMISCH',   'Garmisch');
      define('SCHLADMING', 'Schladming');
      define('MUENCHEN',   'München');
      define('VALDI',      'Val\'d Isere');
      define('SOCHI',      'Sochi');
      define('BEAVER_SG',  'Beaver Creek SG');
      define('BEAVER_CS',  'Beaver Creek CS');
     
      //-----------------------------------------
      //Konstanten für die einzelnen Bedingungen
      //-----------------------------------------
      define('SUN',     'Sonne');
      define('SNOW',    'Schnee');
      define('ICE',     'Eis');
      define('RACE',    'Rennen');
      define('PS',      'Parallelslalom');
      define('ALL',     'All-Weather');
      define('FREE',    'Freeride');
      define('BLACK',   'Blitzeis');
      define('ATTACK',  'Zeitbombe');
      define('LAST',    'Letzte Talfahrt');
      define('ARCADE',  'Arcade');
      define('EXTREME', 'Extrem');
     
      //------------------------------------------
      //Konstanten für die verschiedene Versionen
      //------------------------------------------
      define('DESKTOP', 1737);
      define('MOBILE',  1738);
     
      //Konstante als Hilfe zum Auslesen der Kilometer, Stürze, ...
      define('ZEITID', 12);
      define('KMID', 13);
      define('STARTID', 14);
      define('ZIELID', 15);
      define('SPRUNGID', 22);
      define('KMHID', 24);
      define('STURZID', 25);
   }
?>



Wie kann ich auf die Namen in $rankingWC zugreifen?
Die Punkte bekomme ich mit $rankingWC[points] und ebenfalls die Platzierung mit $rankingWC[rank], jedoch den Namen bekomme ich nicht.

_________________
Lg
Fatmax

Bild

*~*~* Ranking der NFM-Speeddevils *~*~*


Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Mi Dez 17, 2014 22:00:05 
Wengana
Wengana
Benutzeravatar
Offline

Registriert: Mi Nov 26, 2008 22:00:35
Beiträge: 307
Wohnort: Linz
Geschlecht: Männlich
Alter: 27
SC-Nickname: MagicBedda
Nationencup: Sealand
Flagge:
Ziel: Top 250
OS: Windows 10
Danke gegeben: 14
Danke bekommen: 71
 
Ihr hättet auch im Thread vom Vorjahr vorbei schauen können :D da wäre schon ein Beispiel für ein WC-Ranking das "leicht" adaptiert werden hätte können.
Sorry das ich jetzt erst hier schreibe, war aber jetzt leider fast eine Woche verhindert. Das mit den Ski-Einstellungen ist auch so eine Sache, wie schnutz schon geschrieben hat kommt meist kein sinnvoller Request der Seite bzw. wird es anscheinend unterbunden .. naja.

Hier das Beispiel einer WC-Rangliste:
Code:
<?php
   ini_set('display_errors', 1);
   error_reporting(-1);
?>

<!-- Header des Teams -->
<H1 style="font-size: 24px; vertical-align: middle";><img src="http://www.moneypedia.de/images/thumb/8/86/Sealand1flag.jpg/200px-Sealand1flag.jpg" width="40" height="25" border="1" alt="Sealand" /> Team Fürstentum Sealand</H1>
<?php   
   $nick = "";
   $points = "";
   $pos = "";
   
   // Für jede Art von Rennen ein Array
   $rankingCup    = array();
   
   // Nicknamen der Fahrer die aufgelistet werden sollen
   $nicks = array('MagicBedda', 'madmax68', 'surfer_flo', 'm4xx_rko', 'NatDwo', 'Fight4Glory', 'NewbloodII', 'Chaeter62', 'frfr', 'abcdefk', 'ManiTheKing', 'MonkeyDLuffy', 'Schneehasel', 'Superkeks30');
   
   // Lädt die Spielerprofile und befüllt die Rankings
   LoadRankings(1737);
   
   // Die Rankings die angezeigt werden sollen
   ErzeugeRankingCup($rankingCup);
     
   //-------------------------------
   // Hilfsmethoden
   //-------------------------------
   //Befüllt die Rankings
   function LoadRankings($gameId)
   {
      GLOBAL $nicks;
      GLOBAL $nick;
     
      GLOBAL $rankingCup;
     
     $url = sprintf('https://www.ski-challenge.com/gm-proxy.php');
    
      $curl_array = array();
     
      // erzeuge einen neuen cURL-Multi-Handle
      $curl_multi_handle = curl_multi_init();
     
      for($i = 0; $i < count($nicks); $i++)
      {
         // erzeuge einen neuen cURL-Handle
         $curl_array[$i] = curl_init($url);
         
         //Settings
         curl_setopt($curl_array[$i], CURLOPT_ENCODING, "deflate, gzip");
         curl_setopt($curl_array[$i], CURLOPT_POST, 1);
         curl_setopt($curl_array[$i], CURLOPT_POSTFIELDS, 'service=1&function=GetPlayerProfileByNick&gameId='.$gameId.'&nick='.urlencode($nicks[$i]));
         curl_setopt($curl_array[$i], CURLOPT_HTTPHEADER, array(
         "Accept: */*",
         "Accept-Language: de-DE,de,q=0.5",
         "Host: www.ski-challenge.com",
         "User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)",
         "X-Requested-With: XMLHttpRequest",
         ));
         curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, TRUE);
         curl_setopt($curl_array[$i], CURLOPT_SSL_VERIFYHOST, 0);
         curl_setopt($curl_array[$i], CURLOPT_SSL_VERIFYPEER, FALSE);
         curl_multi_add_handle($curl_multi_handle, $curl_array[$i]);
      }   
      do
      {
         curl_multi_exec($curl_multi_handle, $running);
      } while($running > 0);

      for($i = 0; $i < count($nicks); $i++)
      {
         $result = curl_multi_getcontent($curl_array[$i]);

         // führe die Aktion aus und gebe die Daten an den Browser weiter
         $xml = new SimpleXMLElement($result);
         
         //print_r($xml); //Gibt das gesamte Ergebnis als XML-Element aus
         
         $nick = $xml->playerDetails->nick;
         
         foreach ($xml->playerScores->Score as $key => $row)
         {   
            $points = $row->points;
            $pos = $row->position;
            $rankingCup[] = array('Platz' =>$pos,'Fahrer' =>$nick,'Punkte' =>$points);
         }       
      }
   }
   
   //Baut die Rankting-Table auf
   function ErzeugeRankingCup($rankArray)
   {
      if (count($rankArray) > 0)
      {
         echo "<br /><H3>World Cup</H3>";
     
         foreach ($rankArray as $key => $row)
         {         
            $platz[$key]  = $row['Platz'];
            $player[$key] = $row['Fahrer'];
            $points[$key]   = $row['Punkte'];
         }
         
         array_multisort($platz, SORT_NUMERIC, $rankArray);
                 
         echo "<table border='0'>";
         echo "<colgroup>";
         echo "<col width='30'>";
         echo "<col width='10'>";
         echo "<col width='60'>";
         echo "<col width='10'>";
         echo "<col width='110'>";
         echo "<col width='10'>";
         echo "<col width='70'>";
         
         echo "</colgroup>";
         echo "<tr>";
         
         echo "<th style='text-align: center;'>Pos</th>";
         echo "<th style='text-align: center;'>  </th>";
         echo "<th style='text-align: center;'>Cup</th>";
         echo "<th style='text-align: center;'>  </th>";
         echo "<th style='text-align: center;'>Athlet</th>";
         echo "<th style='text-align: center;'>  </th>";
         echo "<th style='text-align: center;'>Punkte</th>";
         
         echo "</tr>";
         
         $index = 1;
         
         foreach ($rankArray as $key => $row)
         {     
            echo "<tr>";
            echo "<td style='text-align: right;'>$index</td>";
            echo "<td style='text-align: center;'>  </td>";
            echo "<td style='text-align: right;'>".$row['Platz']."</td>";
            echo "<td style='text-align: center;'>  </td>";
            echo "<td style='text-align: left;'>".$row['Fahrer']."</td>";
            echo "<td style='text-align: center;'>  </td>";
            echo "<td style='text-align: right;'>".number_format((double)$row['Punkte'], '0', ',', '.')."</td>";
            echo "</tr>";
            $index++;
         }
         echo "</table>";       
      }
   }
?>
LG Magic

_________________
Ergebnisse SC: immer so um die Top 500/300; SC 2010: 189.
SC:Banner SC:Banner


Nach oben
 Profil  
Mit Zitat antworten  
Für diesen Beitrag haben sich bei MagicBedda folgende User bedankt:
hatta, operator1
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Do Dez 18, 2014 18:51:57 
Europameister
Europameister
Benutzeravatar
Offline

Registriert: Mo Jan 18, 2010 09:01:52
Beiträge: 2611
Geschlecht: Männlich
Alter: 33
SC-Nickname: Filu84
Nationencup: Team Hungary
Flagge:
Ziel: Top 100
OS: Windows 7
Danke gegeben: 179
Danke bekommen: 382
 
Hab hier mal noch die übrigen id's der bonusstrecken...

Code:
      //----SCHLADMING---- ?!
      define('SCHLADMING_SUN',  973);
      define('SCHLADMING_SNOW', 974);
      define('SCHLADMING_ICE',  975);

      //Minimodes
      define('SCHLADMING_FREE',    976);
      define('SCHLADMING_BLACK',   977);
      define('SCHLADMING_ATTACK',  978);
      define('SCHLADMING_LAST',    979);
      define('SCHLADMING_ARCADE',  980);
      define('SCHLADMING_EXTREME', 981);

      //----Valdi---- ?!
      define('VALDI_SUN',  955);
      define('VALDI_SNOW', 956);
      define('VALDI_ICE',  957);

      //Minimodes
      define('VALDI_FREE',    958);
      define('VALDI_BLACK',   959);
      define('VALDI_ATTACK',  960);
      define('VALDI_LAST',    961);
      define('VALDI_ARCADE',  962);
      define('VALDI_EXTREME', 963);

      //----Sotchi---- ?!
      define('SOCHI_SUN',  964);
      define('SOCHI_SNOW', 965);
      define('SOCHI_ICE',  966);

      //Minimodes
      define('SOCHI_FREE',    967);
      define('SOCHI_BLACK',   968);
      define('SOCHI_ATTACK',  969);
      define('SOCHI_LAST',    970);
      define('SOCHI_ARCADE',  971);
      define('SOCHI_EXTREME', 972);


@Bedda kannst du das vielleicht im 1. post integrieren (schaldming bist wohl um eins verrrutscht)

_________________


BildSC:BannerBild

SC:Banner

Platzierungen in der Vergangenheit:
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Di Dez 30, 2014 18:55:24 
SC'ler
SC'ler
Benutzeravatar
Offline

Registriert: Fr Dez 02, 2005 13:56:08
Beiträge: 80
Wohnort: Lilienfeld
Geschlecht: Männlich
Alter: 35
SC-Nickname: Fatmax
Flagge:
Ziel: Top 10.000
Danke gegeben: 2
Danke bekommen: 2
 
Wie müsste man das Script ergänzen, um auch die Anzahl der Fahrten und Stürze bzw. die Quote auselesen zu können?

_________________
Lg
Fatmax

Bild

*~*~* Ranking der NFM-Speeddevils *~*~*


Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Di Dez 30, 2014 22:36:21 
Europameister
Europameister
Benutzeravatar
Offline

Registriert: Mo Jan 18, 2010 09:01:52
Beiträge: 2611
Geschlecht: Männlich
Alter: 33
SC-Nickname: Filu84
Nationencup: Team Hungary
Flagge:
Ziel: Top 100
OS: Windows 7
Danke gegeben: 179
Danke bekommen: 382
 
die frage ist ob da überhaupt was schlaues dabei rauskommt.. ich hab mir die sache mal bei mir in beaver sonne angeschaut und komme auf folgendes.

CompetitionID 880 = Beaver Quali Sonne
SpecificID 14 = StartID
SpecificID 15 = ZielID
SpecificID 25 = SturzID

wenn ich ja nun die werte von den Zielankünften (43) und Stürze (326) zussamenzähle müsste ich ja eigentlich auf die Starts kommen (592). Dem ist aber nicht so, denn ich komme lediglich auf 369 und somit auf eine differenz von 223.
Sind diese 223 versuche neustarts ohne sturz? Die Frage stellt sich ob hier überhaupt richtig protokolliert wird.

Bild

wenn was rechnen, dann Zielankünfte in % zu den starts... ist vom gefühl her bei mir etwa richtig mit nichtmal 10% :lol: (7,2%)

_________________


BildSC:BannerBild

SC:Banner

Platzierungen in der Vergangenheit:
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Mi Dez 31, 2014 00:16:14 
Europameister
Europameister
Benutzeravatar
Offline

Registriert: Mo Jan 18, 2010 09:01:52
Beiträge: 2611
Geschlecht: Männlich
Alter: 33
SC-Nickname: Filu84
Nationencup: Team Hungary
Flagge:
Ziel: Top 100
OS: Windows 7
Danke gegeben: 179
Danke bekommen: 382
 
Ich hab mal was gebastelt, was von mir aus noch am meisten sinn macht mit den Zielankünften



und natürlich den Code dazu

Code:
<!-- Header des Teams -->
<h1>Team Hungary Live-Ranking</h1>
<H2 style="font-size: 24px; vertical-align: middle";><img src="http://www.guuuru.at/sc14/bilder/banner-hungary.gif" width="415" height="90" border="1" alt="Hungary" /></H2>
<?php
   // Fehlermeldungen/Warnungen ausgeben
   //error_reporting(E_ALL);
   //ini_set('display_errors', '1');

   ErzeugeKonstanten();

   $nick = "";
   $playerData = "";
   $allWeatherMili = "";
   $skiSettings = array();

   // Für jede Art von Rennen ein Array
   $rankingSun  = array();
   $rankingSnow = array();
   $rankingIce  = array();
   $rankingRace = array();
   $rankingPS   = array();
   $rankingAll  = array();

   // Nicknamen der Fahrer die aufgelistet werden sollen
   $nicks = array(guuuru1956,Filu84,Altvehikel,Krautinger,maxi1270,projekt32,Philipp369,Ace2807,martin6910,mfyrle,Bluefox85,tozoo,HerrNorbert,lupo65,jetskiracer1,fubsi865);

   // Die ID der einzelnen Rennen für das Ranking setzen
   $competitionIdSun  = WENGEN_SUN;
   $competitionIdSnow = WENGEN_SNOW;
   $competitionIdIce  = WENGEN_ICE;
   $competitionIdRace = WENGEN_RACE;
   $competitionIdPS   = MUENCHEN_Q;

   // Sollen Ski-Einstellungen geladen werden?
   $SkiEinstellungLaden = FALSE;

   // Lädt die Skieinstellungen
   LoadSkiSettings();

   // Lädt die Spielerprofile und befüllt die Rankings
   LoadRankings(DESKTOP);

   // Die Rankings die angezeigt werden sollen
   ErzeugeRanking($rankingRace, WENGEN,   RACE);
   ErzeugeRanking($rankingSun,  WENGEN,   SUN);
   ErzeugeRanking($rankingSnow, WENGEN,   SNOW);
   ErzeugeRanking($rankingIce,  WENGEN,   ICE);
   ErzeugeRanking($rankingAll,  WENGEN,   ALL);
   ErzeugeRanking($rankingPS,   MUENCHEN, PS);

   //-------------------------------
   // Hilfsmethoden
   //-------------------------------

   //Lade die Skieinstellungen
   function LoadSkiSettings()
   {
      GLOBAL $SkiEinstellungLaden;

      if($SkiEinstellungLaden)
      {
         GLOBAL $nicks;
         GLOBAL $nick;
         GLOBAL $skiSettings;

         GLOBAL $competitionIdSun;
         GLOBAL $competitionIdSnow;
         GLOBAL $competitionIdIce;
         GLOBAL $competitionIdRace;
         GLOBAL $competitionIdPS;

         foreach ($nicks as $nick)
         {

            // Skieinstellungen der Spieler abrufen
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdSun.'&name='.urlencode($nick));
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdSnow.'&name='.urlencode($nick));
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdIce.'&name='.urlencode($nick));
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdRace.'&name='.urlencode($nick));
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdPS.'&name='.urlencode($nick));
         }

         $curl_Rudi = array();

         // erzeuge einen neuen cURL-Multi-Handle
         $curl_multi_handle_Rudi = curl_multi_init();

         for($i = 0; $i < count($urls_Rudi); $i++)
         {
            $url_Rudi = $urls_Rudi[$i];

            // erzeuge einen neuen cURL-Handle
            $curl_Rudi[$i] = curl_init($url_Rudi);
            curl_setopt($curl_Rudi[$i], CURLOPT_RETURNTRANSFER, TRUE);
            curl_multi_add_handle($curl_multi_handle_Rudi, $curl_Rudi[$i]);
         }
         do
         {
            curl_multi_exec($curl_multi_handle_Rudi, $running_Rudi);
         } while($running_Rudi > 0) ;

         for($i = 0; $i < count($urls_Rudi); $i++)
         {
            $result_Rudi = curl_multi_getcontent($curl_Rudi[$i]);
            preg_match("/\[.*\]/", $result_Rudi, $helpSki);
            $helpSki = str_replace("[", "", $helpSki);
            $helpSki = str_replace("]", "", $helpSki);
            $helpSki = str_replace("\"", "", $helpSki);
            if ((count($helpSki) > 0) && (strlen($helpSki[0] >= 1)))
            {
               $skiSettings[] = $helpSki[0];
            }
         }
      }
   }

   // Lädt die Skieinstellungen für einen Fahrer (wenn kein Request von Rudi kommt)
   function LoadSkiSettingsPlayer($player)
   {
      GLOBAL $SkiEinstellungLaden;

      if($SkiEinstellungLaden)
      {
         GLOBAL $skiSettings;

         GLOBAL $competitionIdSun;
         GLOBAL $competitionIdSnow;
         GLOBAL $competitionIdIce;
         GLOBAL $competitionIdRace;
         GLOBAL $competitionIdPS;

         // Skieinstellungen der Spieler abrufen
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdSun.'&name='.urlencode($player));
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdSnow.'&name='.urlencode($player));
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdIce.'&name='.urlencode($player));
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdRace.'&name='.urlencode($player));
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdPS.'&name='.urlencode($player));

         $curl_Rudi = array();

         // erzeuge einen neuen cURL-Multi-Handle
         $curl_multi_handle_Rudi = curl_multi_init();

         for($i = 0; $i < count($urls_Rudi); $i++)
         {
            $url_Rudi = $urls_Rudi[$i];

            // erzeuge einen neuen cURL-Handle
            $curl_Rudi[$i] = curl_init($url_Rudi);
            curl_setopt($curl_Rudi[$i], CURLOPT_RETURNTRANSFER, TRUE);
            curl_multi_add_handle($curl_multi_handle_Rudi, $curl_Rudi[$i]);
         }
         do
         {
            curl_multi_exec($curl_multi_handle_Rudi, $running_Rudi);
         } while($running_Rudi > 0) ;

         for($i = 0; $i < count($urls_Rudi); $i++)
         {
            $result_Rudi = curl_multi_getcontent($curl_Rudi[$i]);
            preg_match("/\[.*\]/", $result_Rudi, $helpSki);
            $helpSki = str_replace("[", "", $helpSki);
            $helpSki = str_replace("]", "", $helpSki);
            $helpSki = str_replace("\"", "", $helpSki);
            if ((count($helpSki) > 0) && (strlen($helpSki[0] >= 1)))
            {
               $skiSettings[] = $helpSki[0];
            }
         }
         curl_multi_close($curl_multi_handle_Rudi);
      }
   }

   //Befüllt die Rankings
   function LoadRankings($gameId)
   {
      GLOBAL $nicks;
      GLOBAL $nick;
      GLOBAL $playerData;
      GLOBAL $allWeatherMili;

      GLOBAL $rankingSun;
      GLOBAL $rankingSnow;
      GLOBAL $rankingIce;
      GLOBAL $rankingRace;
      GLOBAL $rankingPS;
      GLOBAL $rankingAll;

      GLOBAL $competitionIdSun;
      GLOBAL $competitionIdSnow;
      GLOBAL $competitionIdIce;
      GLOBAL $competitionIdRace;
      GLOBAL $competitionIdPS;

      $url = sprintf('https://www.ski-challenge.com/gm-proxy.php');

      $curl_array = array();

      // erzeuge einen neuen cURL-Multi-Handle
      $curl_multi_handle = curl_multi_init();

      for($i = 0; $i < count($nicks); $i++)
      {
         // erzeuge einen neuen cURL-Handle
         $curl_array[$i] = curl_init($url);

         //Settings
         curl_setopt($curl_array[$i], CURLOPT_ENCODING, "deflate, gzip");
         curl_setopt($curl_array[$i], CURLOPT_POST, 1);
         curl_setopt($curl_array[$i], CURLOPT_POSTFIELDS, 'service=1&function=GetPlayerProfileByNick&gameId='.$gameId.'&nick='.urlencode($nicks[$i]));
         curl_setopt($curl_array[$i], CURLOPT_HTTPHEADER, array(
         "Accept: */*",
         "Accept-Language: de-DE,de,q=0.5",
         "Host: www.ski-challenge.com",
         "User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)",
         "X-Requested-With: XMLHttpRequest",
         ));
         curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, TRUE);

         curl_setopt($curl_array[$i], CURLOPT_SSL_VERIFYHOST, 0);
         curl_setopt($curl_array[$i], CURLOPT_SSL_VERIFYPEER, 0);

         curl_multi_add_handle($curl_multi_handle, $curl_array[$i]);
      }
      do
      {
         curl_multi_exec($curl_multi_handle, $running);
      } while($running > 0);

      for($i = 0; $i < count($nicks); $i++)
      {
         $result = curl_multi_getcontent($curl_array[$i]);

         // führe die Aktion aus und gebe die Daten an den Browser weiter
         $xml = new SimpleXMLElement($result);

         //print_r($xml); //Gibt das gesamte Ergebnis als XML-Element aus

         $nick = $xml->playerDetails->nick;

         $playerData = $xml->playerSpecifics->SpecificData;

         $allWeatherMili = 0;
         $counterAllWeather = 0;

         // Durchsuche alle gefahrenen Zeiten des Spielers
         foreach ($xml->playerRankings->Ranking as $key => $row)
         {
            //Je nach Rennen (Strecke, Bedingung) ein anderes Array befüllen
            if ($row->competitionId == $competitionIdSun)
            {
               $rankingSun[]   = SetRankingArray($row, $competitionIdSun);
               $allWeatherMili = $allWeatherMili + ErmittleZeitMili($row->p1);
               $counterAllWeather++;
            }
            elseif ($row->competitionId == $competitionIdSnow)
            {
               $rankingSnow[]  = SetRankingArray($row, $competitionIdSnow);
               $allWeatherMili = $allWeatherMili + ErmittleZeitMili($row->p1);
               $counterAllWeather++;
            }
            elseif ($row->competitionId == $competitionIdIce)
            {
               $rankingIce[]   = SetRankingArray($row, $competitionIdIce);
               $allWeatherMili = $allWeatherMili + ErmittleZeitMili($row->p1);
               $counterAllWeather++;
            }
            elseif ($row->competitionId == $competitionIdRace)
            {
               $rankingRace[] = SetRankingArray($row, $competitionIdRace);
            }
            elseif ($row->competitionId == $competitionIdPS)
            {
               $rankingPS[] = SetRankingArray($row, $competitionIdPS);
            }
         }

         //Nur Fahrer hinzufügen die bei allen Bedingungen gefahren sind
         if ($counterAllWeather == 3)
         {
            $rankingAll[] = SetRankingArrayAllWeather();
         }
      }
   }

   //Zeit ermitteln; Format(0:00,000)
   function ErmittleZeit($time_micro)
   {
      $min_temp = substr($time_micro, 0, -3) / 60;

      $min = substr($min_temp, 0, 1);

      $sek = substr($time_micro, 0, -3) - ($min * 60);

      if (strlen($sek) <= 1)
      {
         $sek = "0".$sek;
      }

      $mili = substr($time_micro, -3);

      return $min .":". $sek .",". $mili;
   }

   //Differenz zwischen 2 Zeiten ermitteln
   function ErmittleDiff($timeVorher, $timeNachher)
   {
      $helpDiff = $timeNachher - $timeVorher;
      $newMin = floor($helpDiff / 60000);
      $helpDiff = $helpDiff - ($newMin * 60000);
      $newSec = floor($helpDiff / 1000);
      $helpDiff = $helpDiff - ($newSec * 1000);
      $newMili = $helpDiff;

      if (strlen($newSec) <= 1)
      {
         $newSec = "0".$newSec;
      }
      if (strlen($newMili) <= 1)
      {
         $newMili = "0".$newMili;
      }
      if (strlen($newMili) <= 2)
      {
         $newMili = "0".$newMili;
      }

      return "+ ". $newMin .":". $newSec .",". $newMili;
   }

   //Zeit in Millisekunden ermitteln
   function ErmittleZeitMili($time_micro)
   {
      $min_temp = substr($time_micro, 0, -3) / 60;

      $min = substr($min_temp, 0, 1);

      $sek = substr($time_micro, 0, -3) - ($min * 60);

      if (strlen($sek) <= 1)
      {
         $sek = "0".$sek;
      }

      $mili = substr($time_micro, -3);

      return ($min * 60000) + ($sek * 1000) + $mili;
   }

   //Zeit für die All-Weather-Wertung berechnen
   function ErmittleZeitAllWeather($milisec)
   {
      $newMin = floor($milisec / 60000);
      $milisec = $milisec - ($newMin * 60000);
      $newSec = floor($milisec / 1000);
      $milisec = $milisec - ($newSec * 1000);
      $newMili = $milisec;

      if (strlen($newSec) <= 1)
      {
         $newSec = "0".$newSec;
      }
      if (strlen($newMili) <= 1)
      {
         $newMili = "0".$newMili;
      }
      if (strlen($newMili) <= 2)
      {
         $newMili = "0".$newMili;
      }

      return $newMin .":". $newSec .",". $newMili;
   }

   //Zielankunft-Quote berechnen
   function ErmittleQuote($proz_quote)
   {
      $min_temp = substr($time_micro, 0, -3) / 60;

      $min = substr($min_temp, 0, 1);

      $sek = substr($time_micro, 0, -3) - ($min * 60);

      if (strlen($sek) <= 1)
      {
         $sek = "0".$sek;
      }

      $mili = substr($time_micro, -3);

      return $min .":". $sek .",". $mili;
   }


   //Befüllt das Array für das Ranking
   function SetRankingArray($xmlArr, $compId)
   {
      GLOBAL $nick;
      GLOBAL $playerData;
      GLOBAL $skiSettings;

      $zeit = ErmittleZeit($xmlArr->p1);

      $milisec = ErmittleZeitMili($xmlArr->p1);

      $position = $xmlArr->position;

      $km = 0;

      foreach ($playerData as $key => $row)
      {
         if (($row->competitionId == $compId) && ($row->specificId == KMID))
         {
            $km = $row->value / 1000;
            break;
         }
      }


      $start = 0;

      foreach ($playerData as $key => $row)
      {
         if (($row->competitionId == $compId) && ($row->specificId == STARTID))
         {
            $start = $row->value;
            break;
         }
      }

      $ziel = 0;

      foreach ($playerData as $key => $row)
      {
         if (($row->competitionId == $compId) && ($row->specificId == ZIELID))
         {
            $ziel = $row->value;
            break;
         }
      }

      $quote = $ziel *100 / $start;





      $ski = "";

      foreach ($skiSettings as $key => $row)
      {
         $row = explode(",", $row);
         if (($row[7] == $compId) && ($row[1] == $nick))
         {
            $ski = $row[3]."-".$row[4]."-".$row[5];
            break;
         }
      }

      if ($ski == "")
      {
         LoadSkiSettingsPlayer($nick);
         foreach ($skiSettings as $key => $row)
         {
            $row = explode(",", $row);
            if (($row[7] == $compId) && ($row[1] == $nick))
            {
               $ski = $row[3]."-".$row[4]."-".$row[5];
               break;
            }
         }
      }

      return array('Platz' =>$position,'Fahrer' =>$nick,'Zeit' =>$zeit,'Km' =>$km, 'Ziel' =>$ziel, 'Start' =>$start, 'Quote' =>$quote,'Mili' =>$milisec, 'Ski' =>$ski);
   }

   //Befüllt das Array für das Ranking (AllWeather)
   function SetRankingArrayAllWeather()
   {
      GLOBAL $nick;
      GLOBAL $playerData;
      GLOBAL $allWeatherMili;
      GLOBAL $competitionIdSun;
      GLOBAL $competitionIdSnow;
      GLOBAL $competitionIdIce;

      $zeit = ErmittleZeitAllWeather($allWeatherMili);

      $milisec = $allWeatherMili;

      $position = "";
      $ski = "";

      $km = 0;

      foreach ($playerData as $key => $row)
      {
         if ((($row->competitionId == $competitionIdSun)  && ($row->specificId == KMID)) ||
            (($row->competitionId == $competitionIdSnow) && ($row->specificId == KMID)) ||
            (($row->competitionId == $competitionIdIce)  && ($row->specificId == KMID)))
         {
            $km = $km + $row->value;
         }
      }

      if ($km > 0)
      {
         $km = $km / 1000;
      }


      return array('Platz' =>$position,'Fahrer' =>$nick,'Zeit' =>$zeit,'Km' =>$km,'Mili' =>$milisec, 'Ski' =>$ski);
   }

   //Baut die Ranking-Table auf
   function ErzeugeRanking($rankArray, $strecke, $bedingung)
   {
      if (count($rankArray) > 0)
      {
         echo "<br /><H3>".$strecke." - ".$bedingung."</H3>";

         foreach ($rankArray as $key => $row)
         {
            $platz[$key]  = $row['Platz'];
            $player[$key] = $row['Fahrer'];
            $zeit[$key]   = $row['Zeit'];
            $mili[$key]   = $row['Mili'];
            $km[$key]     = $row['Km'];
            $start[$key]  = $row['Start'];
            $ziel[$key]  = $row['Ziel'];
            $quote[$key]    = $row['Quote'];
            $ski[$key]    = $row['Ski'];
         }

         if ($bedingung <> ALL)
         {
            array_multisort($platz, SORT_NUMERIC, $rankArray);
         }
         else
         {
            array_multisort($mili, SORT_NUMERIC, $rankArray);
         }

         echo "<table border='0'>";
         echo "<colgroup>";
         echo "<col width='30'>";
         echo "<col width='10'>";
         if ($bedingung <> ALL)
         {
            echo "<col width='60'>";
            echo "<col width='10'>";
         }
         echo "<col width='110'>";
         echo "<col width='10'>";
         echo "<col width='60'>";
         echo "<col width='10'>";
         echo "<col width='80'>";
         echo "<col width='10'>";
         echo "<col width='80'>";
         echo "<col width='10'>";
         echo "<col width='60'>";
         if ($bedingung <> ALL)
         {
            echo "<col width='10'>";
            echo "<col width='70'>";
         }
         echo "</colgroup>";
         echo "<tr>";

         echo "<th style='text-align: center;'>Pos</th>";
         echo "<th style='text-align: center;'>  </th>";
         if ($bedingung <> ALL)
         {
            if ($bedingung == RACE)
            {
               echo "<th style='text-align: center;'>Rennen</th>";
            }
            else
            {
               echo "<th style='text-align: center;'>Quali</th>";
            }
            echo "<th style='text-align: center;'>  </th>";
         }
         echo "<th style='text-align: center;'>Athlet</th>";
         echo "<th style='text-align: center;'>  </th>";
         echo "<th style='text-align: center;'>Zeit</th>";
         echo "<th style='text-align: center;'>  </th>";
         echo "<th style='text-align: center;'>Diff</th>";
         echo "<th style='text-align: center;'>  </th>";
         echo "<th style='text-align: center;'>Diff 1.</th>";
         echo "<th style='text-align: center;'>  </th>";
         echo "<th style='text-align: center;'>Km</th>";

         if ($bedingung <> ALL)
         {
            echo "<th style='text-align: center;'>  </th>";
            echo "<th style='text-align: center;'>Starts</th>";
            echo "<th style='text-align: center;'>  </th>";
            echo "<th style='text-align: center;'>im Ziel</th>";
            echo "<th style='text-align: center;'>  </th>";
            echo "<th style='text-align: center;'>im Ziel in %</th>";
            echo "<th style='text-align: center;'>  </th>";
            echo "<th style='text-align: center;'>Ski</th>";
         }
         echo "</tr>";

         $index = 1;
         $helpMili = 0;
         $helpMiliFirst = 0;
         $newDiff = "";
         $newDiffGesamt = "";

         foreach ($rankArray as $key => $row)
         {
            if ($index == 1)
            {
               $helpMiliFirst = $row['Mili'];
            }
            if ($index > 1)
            {
               $newDiff = ErmittleDiff($helpMili, $row['Mili']);
               $newDiffGesamt = ErmittleDiff($helpMiliFirst, $row['Mili']);
            }
            $helpMili = $row['Mili'];

            echo "<tr>";
            echo "<td style='text-align: right;'>$index</td>";
            echo "<td style='text-align: center;'>  </td>";
            if ($bedingung <> ALL)
            {
               echo "<td style='text-align: right;'>".$row['Platz']."</td>";
               echo "<td style='text-align: center;'>  </td>";
            }
            echo "<td style='text-align: left;'>".$row['Fahrer']."</td>";
            echo "<td style='text-align: center;'>  </td>";
            echo "<td style='text-align: right;'>".$row['Zeit']."</td>";
            echo "<td style='text-align: center;'>  </td>";
            echo "<td style='text-align: right;'>".$newDiff."</td>";
            echo "<td style='text-align: center;'>  </td>";
            echo "<td style='text-align: right;'>".$newDiffGesamt."</td>";
            echo "<td style='text-align: center;'>  </td>";
            echo "<td style='text-align: right;'>".number_format($row['Km'], '2', ',', '.')."</td>";
            if ($bedingung <> ALL)
            {
               echo "<td style='text-align: center;'>  </td>";
               echo "<td style='text-align: center;'>".$row['Start']."</td>";
               echo "<td style='text-align: center;'>  </td>";
               echo "<td style='text-align: center;'>".$row['Ziel']."</td>";
               echo "<td style='text-align: center;'>  </td>";
               echo "<td style='text-align: center;'>".number_format($row['Quote'], '2', ',', '.')."</td>";
               echo "<td style='text-align: center;'>  </td>";
               echo "<td style='text-align: right;'>".$row['Ski']."</td>";
            }
            echo "</tr>";
            $index++;
         }
         echo "</table>";
      }
   }

   function ErzeugeKonstanten()
   {
      //---------------------------------------------------------------
      //Konstanten für die einzelnen Strecken und Bedingungen (Desktop)
      //---------------------------------------------------------------

      //----BEAVER CREEK----
      define('BEAVER_SUN',  880);
      define('BEAVER_SNOW', 881);
      define('BEAVER_ICE',  882);
      define('BEAVER_RACE', 883);
      //Minimodes
      define('BEAVER_FREE',    884);
      define('BEAVER_BLACK',   885);
      define('BEAVER_ATTACK',  886);
      define('BEAVER_LAST',    887);
      define('BEAVER_ARCADE',  888);
      define('BEAVER_EXTREME', 889);

      //----GRÖDEN----
      define('GROEDEN_SUN',  895);
      define('GROEDEN_SNOW', 896);
      define('GROEDEN_ICE',  897);
      define('GROEDEN_RACE', 898);
      //Minimodes
      define('GROEDEN_FREE',    899);
      define('GROEDEN_BLACK',   900);
      define('GROEDEN_ATTACK',  901);
      define('GROEDEN_LAST',    902);
      define('GROEDEN_ARCADE',  903);
      define('GROEDEN_EXTREME', 904);

      //----BORMIO----
      define('BORMIO_SUN',  910);
      define('BORMIO_SNOW', 911);
      define('BORMIO_ICE',  912);
      define('BORMIO_RACE', 913);
      //Minimodes
      define('BORMIO_FREE',    914);
      define('BORMIO_BLACK',   915);
      define('BORMIO_ATTACK',  916);
      define('BORMIO_LAST',    917);
      define('BORMIO_ARCADE',  918);
      define('BORMIO_EXTREME', 919);

      //----WENGEN----
      define('WENGEN_SUN',  920);
      define('WENGEN_SNOW', 921);
      define('WENGEN_ICE',  922);
      define('WENGEN_RACE', 923);
      //Minimodes
      define('WENGEN_FREE',    924);
      define('WENGEN_BLACK',   925);
      define('WENGEN_ATTACK',  926);
      define('WENGEN_LAST',    927);
      define('WENGEN_ARCADE',  928);
      define('WENGEN_EXTREME', 929);

      //----KITZBÜHEL----
      define('KITZ_SUN',  930);
      define('KITZ_SNOW', 931);
      define('KITZ_ICE',  932);
      define('KITZ_RACE', 933);
      //Minimodes
      define('KITZ_FREE',    934);
      define('KITZ_BLACK',   935);
      define('KITZ_ATTACK',  936);
      define('KITZ_LAST',    937);
      define('KITZ_ARCADE',  938);
      define('KITZ_EXTREME', 939);

      //----BEAVER CREEK CS----
      define('BEAVER_CS_SUN',  940);
      define('BEAVER_CS_SNOW', 941);
      define('BEAVER_CS_ICE',  942);
      define('BEAVER_CS_RACE', 943);

      //----GARMISCH----
      define('GARMISCH_SUN',  944);
      define('GARMISCH_SNOW', 946);
      define('GARMISCH_ICE',  947);
      define('GARMISCH_RACE', 948);
      //Minimodes
      define('GARMISCH_FREE',    949);
      define('GARMISCH_BLACK',   950);
      define('GARMISCH_ATTACK',  951);
      define('GARMISCH_LAST',    952);
      define('GARMISCH_ARCADE',  953);
      define('GARMISCH_EXTREME', 954);

      //----SCHLADMING---- ?!
      define('SCHLADMING_SUN',  972);
      define('SCHLADMING_SNOW', 973);
      define('SCHLADMING_ICE',  974);
      define('SCHLADMING_RACE', 975);
      //Minimodes
      define('SCHLADMING_FREE',    976);
      define('SCHLADMING_BLACK',   977);
      define('SCHLADMING_ATTACK',  978);
      define('SCHLADMING_LAST',    979);
      define('SCHLADMING_ARCADE',  980);
      define('SCHLADMING_EXTREME', 981);

      //----MÜNCHEN----
      define('MUENCHEN_Q', 945);

      //--------------------------------------------------------------
      //Konstanten für die einzelnen Strecken und Bedingungen (Mobile)  !!!!! NICHT AKTUELL !!!!!!
      //--------------------------------------------------------------

      //----BEAVER CREEK----
      define('BEAVER_SUN_MOB',  683);
      define('BEAVER_SNOW_MOB', 684);
      define('BEAVER_ICE_MOB',  685);
      define('BEAVER_RACE_MOB', 686);
      //Freeride
      define('BEAVER_FREE_MOB', 753);

      //----GRÖDEN----
      define('GROEDEN_SUN_MOB',  687);
      define('GROEDEN_SNOW_MOB', 688);
      define('GROEDEN_ICE_MOB',  689);
      define('GROEDEN_RACE_MOB', 690);
      //Freeride
      define('GROEDEN_FREE_MOB', 754);

      //----BORMIO----
      define('BORMIO_SUN_MOB',  691);
      define('BORMIO_SNOW_MOB', 692);
      define('BORMIO_ICE_MOB',  693);
      define('BORMIO_RACE_MOB', 694);
      //Freeride
      define('BORMIO_FREE_MOB', 755);

      //----WENGEN----
      define('WENGEN_SUN_MOB',  695);
      define('WENGEN_SNOW_MOB', 696);
      define('WENGEN_ICE_MOB',  697);
      define('WENGEN_RACE_MOB', 698);
      //Freeride
      define('WENGEN_FREE_MOB', 756);

      //----KITZBÜHEL----
      define('KITZ_SUN_MOB',  699);
      define('KITZ_SNOW_MOB', 700);
      define('KITZ_ICE_MOB',  701);
      define('KITZ_RACE_MOB', 702);
      //Freeride
      define('KITZ_FREE_MOB', 757);

      //----GARMISCH----
      define('GARMISCH_SUN_MOB',  703);
      define('GARMISCH_SNOW_MOB', 704);
      define('GARMISCH_ICE_MOB',  705);
      define('GARMISCH_RACE_MOB', 706);
      //Freeride
      define('GARMISCH_FREE_MOB', 758);

      //----SOTSCHI----
      define('SOTSCHI_SUN_MOB',  707);
      define('SOTSCHI_SNOW_MOB', 708);
      define('SOTSCHI_ICE_MOB',  709);
      define('SOTSCHI_RACE_MOB', 710);
      //Freeride
      define('SOTSCHI_FREE_MOB', 759);

      //----VAL'D ISERE----
      define('VALDI_SUN_MOB',  760);
      define('VALDI_SNOW_MOB', 761);
      define('VALDI_ICE_MOB',  762);
      //Freeride
      define('VALDI_FREE_MOB', 763);

      //----SCHLADMING----
      define('SCHLADMING_SUN_MOB',  764);
      define('SCHLADMING_SNOW_MOB', 765);
      define('SCHLADMING_ICE_MOB',  766);
      //Freeride
      define('SCHLADMING_FREE_MOB', 767);

      //----BEAVER CREEK SG----
      define('BEAVER_SG_SUN_MOB',  768);
      define('BEAVER_SG_SNOW_MOB', 769);
      define('BEAVER_SG_ICE_MOB',  770);
      //Freeride
      define('BEAVER_SG_FREE_MOB', 771);

      //-------------------------------------------
      //Konstanten für die einzelnen Streckennamen
      //-------------------------------------------
      define('BEAVER',     'Beaver Creek');
      define('GROEDEN',    'Gröden');
      define('BORMIO',     'Bormio');
      define('WENGEN',     'Wengen');
      define('KITZ',       'Kitzbühel');
      define('GARMISCH',   'Garmisch');
      define('SCHLADMING', 'Schladming');
      define('MUENCHEN',   'München');
      define('VALDI',      'Val\'d Isere');
      define('SOCHI',      'Sochi');
      define('BEAVER_SG',  'Beaver Creek SG');
      define('BEAVER_CS',  'Beaver Creek CS');

      //-----------------------------------------
      //Konstanten für die einzelnen Bedingungen
      //-----------------------------------------
      define('SUN',     'Sonne');
      define('SNOW',    'Schnee');
      define('ICE',     'Eis');
      define('RACE',    'Rennen');
      define('PS',      'Parallelslalom');
      define('ALL',     'All-Weather');
      define('FREE',    'Freeride');
      define('BLACK',   'Blitzeis');
      define('ATTACK',  'Zeitbombe');
      define('LAST',    'Letzte Talfahrt');
      define('ARCADE',  'Arcade');
      define('EXTREME', 'Extrem');

      //------------------------------------------
      //Konstanten für die verschiedene Versionen
      //------------------------------------------
      define('DESKTOP', 1737);
      define('MOBILE',  1738);

      //Konstante als Hilfe zum Auslesen der Kilometer, Stürze, ...
      define('ZEITID', 12);
      define('KMID', 13);
      define('STARTID', 14);
      define('ZIELID', 15);
      define('SPRUNGID', 22);
      define('KMHID', 24);
      define('STURZID', 25);
   }
?>


fals ich das umständlich umgesetzt habt, verzeiht mir, den ich bin absoluter neuling in sachen php und bin eigentlich jetzt schon stolz, dass ich das überhaupt hingekriegt habe.

_________________


BildSC:BannerBild

SC:Banner

Platzierungen in der Vergangenheit:
Bild


Nach oben
 Profil  
Mit Zitat antworten  
Für diesen Beitrag haben sich bei filu84 folgende User bedankt:
Sandreas, TheOtherTom
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Mi Dez 31, 2014 10:44:37 
Val d'ium
Val d'ium
Benutzeravatar
Offline

Registriert: So Dez 24, 2006 09:46:42
Beiträge: 905
Wohnort: Wien
Geschlecht: Männlich
Alter: 47
SC-Nickname: MikeTiger
Nationencup: Team Vatikan
Flagge:
Ziel: Ich spiele nicht
OS: Windows 10
Danke gegeben: 155
Danke bekommen: 57
 
@filu84

Ich kenne mich leider überhaupt nicht mit der Programmiererei aus, aber soweit komme ich noch ...

Ich rufe das script LOKAL auf meinem Rechner aus,
daher kann es leicht möglich sein, daß hier vorgenommene Änderungen NICHT zwangsweise auf Servern auch gemacht werden müssen

Punkt 1:
Die Namen MÜSSEN unter ' gestellt werden
Filu84 = 'Filu84','....

Punkt 2:
Wenn man mich fragt (und das tut normal KEINER :lol: ) ist als Sturz zu werten, wenn ich Starte und nicht ins Ziel komme

daher folgt: $sturz = $start - $ziel;

Punkt 3:
Habe 2x das "ü" durch -> "&uuml;" ersetzt (bei Stürze und bei München)

Punkt 4:
Damit Lokal KEINE "Notizen" angezeigt werden, was sie bei Deiner All Weather Auflistung tun, habe ich Zeile 8 eingebaut

Ich habe das mal in Dein gepostetes Script eingebaut ...
Code:
<!-- Header des Teams -->
<h1>Team Hungary Live-Ranking</h1>
<H2 style="font-size: 24px; vertical-align: middle";><img src="http://www.guuuru.at/sc14/bilder/banner-hungary.gif" width="415" height="90" border="1" alt="Hungary" /></H2>
<?php
   // Fehlermeldungen/Warnungen ausgeben
   //error_reporting(E_ALL);
   //ini_set('display_errors', '1');
   error_reporting(E_ALL ^  E_NOTICE);

   ErzeugeKonstanten();

   $nick = "";
   $playerData = "";
   $allWeatherMili = "";
   $skiSettings = array();

   // Für jede Art von Rennen ein Array
   $rankingSun  = array();
   $rankingSnow = array();
   $rankingIce  = array();
   $rankingRace = array();
   $rankingPS   = array();
   $rankingAll  = array();

   // Nicknamen der Fahrer die aufgelistet werden sollen
   $nicks = array('guuuru1956','Filu84','Altvehikel','Krautinger','maxi1270','projekt32','Philipp369','Ace2807','martin6910','mfyrle','Bluefox85','tozoo','HerrNorbert','lupo65','jetskiracer1','fubsi865');

   // Die ID der einzelnen Rennen für das Ranking setzen
   $competitionIdSun  = WENGEN_SUN;
   $competitionIdSnow = WENGEN_SNOW;
   $competitionIdIce  = WENGEN_ICE;
   $competitionIdRace = WENGEN_RACE;
   $competitionIdPS   = MUENCHEN_Q;

   // Sollen Ski-Einstellungen geladen werden?
   $SkiEinstellungLaden = FALSE;

   // Lädt die Skieinstellungen
   LoadSkiSettings();

   // Lädt die Spielerprofile und befüllt die Rankings
   LoadRankings(DESKTOP);

   // Die Rankings die angezeigt werden sollen
   ErzeugeRanking($rankingRace, WENGEN,   RACE);
   ErzeugeRanking($rankingSun,  WENGEN,   SUN);
   ErzeugeRanking($rankingSnow, WENGEN,   SNOW);
   ErzeugeRanking($rankingIce,  WENGEN,   ICE);
   ErzeugeRanking($rankingAll,  WENGEN,   ALL);
   ErzeugeRanking($rankingPS,   MUENCHEN, PS);

   //-------------------------------
   // Hilfsmethoden
   //-------------------------------

   //Lade die Skieinstellungen
   function LoadSkiSettings()
   {
      GLOBAL $SkiEinstellungLaden;

      if($SkiEinstellungLaden)
      {
         GLOBAL $nicks;
         GLOBAL $nick;
         GLOBAL $skiSettings;

         GLOBAL $competitionIdSun;
         GLOBAL $competitionIdSnow;
         GLOBAL $competitionIdIce;
         GLOBAL $competitionIdRace;
         GLOBAL $competitionIdPS;

         foreach ($nicks as $nick)
         {

            // Skieinstellungen der Spieler abrufen
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdSun.'&name='.urlencode($nick));
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdSnow.'&name='.urlencode($nick));
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdIce.'&name='.urlencode($nick));
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdRace.'&name='.urlencode($nick));
            $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdPS.'&name='.urlencode($nick));
         }

         $curl_Rudi = array();

         // erzeuge einen neuen cURL-Multi-Handle
         $curl_multi_handle_Rudi = curl_multi_init();

         for($i = 0; $i < count($urls_Rudi); $i++)
         {
            $url_Rudi = $urls_Rudi[$i];

            // erzeuge einen neuen cURL-Handle
            $curl_Rudi[$i] = curl_init($url_Rudi);
            curl_setopt($curl_Rudi[$i], CURLOPT_RETURNTRANSFER, TRUE);
            curl_multi_add_handle($curl_multi_handle_Rudi, $curl_Rudi[$i]);
         }
         do
         {
            curl_multi_exec($curl_multi_handle_Rudi, $running_Rudi);
         } while($running_Rudi > 0) ;

         for($i = 0; $i < count($urls_Rudi); $i++)
         {
            $result_Rudi = curl_multi_getcontent($curl_Rudi[$i]);
            preg_match("/\[.*\]/", $result_Rudi, $helpSki);
            $helpSki = str_replace("[", "", $helpSki);
            $helpSki = str_replace("]", "", $helpSki);
            $helpSki = str_replace("\"", "", $helpSki);
            if ((count($helpSki) > 0) && (strlen($helpSki[0] >= 1)))
            {
               $skiSettings[] = $helpSki[0];
            }
         }
      }
   }

   // Lädt die Skieinstellungen für einen Fahrer (wenn kein Request von Rudi kommt)
   function LoadSkiSettingsPlayer($player)
   {
      GLOBAL $SkiEinstellungLaden;

      if($SkiEinstellungLaden)
      {
         GLOBAL $skiSettings;

         GLOBAL $competitionIdSun;
         GLOBAL $competitionIdSnow;
         GLOBAL $competitionIdIce;
         GLOBAL $competitionIdRace;
         GLOBAL $competitionIdPS;

         // Skieinstellungen der Spieler abrufen
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdSun.'&name='.urlencode($player));
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdSnow.'&name='.urlencode($player));
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdIce.'&name='.urlencode($player));
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdRace.'&name='.urlencode($player));
         $urls_Rudi[] = sprintf('http://www.skirudi.info/search.php?tournamentid='.$competitionIdPS.'&name='.urlencode($player));

         $curl_Rudi = array();

         // erzeuge einen neuen cURL-Multi-Handle
         $curl_multi_handle_Rudi = curl_multi_init();

         for($i = 0; $i < count($urls_Rudi); $i++)
         {
            $url_Rudi = $urls_Rudi[$i];

            // erzeuge einen neuen cURL-Handle
            $curl_Rudi[$i] = curl_init($url_Rudi);
            curl_setopt($curl_Rudi[$i], CURLOPT_RETURNTRANSFER, TRUE);
            curl_multi_add_handle($curl_multi_handle_Rudi, $curl_Rudi[$i]);
         }
         do
         {
            curl_multi_exec($curl_multi_handle_Rudi, $running_Rudi);
         } while($running_Rudi > 0) ;

         for($i = 0; $i < count($urls_Rudi); $i++)
         {
            $result_Rudi = curl_multi_getcontent($curl_Rudi[$i]);
            preg_match("/\[.*\]/", $result_Rudi, $helpSki);
            $helpSki = str_replace("[", "", $helpSki);
            $helpSki = str_replace("]", "", $helpSki);
            $helpSki = str_replace("\"", "", $helpSki);
            if ((count($helpSki) > 0) && (strlen($helpSki[0] >= 1)))
            {
               $skiSettings[] = $helpSki[0];
            }
         }
         curl_multi_close($curl_multi_handle_Rudi);
      }
   }

   //Befüllt die Rankings
   function LoadRankings($gameId)
   {
      GLOBAL $nicks;
      GLOBAL $nick;
      GLOBAL $playerData;
      GLOBAL $allWeatherMili;

      GLOBAL $rankingSun;
      GLOBAL $rankingSnow;
      GLOBAL $rankingIce;
      GLOBAL $rankingRace;
      GLOBAL $rankingPS;
      GLOBAL $rankingAll;

      GLOBAL $competitionIdSun;
      GLOBAL $competitionIdSnow;
      GLOBAL $competitionIdIce;
      GLOBAL $competitionIdRace;
      GLOBAL $competitionIdPS;

      $url = sprintf('https://www.ski-challenge.com/gm-proxy.php');

      $curl_array = array();

      // erzeuge einen neuen cURL-Multi-Handle
      $curl_multi_handle = curl_multi_init();

      for($i = 0; $i < count($nicks); $i++)
      {
         // erzeuge einen neuen cURL-Handle
         $curl_array[$i] = curl_init($url);

         //Settings
         curl_setopt($curl_array[$i], CURLOPT_ENCODING, "deflate, gzip");
         curl_setopt($curl_array[$i], CURLOPT_POST, 1);
         curl_setopt($curl_array[$i], CURLOPT_POSTFIELDS, 'service=1&function=GetPlayerProfileByNick&gameId='.$gameId.'&nick='.urlencode($nicks[$i]));
         curl_setopt($curl_array[$i], CURLOPT_HTTPHEADER, array(
         "Accept: */*",
         "Accept-Language: de-DE,de,q=0.5",
         "Host: www.ski-challenge.com",
         "User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)",
         "X-Requested-With: XMLHttpRequest",
         ));
         curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, TRUE);

         curl_setopt($curl_array[$i], CURLOPT_SSL_VERIFYHOST, 0);
         curl_setopt($curl_array[$i], CURLOPT_SSL_VERIFYPEER, 0);

         curl_multi_add_handle($curl_multi_handle, $curl_array[$i]);
      }
      do
      {
         curl_multi_exec($curl_multi_handle, $running);
      } while($running > 0);

      for($i = 0; $i < count($nicks); $i++)
      {
         $result = curl_multi_getcontent($curl_array[$i]);

         // führe die Aktion aus und gebe die Daten an den Browser weiter
         $xml = new SimpleXMLElement($result);

         //print_r($xml); //Gibt das gesamte Ergebnis als XML-Element aus

         $nick = $xml->playerDetails->nick;

         $playerData = $xml->playerSpecifics->SpecificData;

         $allWeatherMili = 0;
         $counterAllWeather = 0;

         // Durchsuche alle gefahrenen Zeiten des Spielers
         foreach ($xml->playerRankings->Ranking as $key => $row)
         {
            //Je nach Rennen (Strecke, Bedingung) ein anderes Array befüllen
            if ($row->competitionId == $competitionIdSun)
            {
               $rankingSun[]   = SetRankingArray($row, $competitionIdSun);
               $allWeatherMili = $allWeatherMili + ErmittleZeitMili($row->p1);
               $counterAllWeather++;
            }
            elseif ($row->competitionId == $competitionIdSnow)
            {
               $rankingSnow[]  = SetRankingArray($row, $competitionIdSnow);
               $allWeatherMili = $allWeatherMili + ErmittleZeitMili($row->p1);
               $counterAllWeather++;
            }
            elseif ($row->competitionId == $competitionIdIce)
            {
               $rankingIce[]   = SetRankingArray($row, $competitionIdIce);
               $allWeatherMili = $allWeatherMili + ErmittleZeitMili($row->p1);
               $counterAllWeather++;
            }
            elseif ($row->competitionId == $competitionIdRace)
            {
               $rankingRace[] = SetRankingArray($row, $competitionIdRace);
            }
            elseif ($row->competitionId == $competitionIdPS)
            {
               $rankingPS[] = SetRankingArray($row, $competitionIdPS);
            }
         }

         //Nur Fahrer hinzufügen die bei allen Bedingungen gefahren sind
         if ($counterAllWeather == 3)
         {
            $rankingAll[] = SetRankingArrayAllWeather();
         }
      }
   }

   //Zeit ermitteln; Format(0:00,000)
   function ErmittleZeit($time_micro)
   {
      $min_temp = substr($time_micro, 0, -3) / 60;

      $min = substr($min_temp, 0, 1);

      $sek = substr($time_micro, 0, -3) - ($min * 60);

      if (strlen($sek) <= 1)
      {
         $sek = "0".$sek;
      }

      $mili = substr($time_micro, -3);

      return $min .":". $sek .",". $mili;
   }

   //Differenz zwischen 2 Zeiten ermitteln
   function ErmittleDiff($timeVorher, $timeNachher)
   {
      $helpDiff = $timeNachher - $timeVorher;
      $newMin = floor($helpDiff / 60000);
      $helpDiff = $helpDiff - ($newMin * 60000);
      $newSec = floor($helpDiff / 1000);
      $helpDiff = $helpDiff - ($newSec * 1000);
      $newMili = $helpDiff;

      if (strlen($newSec) <= 1)
      {
         $newSec = "0".$newSec;
      }
      if (strlen($newMili) <= 1)
      {
         $newMili = "0".$newMili;
      }
      if (strlen($newMili) <= 2)
      {
         $newMili = "0".$newMili;
      }

      return "+ ". $newMin .":". $newSec .",". $newMili;
   }

   //Zeit in Millisekunden ermitteln
   function ErmittleZeitMili($time_micro)
   {
      $min_temp = substr($time_micro, 0, -3) / 60;

      $min = substr($min_temp, 0, 1);

      $sek = substr($time_micro, 0, -3) - ($min * 60);

      if (strlen($sek) <= 1)
      {
         $sek = "0".$sek;
      }

      $mili = substr($time_micro, -3);

      return ($min * 60000) + ($sek * 1000) + $mili;
   }

   //Zeit für die All-Weather-Wertung berechnen
   function ErmittleZeitAllWeather($milisec)
   {
      $newMin = floor($milisec / 60000);
      $milisec = $milisec - ($newMin * 60000);
      $newSec = floor($milisec / 1000);
      $milisec = $milisec - ($newSec * 1000);
      $newMili = $milisec;

      if (strlen($newSec) <= 1)
      {
         $newSec = "0".$newSec;
      }
      if (strlen($newMili) <= 1)
      {
         $newMili = "0".$newMili;
      }
      if (strlen($newMili) <= 2)
      {
         $newMili = "0".$newMili;
      }

      return $newMin .":". $newSec .",". $newMili;
   }

   //Zielankunft-Quote berechnen
   function ErmittleQuote($proz_quote)
   {
      $min_temp = substr($time_micro, 0, -3) / 60;

      $min = substr($min_temp, 0, 1);

      $sek = substr($time_micro, 0, -3) - ($min * 60);

      if (strlen($sek) <= 1)
      {
         $sek = "0".$sek;
      }

      $mili = substr($time_micro, -3);

      return $min .":". $sek .",". $mili;
   }


   //Befüllt das Array für das Ranking
   function SetRankingArray($xmlArr, $compId)
   {
      GLOBAL $nick;
      GLOBAL $playerData;
      GLOBAL $skiSettings;

      $zeit = ErmittleZeit($xmlArr->p1);

      $milisec = ErmittleZeitMili($xmlArr->p1);

      $position = $xmlArr->position;

      $km = 0;

      foreach ($playerData as $key => $row)
      {
         if (($row->competitionId == $compId) && ($row->specificId == KMID))
         {
            $km = $row->value / 1000;
            break;
         }
      }


      $start = 0;

      foreach ($playerData as $key => $row)
      {
         if (($row->competitionId == $compId) && ($row->specificId == STARTID))
         {
            $start = $row->value;
            break;
         }
      }

      $ziel = 0;

      foreach ($playerData as $key => $row)
      {
         if (($row->competitionId == $compId) && ($row->specificId == ZIELID))
         {
            $ziel = $row->value;
            break;
         }
      }

      $quote = $ziel *100 / $start;

      $sturz = $start - $ziel;

      $ski = "";

      foreach ($skiSettings as $key => $row)
      {
         $row = explode(",", $row);
         if (($row[7] == $compId) && ($row[1] == $nick))
         {
            $ski = $row[3]."-".$row[4]."-".$row[5];
            break;
         }
      }

      if ($ski == "")
      {
         LoadSkiSettingsPlayer($nick);
         foreach ($skiSettings as $key => $row)
         {
            $row = explode(",", $row);
            if (($row[7] == $compId) && ($row[1] == $nick))
            {
               $ski = $row[3]."-".$row[4]."-".$row[5];
               break;
            }
         }
      }

      return array('Platz' =>$position,'Fahrer' =>$nick,'Zeit' =>$zeit,'Km' =>$km, 'Ziel' =>$ziel, 'Start' =>$start, 'Sturz' =>$sturz, 'Quote' =>$quote,'Mili' =>$milisec, 'Ski' =>$ski);
   }

   //Befüllt das Array für das Ranking (AllWeather)
   function SetRankingArrayAllWeather()
   {
      GLOBAL $nick;
      GLOBAL $playerData;
      GLOBAL $allWeatherMili;
      GLOBAL $competitionIdSun;
      GLOBAL $competitionIdSnow;
      GLOBAL $competitionIdIce;

      $zeit = ErmittleZeitAllWeather($allWeatherMili);

      $milisec = $allWeatherMili;

      $position = "";
      $ski = "";

      $km = 0;

      foreach ($playerData as $key => $row)
      {
         if ((($row->competitionId == $competitionIdSun)  && ($row->specificId == KMID)) ||
            (($row->competitionId == $competitionIdSnow) && ($row->specificId == KMID)) ||
            (($row->competitionId == $competitionIdIce)  && ($row->specificId == KMID)))
         {
            $km = $km + $row->value;
         }
      }

      if ($km > 0)
      {
         $km = $km / 1000;
      }


      return array('Platz' =>$position,'Fahrer' =>$nick,'Zeit' =>$zeit,'Km' =>$km,'Mili' =>$milisec, 'Ski' =>$ski);
   }

   //Baut die Ranking-Table auf
   function ErzeugeRanking($rankArray, $strecke, $bedingung)
   {
      if (count($rankArray) > 0)
      {
         echo "<br /><H3>".$strecke." - ".$bedingung."</H3>";

         foreach ($rankArray as $key => $row)
         {
            $platz[$key]  = $row['Platz'];
            $player[$key] = $row['Fahrer'];
            $zeit[$key]   = $row['Zeit'];
            $mili[$key]   = $row['Mili'];
            $km[$key]     = $row['Km'];
            $start[$key]  = $row['Start'];
            $ziel[$key]   = $row['Ziel'];
            $sturz[$key]  = $row['Sturz'];
            $quote[$key]  = $row['Quote'];
            $ski[$key]    = $row['Ski'];
         }

         if ($bedingung <> ALL)
         {
            array_multisort($platz, SORT_NUMERIC, $rankArray);
         }
         else
         {
            array_multisort($mili, SORT_NUMERIC, $rankArray);
         }

         echo "<table border='0'>";
         echo "<colgroup>";
         echo "<col width='30'>";
         echo "<col width='10'>";
         if ($bedingung <> ALL)
         {
            echo "<col width='60'>";
            echo "<col width='10'>";
         }
         echo "<col width='110'>";
         echo "<col width='10'>";
         echo "<col width='60'>";
         echo "<col width='10'>";
         echo "<col width='80'>";
         echo "<col width='10'>";
         echo "<col width='80'>";
         echo "<col width='10'>";
         echo "<col width='80'>";
         echo "<col width='10'>";
         echo "<col width='60'>";
         if ($bedingung <> ALL)
         {
            echo "<col width='10'>";
            echo "<col width='70'>";
         }
         echo "</colgroup>";
         echo "<tr>";

         echo "<th style='text-align: center;'>Pos</th>";
         echo "<th style='text-align: center;'>  </th>";
         if ($bedingung <> ALL)
         {
            if ($bedingung == RACE)
            {
               echo "<th style='text-align: center;'>Rennen</th>";
            }
            else
            {
               echo "<th style='text-align: center;'>Quali</th>";
            }
            echo "<th style='text-align: center;'>  </th>";
         }
         echo "<th style='text-align: center;'>Athlet</th>";
         echo "<th style='text-align: center;'>  </th>";
         echo "<th style='text-align: center;'>Zeit</th>";
         echo "<th style='text-align: center;'>  </th>";
         echo "<th style='text-align: center;'>Diff</th>";
         echo "<th style='text-align: center;'>  </th>";
         echo "<th style='text-align: center;'>Diff 1.</th>";
         echo "<th style='text-align: center;'>  </th>";
         echo "<th style='text-align: center;'>Km</th>";
         if ($bedingung <> ALL)
         {
            echo "<th style='text-align: center;'>  </th>";
            echo "<th style='text-align: center;'>Starts</th>";
            echo "<th style='text-align: center;'>  </th>";
            echo "<th style='text-align: center;'>im Ziel</th>";
            echo "<th style='text-align: center;'>  </th>";
            echo "<th style='text-align: center;'>St&uuml;rze</th>";
            echo "<th style='text-align: center;'>  </th>";
            echo "<th style='text-align: center;'>im Ziel (%)</th>";
            echo "<th style='text-align: center;'>  </th>";
            echo "<th style='text-align: center;'>Ski</th>";
         }
         echo "</tr>";

         $index = 1;
         $helpMili = 0;
         $helpMiliFirst = 0;
         $newDiff = "";
         $newDiffGesamt = "";

         foreach ($rankArray as $key => $row)
         {
            if ($index == 1)
            {
               $helpMiliFirst = $row['Mili'];
            }
            if ($index > 1)
            {
               $newDiff = ErmittleDiff($helpMili, $row['Mili']);
               $newDiffGesamt = ErmittleDiff($helpMiliFirst, $row['Mili']);
            }
            $helpMili = $row['Mili'];

            echo "<tr>";
            echo "<td style='text-align: right;'>$index</td>";
            echo "<td style='text-align: center;'>  </td>";
            if ($bedingung <> ALL)
            {
               echo "<td style='text-align: right;'>".$row['Platz']."</td>";
               echo "<td style='text-align: center;'>  </td>";
            }
            echo "<td style='text-align: left;'>".$row['Fahrer']."</td>";
            echo "<td style='text-align: center;'>  </td>";
            echo "<td style='text-align: right;'>".$row['Zeit']."</td>";
            echo "<td style='text-align: center;'>  </td>";
            echo "<td style='text-align: right;'>".$newDiff."</td>";
            echo "<td style='text-align: center;'>  </td>";
            echo "<td style='text-align: right;'>".$newDiffGesamt."</td>";
            echo "<td style='text-align: center;'>  </td>";
            echo "<td style='text-align: right;'>".number_format($row['Km'], '2', ',', '.')."</td>";
            if ($bedingung <> ALL)
            {
               echo "<td style='text-align: center;'>  </td>";
               echo "<td style='text-align: center;'>".$row['Start']."</td>";
               echo "<td style='text-align: center;'>  </td>";
               echo "<td style='text-align: center;'>".$row['Ziel']."</td>";
               echo "<td style='text-align: center;'>  </td>";
               echo "<td style='text-align: center;'>".$row['Sturz']."</td>";
               echo "<td style='text-align: center;'>  </td>";
               echo "<td style='text-align: center;'>".number_format($row['Quote'], '2', ',', '.')."</td>";
               echo "<td style='text-align: center;'>  </td>";
               echo "<td style='text-align: right;'>".$row['Ski']."</td>";
            }
            echo "</tr>";
            $index++;
         }
         echo "</table>";
      }
   }

   function ErzeugeKonstanten()
   {
      //---------------------------------------------------------------
      //Konstanten für die einzelnen Strecken und Bedingungen (Desktop)
      //---------------------------------------------------------------

      //----BEAVER CREEK----
      define('BEAVER_SUN',  880);
      define('BEAVER_SNOW', 881);
      define('BEAVER_ICE',  882);
      define('BEAVER_RACE', 883);
      //Minimodes
      define('BEAVER_FREE',    884);
      define('BEAVER_BLACK',   885);
      define('BEAVER_ATTACK',  886);
      define('BEAVER_LAST',    887);
      define('BEAVER_ARCADE',  888);
      define('BEAVER_EXTREME', 889);

      //----GRÖDEN----
      define('GROEDEN_SUN',  895);
      define('GROEDEN_SNOW', 896);
      define('GROEDEN_ICE',  897);
      define('GROEDEN_RACE', 898);
      //Minimodes
      define('GROEDEN_FREE',    899);
      define('GROEDEN_BLACK',   900);
      define('GROEDEN_ATTACK',  901);
      define('GROEDEN_LAST',    902);
      define('GROEDEN_ARCADE',  903);
      define('GROEDEN_EXTREME', 904);

      //----BORMIO----
      define('BORMIO_SUN',  910);
      define('BORMIO_SNOW', 911);
      define('BORMIO_ICE',  912);
      define('BORMIO_RACE', 913);
      //Minimodes
      define('BORMIO_FREE',    914);
      define('BORMIO_BLACK',   915);
      define('BORMIO_ATTACK',  916);
      define('BORMIO_LAST',    917);
      define('BORMIO_ARCADE',  918);
      define('BORMIO_EXTREME', 919);

      //----WENGEN----
      define('WENGEN_SUN',  920);
      define('WENGEN_SNOW', 921);
      define('WENGEN_ICE',  922);
      define('WENGEN_RACE', 923);
      //Minimodes
      define('WENGEN_FREE',    924);
      define('WENGEN_BLACK',   925);
      define('WENGEN_ATTACK',  926);
      define('WENGEN_LAST',    927);
      define('WENGEN_ARCADE',  928);
      define('WENGEN_EXTREME', 929);

      //----KITZBÜHEL----
      define('KITZ_SUN',  930);
      define('KITZ_SNOW', 931);
      define('KITZ_ICE',  932);
      define('KITZ_RACE', 933);
      //Minimodes
      define('KITZ_FREE',    934);
      define('KITZ_BLACK',   935);
      define('KITZ_ATTACK',  936);
      define('KITZ_LAST',    937);
      define('KITZ_ARCADE',  938);
      define('KITZ_EXTREME', 939);

      //----BEAVER CREEK CS----
      define('BEAVER_CS_SUN',  940);
      define('BEAVER_CS_SNOW', 941);
      define('BEAVER_CS_ICE',  942);
      define('BEAVER_CS_RACE', 943);

      //----GARMISCH----
      define('GARMISCH_SUN',  944);
      define('GARMISCH_SNOW', 946);
      define('GARMISCH_ICE',  947);
      define('GARMISCH_RACE', 948);
      //Minimodes
      define('GARMISCH_FREE',    949);
      define('GARMISCH_BLACK',   950);
      define('GARMISCH_ATTACK',  951);
      define('GARMISCH_LAST',    952);
      define('GARMISCH_ARCADE',  953);
      define('GARMISCH_EXTREME', 954);

      //----SCHLADMING---- ?!
      define('SCHLADMING_SUN',  972);
      define('SCHLADMING_SNOW', 973);
      define('SCHLADMING_ICE',  974);
      define('SCHLADMING_RACE', 975);
      //Minimodes
      define('SCHLADMING_FREE',    976);
      define('SCHLADMING_BLACK',   977);
      define('SCHLADMING_ATTACK',  978);
      define('SCHLADMING_LAST',    979);
      define('SCHLADMING_ARCADE',  980);
      define('SCHLADMING_EXTREME', 981);

      //----MÜNCHEN----
      define('MUENCHEN_Q', 945);

      //--------------------------------------------------------------
      //Konstanten für die einzelnen Strecken und Bedingungen (Mobile)  !!!!! NICHT AKTUELL !!!!!!
      //--------------------------------------------------------------

      //----BEAVER CREEK----
      define('BEAVER_SUN_MOB',  683);
      define('BEAVER_SNOW_MOB', 684);
      define('BEAVER_ICE_MOB',  685);
      define('BEAVER_RACE_MOB', 686);
      //Freeride
      define('BEAVER_FREE_MOB', 753);

      //----GRÖDEN----
      define('GROEDEN_SUN_MOB',  687);
      define('GROEDEN_SNOW_MOB', 688);
      define('GROEDEN_ICE_MOB',  689);
      define('GROEDEN_RACE_MOB', 690);
      //Freeride
      define('GROEDEN_FREE_MOB', 754);

      //----BORMIO----
      define('BORMIO_SUN_MOB',  691);
      define('BORMIO_SNOW_MOB', 692);
      define('BORMIO_ICE_MOB',  693);
      define('BORMIO_RACE_MOB', 694);
      //Freeride
      define('BORMIO_FREE_MOB', 755);

      //----WENGEN----
      define('WENGEN_SUN_MOB',  695);
      define('WENGEN_SNOW_MOB', 696);
      define('WENGEN_ICE_MOB',  697);
      define('WENGEN_RACE_MOB', 698);
      //Freeride
      define('WENGEN_FREE_MOB', 756);

      //----KITZBÜHEL----
      define('KITZ_SUN_MOB',  699);
      define('KITZ_SNOW_MOB', 700);
      define('KITZ_ICE_MOB',  701);
      define('KITZ_RACE_MOB', 702);
      //Freeride
      define('KITZ_FREE_MOB', 757);

      //----GARMISCH----
      define('GARMISCH_SUN_MOB',  703);
      define('GARMISCH_SNOW_MOB', 704);
      define('GARMISCH_ICE_MOB',  705);
      define('GARMISCH_RACE_MOB', 706);
      //Freeride
      define('GARMISCH_FREE_MOB', 758);

      //----SOTSCHI----
      define('SOTSCHI_SUN_MOB',  707);
      define('SOTSCHI_SNOW_MOB', 708);
      define('SOTSCHI_ICE_MOB',  709);
      define('SOTSCHI_RACE_MOB', 710);
      //Freeride
      define('SOTSCHI_FREE_MOB', 759);

      //----VAL'D ISERE----
      define('VALDI_SUN_MOB',  760);
      define('VALDI_SNOW_MOB', 761);
      define('VALDI_ICE_MOB',  762);
      //Freeride
      define('VALDI_FREE_MOB', 763);

      //----SCHLADMING----
      define('SCHLADMING_SUN_MOB',  764);
      define('SCHLADMING_SNOW_MOB', 765);
      define('SCHLADMING_ICE_MOB',  766);
      //Freeride
      define('SCHLADMING_FREE_MOB', 767);

      //----BEAVER CREEK SG----
      define('BEAVER_SG_SUN_MOB',  768);
      define('BEAVER_SG_SNOW_MOB', 769);
      define('BEAVER_SG_ICE_MOB',  770);
      //Freeride
      define('BEAVER_SG_FREE_MOB', 771);

      //-------------------------------------------
      //Konstanten für die einzelnen Streckennamen
      //-------------------------------------------
      define('BEAVER',     'Beaver Creek');
      define('GROEDEN',    'Gröden');
      define('BORMIO',     'Bormio');
      define('WENGEN',     'Wengen');
      define('KITZ',       'Kitzbühel');
      define('GARMISCH',   'Garmisch');
      define('SCHLADMING', 'Schladming');
      define('MUENCHEN',   'M&uuml;nchen');
      define('VALDI',      'Val\'d Isere');
      define('SOCHI',      'Sochi');
      define('BEAVER_SG',  'Beaver Creek SG');
      define('BEAVER_CS',  'Beaver Creek CS');

      //-----------------------------------------
      //Konstanten für die einzelnen Bedingungen
      //-----------------------------------------
      define('SUN',     'Sonne');
      define('SNOW',    'Schnee');
      define('ICE',     'Eis');
      define('RACE',    'Rennen');
      define('PS',      'Parallelslalom');
      define('ALL',     'All-Weather');
      define('FREE',    'Freeride');
      define('BLACK',   'Blitzeis');
      define('ATTACK',  'Zeitbombe');
      define('LAST',    'Letzte Talfahrt');
      define('ARCADE',  'Arcade');
      define('EXTREME', 'Extrem');

      //------------------------------------------
      //Konstanten für die verschiedene Versionen
      //------------------------------------------
      define('DESKTOP', 1737);
      define('MOBILE',  1738);

      //Konstante als Hilfe zum Auslesen der Kilometer, Stürze, ...
      define('ZEITID', 12);
      define('KMID', 13);
      define('STARTID', 14);
      define('ZIELID', 15);
      define('SPRUNGID', 22);
      define('KMHID', 24);
      define('STURZID', 25);
   }
?>

Vielleicht bringt das ja jemanden weiter :smt006

_________________
lg. Bild
MikeTiger


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Mi Dez 31, 2014 11:59:29 
Europameister
Europameister
Benutzeravatar
Offline

Registriert: Mo Jan 18, 2010 09:01:52
Beiträge: 2611
Geschlecht: Männlich
Alter: 33
SC-Nickname: Filu84
Nationencup: Team Hungary
Flagge:
Ziel: Top 100
OS: Windows 7
Danke gegeben: 179
Danke bekommen: 382
 
MikeTiger hat geschrieben:
Punkt 1:
Die Namen MÜSSEN unter ' gestellt werden
Filu84 = 'Filu84','....


stimmt habe ich bei den anderen rankings auch so gemacht, warum bei diesem nicht, keine ahnung... danke für den hinweis.

Punkt 2:
Wenn man mich fragt (und das tut normal KEINER :lol: ) ist als Sturz zu werten, wenn ich Starte und nicht ins Ziel komme

Zitat:
daher folgt: $sturz = $start - $ziel;


ansichtssache.. man kann ja auch einfach zurücksetzen wenn man mit der bisherigen Fahrt nicht zufrieden ist.
Ich lasse es deshalb bei mir mal mit der Zielankunft quote und deshalb bei


Zitat:
Punkt 3:
Habe 2x das "ü" durch -> "&uuml;" ersetzt (bei Stürze und bei München)


jep das war ein schönheistfehler, danke

Zitat:
Punkt 4:
Damit Lokal KEINE "Notizen" angezeigt werden, was sie bei Deiner All Weather Auflistung tun, habe ich Zeile 8 eingebaut


ok danke, bei mir kommen keine Notizen nur, warnungen wenn eine Zeit steht.

Vielen herzlichen Dank für die überprüfung :mrgreen:

_________________


BildSC:BannerBild

SC:Banner

Platzierungen in der Vergangenheit:
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Mi Dez 31, 2014 12:08:40 
Val d'ium
Val d'ium
Benutzeravatar
Offline

Registriert: So Dez 24, 2006 09:46:42
Beiträge: 905
Wohnort: Wien
Geschlecht: Männlich
Alter: 47
SC-Nickname: MikeTiger
Nationencup: Team Vatikan
Flagge:
Ziel: Ich spiele nicht
OS: Windows 10
Danke gegeben: 155
Danke bekommen: 57
 
filu84 hat geschrieben:
Zitat:
daher folgt: $sturz = $start - $ziel;

ansichtssache.. man kann ja auch einfach zurücksetzen wenn man mit der bisherigen Fahrt nicht zufrieden ist.

Damit bist du aber auch geSTARTet und NICHT ins Ziel gekommen ... :smt069

_________________
lg. Bild
MikeTiger


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Mi Dez 31, 2014 12:19:05 
Europameister
Europameister
Benutzeravatar
Offline

Registriert: Mo Jan 18, 2010 09:01:52
Beiträge: 2611
Geschlecht: Männlich
Alter: 33
SC-Nickname: Filu84
Nationencup: Team Hungary
Flagge:
Ziel: Top 100
OS: Windows 7
Danke gegeben: 179
Danke bekommen: 382
 
Ja, aber nicht gestürzt. Ist ja aber egal. Kann ja jeder machen, wie er will.

_________________


BildSC:BannerBild

SC:Banner

Platzierungen in der Vergangenheit:
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Mi Dez 31, 2014 12:49:41 
Streif-enhörnchen
Streif-enhörnchen
Benutzeravatar
Offline

Registriert: Di Dez 08, 2009 15:11:08
Beiträge: 425
Wohnort:
Geschlecht: Männlich
Alter: 50
SC-Nickname: Ha2ta
Nationencup: Sealand
Flagge:
Ziel: Top 10.000
Danke gegeben: 32
Danke bekommen: 15
 
filu84 hat geschrieben:
....wenn ich ja nun die werte von den Zielankünften (43) und Stürze (326) zussamenzähle müsste ich ja eigentlich auf die Starts kommen (592). Dem ist aber nicht so, denn ich komme lediglich auf 369 und somit auf eine differenz von 223.
Sind diese 223 versuche neustarts ohne sturz? Die Frage stellt sich ob hier überhaupt richtig protokolliert wird.

Das war auch schon in der Saison 2011 so (wahrscheinlich vorher auch), hab mich damals auch gewundert.
Werde das mal ausprobieren was wie gezählt wird...

Edit: Hab dir ne PN....


Zuletzt geändert von hatta am Mi Dez 31, 2014 14:04:40, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Mi Dez 31, 2014 14:03:24 
SC'ler
SC'ler
Benutzeravatar
Offline

Registriert: Fr Dez 02, 2005 13:56:08
Beiträge: 80
Wohnort: Lilienfeld
Geschlecht: Männlich
Alter: 35
SC-Nickname: Fatmax
Flagge:
Ziel: Top 10.000
Danke gegeben: 2
Danke bekommen: 2
 
Ich hab noch folgende Änderungen durchgeführt falls keine Daten zum Abrufen vorhanden sind, denn dann wird eine Fehlermeldung ausgegeben, da die Quote eine Division durch 0 erzeugt.
Folgendes habe ich umgeändert:

Bei der Berechnung der Quote:
Code:
$quote = $ziel *100 / $start;
$sturz = $start - $ziel;

zu:
Code:
if ($start == 0)
{
$start = "-";
$quote = "-";
$sturz = "-";
$ziel = "-";
}
else
{
$quote = $ziel *100 / $start;
$sturz = $start - $ziel;
}

Bei der Ausgabe:
Code:
echo "<td style='text-align: center;'>".$row['Start']."</td>";
echo "<td style='text-align: center;'>".$row['Ziel']."</td>";
echo "<td style='text-align: center;'>".$row['Sturz']."</td>";
echo "<td style='text-align: center;'>".number_format($row['Quote'], '2', ',', '.')."</td>";

zu:
Code:
if ($row['Start'] == 0)
{
echo "<td style='text-align: center;'>-</td>";
echo "<td style='text-align: center;'>-</td>";
echo "<td style='text-align: center;'>-</td>";
echo "<td style='text-align: center;'>-</td>";
}
else
{   
echo "<td style='text-align: center;'>".$row['Start']."</td>";
echo "<td style='text-align: center;'>".$row['Ziel']."</td>";
echo "<td style='text-align: center;'>".$row['Sturz']."</td>";
echo "<td style='text-align: center;'>".number_format($row['Quote'], '2', ',', '.')."</td>";
}

_________________
Lg
Fatmax

Bild

*~*~* Ranking der NFM-Speeddevils *~*~*


Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Mi Dez 31, 2014 15:51:27 
SC'ler
SC'ler
Benutzeravatar
Offline

Registriert: Fr Dez 02, 2005 13:56:08
Beiträge: 80
Wohnort: Lilienfeld
Geschlecht: Männlich
Alter: 35
SC-Nickname: Fatmax
Flagge:
Ziel: Top 10.000
Danke gegeben: 2
Danke bekommen: 2
 
Damit das Ganze etwas schöner aussieht habe ich die Erfolgsquote bei der Ausgabe noch etwas gepimpt und mit farbigen Balken versehen:
Code:
          if ($row['Start'] == 0)
          {
         echo "<td style='text-align: center;'>-</td>";
            echo "<td style='text-align: center;'>-</td>";
            echo "<td style='text-align: center;'>-</td>";
            echo "<td style='text-align: center;'>-</td>";
          }
          else
          {   
         echo "<td style='text-align: center;'>".$row['Start']."</td>";
            echo "<td style='text-align: center;'>".$row['Ziel']."</td>";
            echo "<td style='text-align: center;'>".$row['Sturz']."</td>";
         //echo "<td style='text-align: center;'>".number_format($row['Quote'], '2', ',', '.')."</td>";
            switch($row['Quote'])
         {
         case($row['Quote'] <= 25):
            ?><td width="100"><img src="balken_ro.gif" width="<?php echo $row['Quote']; ?>" height="25" alt="<?php echo $row['Quote']; ?> %" /><?php echo"<br />"; echo number_format($row['Quote'], '2', ',', '.'); ?> %</td><?php
            break;
         case($row['Quote'] >25 && $row['Quote'] <= 50):
            ?><td width="100"><img src="balken_or.gif" width="<?php echo $row['Quote']; ?>" height="25" alt="<?php echo $row['Quote']; ?> %" /><?php echo"<br />"; echo number_format($row['Quote'], '2', ',', '.'); ?> %</td><?php
         break;
         case($row['Quote'] >50 && $row['Quote'] <= 75):
            ?><td width="100"><img src="balken_ge.gif" width="<?php echo $row['Quote']; ?>" height="25" alt="<?php echo $row['Quote']; ?> %" /><?php echo"<br />"; echo number_format($row['Quote'], '2', ',', '.'); ?> %</td><?php
         break;
         case($row['Quote'] > 75):
            ?><td width="100"><img src="balken_gr.gif" width="<?php echo $row['Quote']; ?>" height="25" alt="<?php echo $row['Quote']; ?> %" /><?php echo"<br />"; echo number_format($row['Quote'], '2', ',', '.'); ?> %</td><?php
         break;
         }
          }

Die Grafiken sind GIF-Dateien mit 1x1-Pixel Größe und verschiedenen Farben.
Wer möchte kann diese von hier herunterladen:

_________________
Lg
Fatmax

Bild

*~*~* Ranking der NFM-Speeddevils *~*~*


Bild


Nach oben
 Profil  
Mit Zitat antworten  
Für diesen Beitrag haben sich bei Fatmax folgende User bedankt:
kurtz
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Fr Jan 02, 2015 08:55:48 
SC'ler in Ausbildung
SC'ler in Ausbildung
Benutzeravatar
Offline

Registriert: Sa Aug 07, 2010 10:56:21
Beiträge: 60
Wohnort: Steiermark
Geschlecht: Männlich
Alter: 43
SC-Nickname: kurtz
Nationencup: Team Austria
Flagge:
Ziel: Top 100
OS: Windows 8
Danke gegeben: 34
Danke bekommen: 15
 
Gute Arbeit Fatmax


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Fr Jan 02, 2015 19:58:05 
SC'ler
SC'ler
Benutzeravatar
Offline

Registriert: Fr Dez 02, 2005 13:56:08
Beiträge: 80
Wohnort: Lilienfeld
Geschlecht: Männlich
Alter: 35
SC-Nickname: Fatmax
Flagge:
Ziel: Top 10.000
Danke gegeben: 2
Danke bekommen: 2
 
Da ich von kurtz nach meinem Script für die Rangliste gefragt wurde, weil dies durch die Erweiterungen des ursprünglichen Scripts einiges mehr an Informationen hergibt möchte ich mich hier nochmals zu Wort melden.
Leider konnte ich ihm das Script nicht einfach komplett schicken, da darin ein Aufruf zu einer MYSQL-Datenbank enthalten war, daher habe ich nun nach einer anderen Lösung gesucht, die der Rest der Community auch verwenden kann. :mrgreen: :mrgreen:

Das Script funktioniert wie in meiner Signatur ersichtlich und ist eine Abwandlung/Erweiterung des ursprünglichen Scripts, jedoch ohne Ausgabe der Skieinstellungen, da die Abfragen von Rudis-Skieinstellungen nicht wirklich 100% funktioniert.
Als Avatarbilder werden die Profilbilder von Facebook automatisch verwendet.
Ist der User nicht auf Facebook, wird ein Dummy-Foto eingeblendet.

Bitte keine Rückmeldungen betreffend: wie umständlich ist das programmiert bzw. warum macht der keine ordentlichen Kommentare im Script.
Zum 1. Punkt: ich bin Programmieranfänger und bastle alles zusammen bis es funktioniert & ich wurde nicht mit PHP-Kenntnissen geboren :lol: :lol: :lol:
Zum 2. Punkt: weils mich einfach nicht interessiert. :smt112 :smt112

Das Script mit allen erforderlichen Dateien kann unter Download heruntergeladen werden.
Folgende Änderungen gehören gemacht, damit das Script funktioniert:

  • Öffnen der TXT-Datei "fahrer.txt"
  • Hinzufügen der Fahrernamen und des realen Namen bei Facebook. Getrennt wird der SC-Name und Facebook-Name durch ein ",". Siehe Beispiel: WeltbesterSC-Fahrer,SC.Fahrer.3 => Hier wäre der SC-Name = WeltbesterSC-Fahrer und der Facebook-Name = SC.Fahrer.3 . Jede neue Zeile entspricht einem Fahrer. WICHTIG: den Eintrag der 1. Zeile (nickname,fbname) nicht löschen bzw. verändern
  • Den Facebooknamen findet man in der Adresszeile des Browsers wenn man das Profil der jeweiligen Person aufruft. Bsp.: Die Adresse auf Facebook von Mark Zuckerberg lautet: https://www.facebook.com/zuck?fref=ts => der Facebookname wäre dann "zuck", was sein Skichallenge Name ist, müsst ihr selber erfragen. :lol: :mrgreen: :lol: :mrgreen: :lol: :mrgreen:
  • Nach dem Eintragen aller Namen die TXT-Datei abspeichern. Nicht vergessen das Beispiel aus der Datei zu löschen.
  • Mit einem Editor das Script "rangliste_sc.php" öffnen und im HTML-Teil den Namen der Skigruppe eintragen bzw. das Logobild ersetzen (optional kann auch eine Datei mit dem Namen logo.jpg im selben Verzeichnis wie das Script am Server abgespeichert werden, dann braucht man das Bild im Script nicht ändern, sondern nur den Skigruppennamen).
  • Script speichern.
  • Sämtliche Dateien auf den Server hochladen

_________________
Lg
Fatmax

Bild

*~*~* Ranking der NFM-Speeddevils *~*~*


Bild


Nach oben
 Profil  
Mit Zitat antworten  
Für diesen Beitrag haben sich bei Fatmax folgende User bedankt:
kurtz
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Fr Jan 02, 2015 20:15:07 
SC'ler in Ausbildung
SC'ler in Ausbildung
Benutzeravatar
Offline

Registriert: Sa Aug 07, 2010 10:56:21
Beiträge: 60
Wohnort: Steiermark
Geschlecht: Männlich
Alter: 43
SC-Nickname: kurtz
Nationencup: Team Austria
Flagge:
Ziel: Top 100
OS: Windows 8
Danke gegeben: 34
Danke bekommen: 15
 
SUPER ARBEIT , VIELEN DANK !!! ARBEITET EINWANDFREI !!! :partyman:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Sa Jan 03, 2015 03:07:03 
Pistenrowdie
Pistenrowdie
Benutzeravatar
Offline

Registriert: Di Dez 23, 2008 19:26:44
Beiträge: 1062
Geschlecht: Männlich
Alter: 23
Nationencup: Auf der Suche!
OS: Windows 98
Danke gegeben: 8
Danke bekommen: 60
 
Thx für diese Arbeit!!!!!!!!!!!!!!!!!!!!

_________________
17.10.2015 Rest in Peace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Live-Ranking
BeitragVerfasst: Sa Jan 10, 2015 17:45:04 
Ideallinien Fahrer
Ideallinien Fahrer
Benutzeravatar
Offline

Registriert: Mi Jan 01, 2014 22:11:36
Beiträge: 1312
Geschlecht: Männlich
Alter: 40
SC-Nickname: MattMurdog
Nationencup: Königreich Tonga
Flagge:
Ziel: Top 250
Danke gegeben: 100
Danke bekommen: 69
 
Für die Bonusrennen müssen eventuell die IDs noch angepasst werden.

//----SCHLADMING---- ?!
define('SCHLADMING_SUN', 973);
define('SCHLADMING_SNOW', 974);
define('SCHLADMING_ICE', 975);
define('SCHLADMING_RACE', 111); // Rennen gibt es keins, erfundene ID
//Minimodes
define('SCHLADMING_FREE', 976);
define('SCHLADMING_BLACK', 977);
define('SCHLADMING_ATTACK', 978);
define('SCHLADMING_LAST', 979);
define('SCHLADMING_ARCADE', 980);
define('SCHLADMING_EXTREME', 981);

//----SOCHI----
define('SOCHI_SUN', 964);
define('SOCHI_SNOW', 965);
define('SOCHI_ICE', 966);
define('SOCHI_RACE', 111); // Rennen gibt es keins, erfundene ID
//Freeride
define('SOCHI_FREE', 967);

//----VAL'D ISERE----
define('VALDI_SUN', 955);
define('VALDI_SNOW', 956);
define('VALDI_ICE', 957);
//Freeride
define('VALDI_FREE', 763);

_________________
SC:Banner
SC:Banner
SC:Banner
Gesamtplatzierungen: '11 [11.390] '12 [5.779] '13 [2.025] '14 [910] '15 [269]
TEAM 77 beim Jahrgangs-Cup '16


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Forum gesperrt Dieses Thema ist gesperrt. Du kannst keine Beiträge editieren oder weitere Antworten erstellen.  [ 85 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Deutsche Übersetzung durch phpBB.de
Style by ToBiMo (c) 2008
Eingebaut von eYeWoRRy
Hier wird Google Analytics verwendet
Impressum
cron