Bundesliga Ergebnisse

So, nun bin ich seit 'nen paar Wochen auch IP-Symcon Nutzer und wollte jetzt mal ein Projekt vorstellen, an dem ich jetzt angefangen habe zu arbeiten.

Ziel war es die aktuellen Bundesliga Ergebnisse und später auch die Live-Tabelle in IPS anzeigen zu lassen.

Lange Rede kurzer Sinn, die ersten Ergebnisse möchte ich euch schon mal zur Verfügung stellen.

Mit dem Script wird immer der aktuelle Spieltag angezeigt.

Es soll noch erweitert werden, so das man die Spieltage Manuell anwählen kann.
Desweiteren sollen zu jedem Spiel Details eingeblendet werden, u.A wer die Tore geschossen hat in welcher Minute etc.

Dann wollte ich noch eine Torschützenliste erstellen und wie gesagt die eigentliche Live-Tabelle. Aber alles mit der Zeit, ich arbeite mich da stückweise ran.

Die Vereinslogos, werden noch gegen eigene Ausgetauscht, weil die vorhandenen auf dunklem Untergrund echt doof aussehen und auch nicht wirklich groß sind.

Da ich nun wirklich kein Experte in PHP bin, würd ich mich um Unterstützung freuen. Ihr dürft auch gerne mein Script ein wenig aufräumen :slight_smile:

Aber nun zum Code :slight_smile:


<?
// Einstellungen
$vn = 'Hamburger SV';         // Hier den Lieblingsverein angeben, dieser wird hervorgehoben
$lsc = 'bl1';                 // Den Ligashortcut eingeben. Für die Erste Bundesliga bl1.
$ls = '2010';                 // Das Jahr der Saison angeben, bei 2010/2011 -> 2010
$spt = 0;                     // Zur manuellen Anzeige des "aktuellen Spieltags". Bei 0 dynamische Anzeige!

// Ich bin ein XML-Webservice auf dem ganz viele Fußballdaten liegen
$location = 'http://www.OpenLigaDB.de/Webservices/Sportsdata.asmx?WSDL';

// paar Einstellungen, beachte mich erstmal nicht
$options = array('encoding'           => 'iso-8859-1',
                 'connection_timeout' => 5,
                 'exceptions'         => 1,
                 );

// Seifenanhänger
$client = new SoapClient($location, $options);

// Welcher Spieltag is denn nun aktuell?
$params = array('leagueShortcut' => ''.$lsc.'');
$response = $client->GetCurrentGroupOrderID($params);
$sptd = $response->GetCurrentGroupOrderIDResult;

// Übergabe-Array an OpdenLigaDB
if ($spt == 0){
$params2 = array('groupOrderID' => ''.$sptd.'', 'leagueShortcut' => ''.$lsc.'', 'leagueSaison' => ''.$ls.'');}
else {
$params2 = array('groupOrderID' => ''.$spt.'', 'leagueShortcut' => ''.$lsc.'', 'leagueSaison' => ''.$ls.'');}

// und das hier bekommen wir zurück
$response2 = $client->GetMatchdataByGroupLeagueSaison($params2);

// CSS für die Tabelle
echo '<style type="text/css">';
echo '.headLine {font-size: medium;}';
echo '.itemBig {font-size: x-small;}';
echo '.itemBiggr {font-size: small;}';
echo '.itemBiggr2 {font-size: small; font-weight: bold;}';
echo '.itemSmall {font-size: xx-small;}';
echo '</style>';

// Zeigt den aktuellen Spieltag an
if ($spt == 0){
echo '<div class="headLine">'.$response2->GetMatchdataByGroupLeagueSaisonResult->Matchdata[0]->leagueName.' - '.$sptd.'. Spieltag</div>';}
else {
echo '<div class="headLine">'.$response2->GetMatchdataByGroupLeagueSaisonResult->Matchdata[0]->leagueName.' - '.$spt.'. Spieltag</div>';}
echo '<table>';

//var_dump($response2);
// los mach dich nackig! Nehmen wir dich mal auseinander!
foreach ($response2->GetMatchdataByGroupLeagueSaisonResult->Matchdata as $md)
{

	// Es lebe die Vielfalt der Zeitformate :(
	$unidate = strtotime("$md->matchDateTime");
	$date = date("d.m.Y - H:i", $unidate);
	$tag = date("w", $unidate);
	if ($tag=="0"){
		$tagde="Sonntag";}
	if ($tag=="1"){
		$tagde="Montag";}
	if ($tag=="2"){
		$tagde="Dienstag";}
	if ($tag=="3"){
		$tagde="Mittwoch";}
	if ($tag=="4"){
		$tagde="Donnerstag";}
	if ($tag=="5"){
		$tagde="Freitag";}
	if ($tag=="6"){
		$tagde="Samstag";}
	
	// Nur zur besseren Übersicht, könnte auch direkt abgefragt werden
	$pic1 = $md->iconUrlTeam1;
   $team1 = $md->nameTeam1;
	$points1 = $md->pointsTeam1;
   $pic2 = $md->iconUrlTeam2;
   $team2 = $md->nameTeam2;
   $points2 = $md->pointsTeam2;
   
   // zur Vermeidung von Fehlermeldungen muss ich sicher gehen das dort Werte eingetragen sind
   if ($md->matchIsFinished == true) {
      $half1 = $md->matchResults->matchResult[1]->pointsTeam1;
      $half2 = $md->matchResults->matchResult[1]->pointsTeam2;}
      
// Fangen wir doch mal an die Tabelle auszugeben...
echo '<tr>';
echo '	<td>';
echo '		<img src="'.$pic1.'">';
echo '	</td>';
echo '	<td>';
// Falls das Spiel noch aussteht zeig ich dir nen Bindestrich
if ($points1 == -1 or $points2 == -1){
echo '		<div class="itemBig" align="center">- : -</div>';}
else {
echo '		<div class="itemBig" align="center">'.$points1.' : '.$points2.'</div>';}
// Wenn das Spiel fertig ist zeig ich dir auch noch Halbzeitresultate
if ($md->matchIsFinished == true) {
echo '		<div class="itemSmall" align="center">('.$half1.' : '.$half2.')</div>';}
echo '	</td>';
echo '	<td>';
echo '		<img src="'.$pic2.'">';
echo '	</td>';
echo '	<td>';
echo '		<div class="itemBig"> '.$tagde.', '.$date.'</div>';
// Lieblingsverein wird hervorgehoben
if ($team1 == $vn or $team2 == $vn){
echo '		<div class="itemBiggr2" font-size="small"> '.$team1.' - '.$team2.'</div>';}
else {
echo '		<div class="itemBiggr" > '.$team1.' - '.$team2.'</div>';}
echo '	</td>';
echo '</tr>';
}
echo '</td>';

// soll es das gewesen sein?
?>

So viel Spaß damit :slight_smile:

buliergebnisse.jpg

Na, bei dem Lieblingsverein muss ich zumindest mir das Thema auf jeden Fall schon mal genauer anschauen…

…Hamburg meine Perle…Du wunderschoene Stadt… :smiley:

Gruss
B71

Hehe, ja aber auch wenn es absolut unmöglich klingt, es funktioniert sogar mit anderen Vereinen :wink:

Hallo cut,

ich bin zwar nicht so ein „besonders intensiver Fußball-Gucker“, finde die Idee aber toll (gerade diese Features sind es doch, die am Ende des Tages den „Mehrwert“ ausmachen, oder?) und würde sie gerne weiterverfolgen - auch um aus der Programmierung zu lernen…

Kannst Du noch ein paar Worte zur Einrichtung des Ganzen verlieren?
We oft startest Du das Skript, etc…?

Joachim

We oft startest Du das Skript, etc…?

Na jedesmal wenn Du die Ergebnisse sehen willst.

Hallo Cut,

Ich habe mir mal erlaubt, die Präsentation etwas zu verändern.

  1. Ich habe das Skript etwas verändert:
<?
// Einstellungen
$vn = 'Hamburger SV';         // Hier den Lieblingsverein angeben, dieser wird hervorgehoben
$lsc = 'bl1';                 // Den Ligashortcut eingeben. Für die Erste Bundesliga bl1.
$ls = '2010';                 // Das Jahr der Saison angeben, bei 2010/2011 -> 2010
$spt = 0;                     // Zur manuellen Anzeige des "aktuellen Spieltags". Bei 0 dynamische Anzeige!

// Ich bin ein XML-Webservice auf dem ganz viele Fußballdaten liegen
$location = 'http://www.OpenLigaDB.de/Webservices/Sportsdata.asmx?WSDL';

// paar Einstellungen, beachte mich erstmal nicht
$options = array('encoding'           => 'iso-8859-1',
                 'connection_timeout' => 5,
                 'exceptions'         => 1,
                 );

// Seifenanhänger
$client = new SoapClient($location, $options);

// Welcher Spieltag is denn nun aktuell?
$params = array('leagueShortcut' => ''.$lsc.'');
$response = $client->GetCurrentGroupOrderID($params);
$sptd = $response->GetCurrentGroupOrderIDResult;

// Übergabe-Array an OpdenLigaDB
if ($spt == 0){
$params2 = array('groupOrderID' => ''.$sptd.'', 'leagueShortcut' => ''.$lsc.'', 'leagueSaison' => ''.$ls.'');}
else {
$params2 = array('groupOrderID' => ''.$spt.'', 'leagueShortcut' => ''.$lsc.'', 'leagueSaison' => ''.$ls.'');}

// und das hier bekommen wir zurück
$response2 = $client->GetMatchdataByGroupLeagueSaison($params2);

// CSS für die Tabelle
echo '<style type="text/css">';
echo '.headLine {font-size: medium;}';
echo '.itemBig {font-size: x-small;}';
echo '.itemBiggr {font-size: small;}';
echo '.itemBiggr2 {font-size: small; font-weight: bold;}';
echo '.itemSmall {font-size: xx-small;}';
echo '</style>';
$Bundesligaergebnisse = "";
$Bundesligaergebnisse = $Bundesligaergebnisse.'<style type="text/css">';
$Bundesligaergebnisse = $Bundesligaergebnisse.'.headLine {font-size: medium;}';
$Bundesligaergebnisse = $Bundesligaergebnisse.  '.itemBig {font-size: x-small;}';
$Bundesligaergebnisse = $Bundesligaergebnisse.  '.itemBiggr {font-size: small;}';
$Bundesligaergebnisse = $Bundesligaergebnisse.  '.itemBiggr2 {font-size: small; font-weight: bold;}';
$Bundesligaergebnisse = $Bundesligaergebnisse.  '.itemSmall {font-size: xx-small;}';
$Bundesligaergebnisse = $Bundesligaergebnisse.  '</style>';

// Zeigt den aktuellen Spieltag an
if ($spt == 0){
echo '<div class="headLine">'.$response2->GetMatchdataByGroupLeagueSaisonResult->Matchdata[0]->leagueName.' - '.$sptd.'. Spieltag</div>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '<div class="headLine">'.$response2->GetMatchdataByGroupLeagueSaisonResult->Matchdata[0]->leagueName.' - '.$sptd.'. Spieltag</div>';}

else {
echo '<div class="headLine">'.$response2->GetMatchdataByGroupLeagueSaisonResult->Matchdata[0]->leagueName.' - '.$spt.'. Spieltag</div>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '<div class="headLine">'.$response2->GetMatchdataByGroupLeagueSaisonResult->Matchdata[0]->leagueName.' - '.$spt.'. Spieltag</div>';
}

echo '<table>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '<table>';
//var_dump($response2);
// los mach dich nackig! Nehmen wir dich mal auseinander!
foreach ($response2->GetMatchdataByGroupLeagueSaisonResult->Matchdata as $md)
{

    // Es lebe die Vielfalt der Zeitformate :(
    $unidate = strtotime("$md->matchDateTime");
    $date = date("d.m.Y - H:i", $unidate);
    $tag = date("w", $unidate);
    if ($tag=="0"){
        $tagde="Sonntag";}
    if ($tag=="1"){
        $tagde="Montag";}
    if ($tag=="2"){
        $tagde="Dienstag";}
    if ($tag=="3"){
        $tagde="Mittwoch";}
    if ($tag=="4"){
        $tagde="Donnerstag";}
    if ($tag=="5"){
        $tagde="Freitag";}
    if ($tag=="6"){
        $tagde="Samstag";}

    // Nur zur besseren Übersicht, könnte auch direkt abgefragt werden
    $pic1 = $md->iconUrlTeam1;
   $team1 = $md->nameTeam1;
    $points1 = $md->pointsTeam1;
   $pic2 = $md->iconUrlTeam2;
   $team2 = $md->nameTeam2;
   $points2 = $md->pointsTeam2;

   // zur Vermeidung von Fehlermeldungen muss ich sicher gehen das dort Werte eingetragen sind
   if ($md->matchIsFinished == true) {
      $half1 = $md->matchResults->matchResult[1]->pointsTeam1;
      $half2 = $md->matchResults->matchResult[1]->pointsTeam2;}

// Fangen wir doch mal an die Tabelle auszugeben...
echo '<tr>';
echo '    <td>';
echo '        <img src="'.$pic1.'">';
echo '    </td>';
echo '    <td>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '<tr>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '    <td>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '        <img src="'.$pic1.'">';
$Bundesligaergebnisse = $Bundesligaergebnisse. '    </td>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '    <td>';
// Falls das Spiel noch aussteht zeig ich dir nen Bindestrich
if ($points1 == -1 or $points2 == -1){
echo '        <div class="itemBig" align="center">- : -</div>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '        <div class="itemBig" align="center">- : -</div>';
}
else {
echo '        <div class="itemBig" align="center">'.$points1.' : '.$points2.'</div>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '        <div class="itemBig" align="center">'.$points1.' : '.$points2.'</div>';
}
// Wenn das Spiel fertig ist zeig ich dir auch noch Halbzeitresultate
if ($md->matchIsFinished == true) {
echo '        <div class="itemSmall" align="center">('.$half1.' : '.$half2.')</div>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '        <div class="itemSmall" align="center">('.$half1.' : '.$half2.')</div>';
}
echo '    </td>';
echo '    <td>';
echo '        <img src="'.$pic2.'">';
echo '    </td>';
echo '    <td>';
echo '        <div class="itemBig"> '.$tagde.', '.$date.'</div>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '    </td>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '    <td>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '        <img src="'.$pic2.'">';
$Bundesligaergebnisse = $Bundesligaergebnisse. '    </td>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '    <td>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '        <div class="itemBig"> '.$tagde.', '.$date.'</div>';
// Lieblingsverein wird hervorgehoben
if ($team1 == $vn or $team2 == $vn){
echo '        <div class="itemBiggr2" font-size="small"> '.$team1.' - '.$team2.'</div>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '        <div class="itemBiggr2" font-size="small"> '.$team1.' - '.$team2.'</div>';
}
else {
echo '        <div class="itemBiggr" > '.$team1.' - '.$team2.'</div>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '        <div class="itemBiggr" > '.$team1.' - '.$team2.'</div>';
}
echo '    </td>';
echo '</tr>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '    </td>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '</tr>';
}
echo '</td>';
$Bundesligaergebnisse = $Bundesligaergebnisse. '</td>';

SetValueString(49488 /*[Sonstige Daten\Testobjekte\Bundesligaergebnisse\Bundesligaergebnisse]*/ , $Bundesligaergebnisse);

// soll es das gewesen sein?
?>
  1. Die Variable $Bundesligaergebnisse wird in eine neu angelegt String-Variable (Format HTML-Textbox) geschrieben. (siehe Anhang)
  2. Das Skript wird alle 15 Minuten getriggert (das es ja hauptsächlich am Wochenende passiert könnte man das sicherlich auch weiter einschränken). Im Ergebnisse ist das eine Infobox im Webfront (siehe Anhang).

Finde ich persönlich von der Präsentation her etwas schöner, ist aber sicherlich Geschmackssache…:slight_smile:

Joachim

Freut mich wenn es Leuten gefällt und weiterentwickelt wird :slight_smile:
War bis jetzt auch auch nur eine Idee die ich versucht hab umzusetzen und gleichzeitig mein erstes kleines Projekt :slight_smile:

Ja, später wollte ich das sowieso komplett ins Webfront integrieren, aber hab momentan noch ne kastrierte Version von IP-Symcon also die Basic :slight_smile:

Sollte aber nächste Woche die unlimited in den Händen halten, dann kann ich mich damit auch mal beschäftigen.

So hab mich mal deiner Idee mit der schöneren Integration ins WebFront angenommen.

Da ich jetzt ja endlich den Konfigurator nutzen kann musste ich ja ein wenig damit rumspielen :wink:

Ich weiß momentan keine schönere Lösung als die Seite als Externe Seite einzubinden, sollte es da andere ähnliche Möglichkeiten geben sagt mir ruhig bescheid.

Naja, hab dazu auch nochmal ein wenig mit CSS gespielt und heraus kam dieses.

Hallo cut,

das sieht ja klasse aus. Ich persönlich halte es aber nicht für so wichtig (ich bin halt nicht so ein Fußballbegeisteter), es als externe Seite in die obere Leiste zu bringen und habe es daher als einen von vielen „Infopoints“ mit in die IPS-Struktur gebracht, so dass es dann unten erscheint. Außerdem kannst Du die Punkte von „oben“ nicht über das iPhone (Achtung: Definitionssache!) abrufen.
Toll wäre aber für den „Fan“ sicher auch noch die aktuelle Tabelle…:wink:

Joachim

Vielen Dank!
Ja, ich arbeite an der Tabelle, jedenfalls mit den Gedanken bin ich schon voll dabei. Aber diese blöde Tabelle is mit dem Webservice echt garnich mal so einfach :frowning: Will ja auch keinem zumuten, erstmal ne MySQL Datenbank zu installieren. Genausowenig möchte ich Hunderttausende IPS Variablen für ne alberne Tabelle vergolden.

Muss mir das ganze nochmal durch den Kopf gehen lassen, ob das Funktioniert das alles Quasi just in time zusammenrechnen zu lassen, oder ob ich die Tabelle lieber von ner anderen Seite parse…

Ich werde auf jedenfall nochmal testen ob das „neue“ Design auch auf dein Art und Weise ins Webfront integrierbar ist.

Ich arbeite aber grad dran, wenn man auf eine Zeile klickt, das man weitere Informationen zu den einzelnen Spielen erhält. Mal gucken ob sich das mit Java lösen lässt. Naja, lösen lässt sich das bestimmt aber dafür muss ich mal eben Java lernen :slight_smile:

So, es gibt ein paar Neuigkeiten.
Ich hab es jetzt geschafft ne Tabelle dynamisch zu generieren.

Sollten jetzt beim sortieren keine großen Probleme mehr auftreten, kann ich euch diese vermutlich nächste Woche zur Verfügung stellen.

Das einzige was ich wohl nicht zur Verfügung stellen werde ist die Platzveränderung gegenüber des letzten Spieltags. Aber ich denke darauf kann man auch verzichten :slight_smile:

Soooo… damit ihr schonmal seht was euch nächste Woche erwartet, gibts hier mal einen ersten Screenshot :slight_smile:

Muss das ganze jetzt erstmal für euch aufarbeiten, bei mir herrscht absolutes Chaos :stuck_out_tongue:

Was ich jetzt auf die schnelle, nicht erreichen konnte, das er zwischen den Spielen die Tabelle live errechnet, das Script wartet momentan immer ab bis alle Spiele des Spieltags abgelaufen sind.

Das gefällt mir aber nicht, ich glaub da werd ich mich nochmal ransetzten.

Naja ich halte euch auf dem Laufenden :slight_smile:

// EDIT

Unendschieden und Niederlagen is verdreht nicht wundern, ist schon geändert :slight_smile:

So, nun gibts Ergebnisse. Auch wenn man ständig irgendwie noch was zu verbessern hat, ich release jetzt einfach mal eine Version die bei mir klappt :slight_smile:

Anzumerken ist, das die Tabellen im Internetexplorer verzerrt werden, worum ich mich aber nicht kümmern werde, weil ich den nicht benutze :slight_smile:

Unter Firefox hab ich es auch nie getestet, sollten da Probleme auftauchen bitte ich euch das vielleicht selbst irgendwie in Griff zu bekommen, und das Ergebnis vielleicht für andere zu Posten.

Falls ihr Fragen habt helfe ich euch natürlich gern.

Das ganze ist jetzt recht aufgepumpt mit CSS und über externe Seiten in IPS eingebunden. Falls jemand das lieber anders integrieren möchte, wurden am Anfang schon eine gute Idee von JPaeper vorgestellt.

Ich hab ne How to do eingefügt, mit ner Step für Step Anleitung.

Jetzt kann ich dann auch die restliche Woche Urlaub noch genießen :slight_smile:

Ihr findet alles im Anhang, viel spaß!

Bundesliga v.1.rar (151 KB)

Danke danke,
selten eine so gute Anleitung hier gesehen !
Alles auf Anhieb funktioniert.

Hallo cut,
suuuper-Geschichte!:slight_smile:

Ich habe aber noch eine Frage. Ich habe Dein Skript wieder meinen „Bedürfnissen“ angepasst und das klappt auch so weit. Lediglich der Abstand zwischen den einzelnen Einträgen ist sehr groß. Ich habe schon ein bißchen im Code „rumgespielt“ finde aber nicht, welchen Wert ich ändern muss, damit der Abstand zwischen den Zeilen kleiner wird…:confused:

Joachim

for($num=1; $num < 18; $num++){
		$color = ($color == $col3) ? $col4 : $col3;
echo'<tr class="'.$color.'">';

Änder das mal in…

echo'<tr class="'.$color.'">';

oder in…

echo'<tr>';

Zeile 258 bis 260.

Das ist auch der Grund warum es die Ansicht im Internetexplorer zerschießt

Hallo cut,

hat funktioniert!:slight_smile:
Danke!:cool:

Joachim

Dafür nicht :slight_smile:

Hallo cut,
die Einträge sind zwar schon einwenig älter, aber vielleicht kannst du mir trotzdem noch mal dazu helfen.
Ich nutze derzeit IPS noch nicht. Ggf. möchte ich das später noch tun.
Jetzt aber zu meiner Frage: Kann ich die Skripte auch als reinen php code verwenden. Irgendwie gibt es scheinbar Probleme, wenn ich das Skript nicht unter IPS laufen lassen. Oder läuft der Code auch völlig ohne IPS?

Scheinbar funktioniert irgendetwas im html-css Aufbau ohne IPS nicht?!

Viele Grüße

Um ehrlich zu sein, kann ich dir das momentan gar nicht sagen, irgendwann um den Saisonwechsel rum funktionierte das bei mir auch nicht mehr. Ich war mir nur nicht sicher ob es an OpenLiga oder der neuen IPS Version lag.

Da es mir aber die letzten Monate echt an Zeit mangelt, hab ich es bei mir erstmal rausgeschmissen und wollte, wenn ich mal nen ruhigen Moment habe, die Sache nochmal aufgreifen.

Aber prinzipiell müsste das auch ohne IPS funktionieren. Ich versuch die Tage mal rüber zu gucken.