SBNRW – Vereinsportal

Mitgliederverwaltung und Ergebnisdienst

Übersicht

Ergebnisse einbinden

Tabellen

Um Tabellen auf Ihrer Homepage einzubinden, ist nicht viel nötig. Ihr Provider muss Ihnen nur PHP5 mit aktivierter XSLT-Unterstüzung zur Verfügung stellen. Sollte der Ihre dies nicht können, werfen Sie einmal einen Blick auf das Angebot des SVW

Nachfolgend ein Beispiel, wie Sie die Tabellen einbinden können. Kopieren Sie das untenstehende Skript in die Seite, auf der die Tabelle angezeigt werden soll. Vor und nach dem Skript kann normales HTML stehen. Achten Sie darauf, dass die Datei die Endung ".php" (bzw. ".php5" je nach Provider) hat.

<?php

// Einstellungen:
// Turnier-ID
$tid = 10;

// welches Turnier welche ID hat, können Sie aus der Adresse ablesen.
// Ein Beispiel: Die Oberliga NRW 2010/11 ist über
// http://nrw.svw.info/ergebnisse/show/2010/10/
// zu erreichen; die gesuchte ID steckt im letzten Teil der Adresse: 10

// Transformationsanweisungen für die Darstellung der Tabelle
$xslt    = 'formatTabelle.xsl';

// Wenn Sie eine Kreuztabelle möchten, entfernen Sie die Kommentarzeichen in der
// nächsten Zeile
// $xslt    = 'formatTabelleKreuz.xsl';

// laden Sie sich auch die entsprechende Transformationsdatei herunter (s.u)

// weitere Einstellungen; müssen nicht geändert werden!

// wir cachen die Daten für zwei Stunden; spart Resourcen
$tstamp  = time()-7200;

// Name einer temporären Datei
$tmpfile = 'tmp_tabelle_'.$tid.'.xml';

// Name der Datei, in der die Daten lokal abgelegt werden
$tabelle = 'tabelle_'.$tid.'.xml';

// die Daten-Quelle
$xml     = 'http://nrw.svw.info/tools/export/tabelle.php?tid='.$tid;


// Test, ob Datei vorhanden und nicht zu alt
if ((!is_file($tabelle)) || (filectime($tabelle)<$tstamp)) {
	if (@copy($xml,$tmpfile)) {
		// ist eine alte Tabelle vorhanden, dann löschen
		if (is_file($tabelle)) {
			unlink($tabelle);
		}
		// verschiebe temporäre Datei
		rename($tmpfile , $tabelle);
	}
	else {
		echo "<p>konnte Tabelle nicht auslesen!</p>";
	}
}


// Transformation: Lade Transfomationsanweisung
$xslDoc1 = new DOMDocument();
$xslDoc1->load($xslt);
// Transformation: Lade Tabelle
$xmlDoc = new DOMDocument();
$xmlDoc->load($tabelle);
// Transformation ins html
$xsltproc = new XSLTProcessor();
$xsltproc->importStylesheet($xslDoc1);

// Ausgabe
echo $xsltproc->transformToXML($xmlDoc);
// Liefern Sie Ihre Webseite nicht als UTF-8 kodiert aus, löschen
// Sie die obige Zeile und verwenden Sie statt dessen den folgenden
// Befehl: (einfach die "//" in der nächsten Zeile entfernen)
//echo iconv('UTF-8','ISO-8859-1',$xsltproc->transformToXML($xmlDoc));
?>

Speichern Sie auch diese Datei (bzw. diese Datei für Kreuztabellen), die die Transformation enthält, mit in das selbe Verzeichnnis, in dem die Seite sich befindet.

Mittels CSS können Sie das Aussehen der Tabelle weiter beeinflussen. Die Transformation vergibt der Tabelle die CSS-Klasse "nrwportalTabelle", mit der Sie das Aussehen individuell gestalten können.

Informationen zu CSS finden Sie z.B. auf der Seite http://de.selfhtml.org

Diese Methode funktioniert ähnlich auch mit anderen Skriptsprachen. Versierte Programmieren können die Daten, die als xml geliefert werden, auch anderweitig umsetzen. Um eine übermäßige Serverbelastung zu vermeiden, bitten wir darum, die Tabellendaten wie im Beispiel lokal zwischenzuspeichern.

Rundenergebnisse

genauso können auch Rundenergebnisse (bzw. die Ergebnisse einer einzigen Begegnung aus einer Runde) eingebunden werden:

<?php

// Einstellungen:
// Turnier-ID
$tid = 10;

// Rundennummer
$runde = 3;

// Begegnung an diesem Spieltag:
$begegnung = 4;

// wenn eine bestimmte Begegnung angezeigt werden soll, geben Sie diese hier an;
// Oben beginnend wird von 1 an weiter gezählt; Ein Beispiel:
// http://nrw.svw.info/ergebnisse/show/2010/10/runde/3/
// Die Begegnung SV Castrop-Rauxel 1 - PSV Duisburg 1 ist somit
// Begegnung Nr. 4 in der 3. Runde mit der Turnier-ID 10

// sollen alle Spiele angezeigt werden, setzen Sie oben $begegnung = 0;


// weitere Einstellungen; sollen nicht geändert werden!
// wir cachen die Daten für zwei Stunden; spart Resourcen
$tstamp  = time()-7200;
// Name einer temporären Datei
$tmpfile = "tmp_".$tid."_".$runde."_".$begegnung.".xml";
// Name der Datei, in der die Daten lokal abgelegt werden
$tabelle = "runde_".$tid."_".$runde."_".$begegnung.".xml";
// Transformationsanweisungen für die Darstellung der Ergebnisse
$xslt    = './formatRunde.xsl';
// die Daten-Quelle
$xml     = "http://nrw.svw.info/tools/export/runde.php?tid=$tid&runde=$runde&begegnung=$begegnung";


// Test, ob Datei vorhanden und nicht zu alt
if ((!is_file($tabelle)) || (filectime($tabelle)<$tstamp)) {
	if (@copy($xml,$tmpfile)) {
		// ist eine alte Datei vorhanden, dann löschen
		if (is_file($tabelle)) {
			unlink($tabelle);
		}
		// verschiebe temporäre Datei
		rename($tmpfile , $tabelle);
	}
	else {
		echo "<p>konnte Runde nicht auslesen!</p>";
	}
}


// Transformation: Lade Transfomationsanweisung
$xslDoc1 = new DOMDocument();
$xslDoc1->load($xslt);
// Transformation: Lade Tabelle
$xmlDoc = new DOMDocument();
$xmlDoc->load($tabelle);
// Transformation ins html
$xsltproc = new XSLTProcessor();
$xsltproc->importStylesheet($xslDoc1);


// um eine in allen Fällen richtige Anzeige des 1/2-Zeichens zu gewährleisten
// ist dieses Zeichen (sofern vorhanden) maskiert. Diese Maskierung machen
// wir hier rückgängig
$string = str_replace("&amp;" , "&" , $xsltproc->transformToXML($xmlDoc));

// Ausgabe
echo $string;
// Liefern Sie Ihre Webseite nicht als UTF-8 kodiert aus, löschen
// Sie die obige Zeile und verwenden Sie statt dessen den folgenden
// Befehl: (einfach die "//" in der nächsten Zeile entfernen)
// echo iconv('UTF-8','ISO-8859-1',$string);

?>

Speichern Sie auch diese Datei, die die Transformation enthält, mit in das selbe Verzeichnnis, in dem die Seite sich befindet.

Mittels CSS können Sie das Aussehen der Rundenanzeige weiter beeinflussen. Die Transformation vergibt der Tabelle die CSS-Klasse "nrwportalRunde", mit der Sie das Aussehen individuell gestalten können.