Wenn Sie auf Ihren Webseiten DWZ-Listen anzeigen möchten, bietet sich die Nutzung unserer API (englisch: application programming interface, deutsch: Schnittstelle zur Anwendungsprogrammierung) an. Die API stellt Daten im CSV-Format, als serialisiertes Array und teilweise als XML zur Verfügung. Wie Sie die von unserem Server empfangenen Daten weiter verarbeiten, bleibt Ihnen überlassen. Nachfolgend finden Sie ein PHP-Beispiel und ein von Peter Fahsel zur Verfügung gestelltes Java-Programm.
Die Benutzung von iframes stellt ein potentielles Sicherheitsrisiko dar und sollte nur noch in Ausnahmefällen geschehen. Es gibt mittlerweile bessere Lösungen mit HTML5, CSS3 und Javascript.
Seit dem 27. Dezember 2017, als wir unser CMS Contao von Version 3 auf 4 angehoben und zudem auf SSL umgestellt haben, können Inhalte unserer Website nicht mehr per iframe eingebunden werden. Ursache ist die in der Antwort von unserem Server mitgeschickte Kopfzeile "X-Frame-Options SAMEORIGIN". Diese veranlaßt den Browser den iframe-Inhalt nicht mehr anzuzeigen.
Wollen Sie trotzdem unsere Seiten mit einem iframe einbinden, so wenden Sie sich bitte an den Webmaster webmaster@schachbund.de mit Angabe der Domain, die das iframe beinhaltet. Wir konfigurieren unser CMS entsprechend und tragen Ihre Domain als erlaubt ein.
Peter Fahsel, der die Webseiten des Schachverein Dinslaken und des Schachbezirk Kreis Wesel betreut, stellt den Nutzern unserer Schnittstelle kostenlos ein Java-Programm zur Verfügung.
Dazu schreibt Fahsel: "Die API ist so konzipiert, dass alle Daten erst dann geladen werden, wenn sie benötigt werden und dann bis zum Ablauf der angegebenen Cache Lebensdauer von standardmäßig 1440 Minuten (= 24 Stunden) nicht erneut geladen werden, um die eigene Anwendung zu beschleunigen und den Server des Schachbundes zu entlasten. Die API kann auf den beiden von mir betreuten Webseiten in Aktion gesehen werden:"
Mit dem hier vorgestellten PHP-Abfrageskript haben Sie die Möglichkeit eigene Listen für Ihre Website zu erstellen. Die Daten kommen entweder aus dem Cache des DSB-Servers oder direkt von der DeWIS-Schnittstelle auf dem württembergischen Server, werden also praktisch 1:1 durchgeschleift. Angaben zum Geschlecht und zum Geburtstag werden dabei aus Datenschutzgründen vorher entfernt.
Bitte beachten Sie dabei, daß der DSB-Server die Daten utf8-kodiert sendet. Wenn Sie Ihre Website mit einem ISO-Zeichensatz betreiben, müssen Sie vor der Ausgabe die Strings durch die PHP-Funktion utf8_decode schicken.
Derzeit werden folgende Abfragen angeboten: Vereinslisten, Verbandslisten und Spielerkarteikarten.
Vereinslisten werden derzeit in drei Formaten angeboten: XML, CSV und als serialisiertes Array. Damit sollte die Einbindung in die eigene Website - PHP- oder andere Fachkenntnisse vorausgesetzt - leicht möglich sein. Unter folgender Adresse erreichen Sie z.B. die Liste des Vereins SV Berolina Mitte im CSV-Format:
http://www.schachbund.de/php/dewis/verein.php?zps=30052&format=csv
Statt der Nummer 30052 benutzen Sie die Nummer Ihres Vereins. Als format-Angaben sind neben csv noch xml (Standard) und array möglich.
Eine Sortierung der Liste ist im Moment noch nicht eingebaut, ebenso die Anzeige von Metadaten wie das Datum der Liste und der Vereinsname.
<?php
// Daten als Array laden (Zeichensatz UTF-8!)
$array = unserialize(file_get_contents("https://www.schachbund.de/php/dewis/verein.php?zps=30052&format=array"));
// Array für die Sortierung umbauen (nur relevante Spalten)
foreach($array as $key => $value)
{
$id[$key] = $value["id"];
$nachname[$key] = $value["nachname"];
$vorname[$key] = $value["vorname"];
$dwz[$key] = $value["dwz"];
$dwzindex[$key] = $value["dwzindex"];
}
// Nach DWZ und Index sortieren
array_multisort($dwz,SORT_DESC,SORT_NUMERIC,$dwzindex,SORT_DESC,SORT_NUMERIC,$id,$nachname,$vorname);
// Liste ausgeben
echo "<table>\n";
echo "<tr>\n";
echo "<th>Pl.</th>\n";
echo "<th>Name</th>\n";
echo "<th>DWZ</th>\n";
echo "<th>Index</th>\n";
echo "</tr>\n";
for($x=0;$x<count($dwz);$x++)
{
$platz = $x+1;
echo "<tr>\n";
echo "<td>$platz</td>\n";
echo "<td><a href=\"https://www.schachbund.de/spieler.html?pkz=".$id[$x]."\" target=\"_blank\">".$nachname[$x].",".$vorname[$x]."</a></td>\n";
echo "<td>$dwz[$x]</td>\n";
echo "<td>$dwzindex[$x]</td>\n";
echo "</tr>\n";
}
echo "</table>\n";
?>
Die Ausgabe von Verbandslisten ist seit etwa Anfang September 2013 möglich. Ein Beispielaufruf für den Berliner Schachverband (Format csv, kein Limit der Spielerzahl) sähe so aus:
http://www.schachbund.de/php/dewis/verband.php?zps=300&format=csv
Bei der Formatangabe ist neben csv auch array und xml (Standard bei fehlender format-Angabe) möglich. Als zusätzlicher, optionaler Parameter steht weiterhin limit zur Verfügung, gefolgt von einer Zahl - der Anzahl der Spieler.
Im Moment zeigt die DeWIS-Schnittstelle Spieler doppelt oder mehrfach, wenn diese in mehreren Vereinen Mitglied sind - auch wenn ein Verein davon nicht zum ausgewählten Verband gehört.
Die Verbandsliste ist nach DWZ sortiert. Ein PHP-Beispiel ist unnötig, da es nahezu identisch mit dem der Vereinsliste wäre.
Die Karteikarte eines Spielers im "Rohformat" (Daten identisch mit DeWIS-Schnittstelle bzw. DSB-Cache) erhalten Sie über diesen Link:
http://www.schachbund.de/php/dewis/spieler.php?pkz=10089054&format=csv
Im Beispiel entspricht die angegebene PKZ der des DSB-Webmasters Frank Hoppe. Beim Format sind csv (Standard) und array möglich.
Wegen der etwas komplizierteren Struktur habe ich vorerst auf eine XML-Version verzichtet - und ebenso auf ein PHP-Beispiel. Aufgrund der leichteren Umsetzung in PHP empfehle ich die Einbindung als Array. Die Daten müssen wie im Vereinslisten-Beispiel erst umgewandelt werden (unserialize), bevor das Array benutzt werden kann. Danach sollte der Zugriff auf die einzelnen Teilarrays mittels Schleifen o.ä. leicht umsetzbar sein.
Die CSV-Ausgabe erfordert etwas mehr Aufwand bei der Programmierung, da immer erst geprüft werden muß, ob gerade eine Daten- oder eine Kopfzeile bearbeitet wird. Die unter "auswerter" (sh. den Beispiellink) angebene Zahl ist die PKZ des zuständigen Wertungsreferenten. Sie müßte über eine separate Abfrage über die spieler.php in den Namen aufgelöst werden.