XML-Daten über PHP ausgeben

Bei der Seite TDM-KJP gibt es eine Liste von Kliniken, die in alphabetischer Reihenfolge angezeigt werden sollen. Da ich es damals in Columns unter YAML3 angelegt habe, muss ich, um eine Klinik dazwischen einzufügen, alle darauf folgenden aus dem Schema löschen und neu in das Column-Gerüst einfügen.

So sah eine Reihe mit 3 Kliniken in der HTML-Struktur aus:
<div class="subcolumns"> <div class="c66l"> <div class="c50l"> <div class="subcl">

<p>Klinik1</p>

</div> </div> <div class="c50r"> <div class="subcl">

<p>Klinik2</p>

</div> </div> </div> <div class="c33r"> <div class="subcl">

<p>Klinik3</p>

</div> </div> </div>
</div>

Mein Ziel war, die Kliniken aus einem XML-Dokument, das schon vorlag, in diese Struktur zu bringen.

Die XML-Datei sieht so aus:
<ROOT>
<KLINIK>
<NAME>Name der Klinik</NAME>
<DIREKTOR>Name Direktor</DIREKTOR>
<STRASSE>Strasse</STRASSE>
<ORT>Ort</ORT>
<LINK>Homepage</LINK>
</KLINIK>
...
</ROOT>

Also erstmal die Datei einlesen und zerlegen:

$daten = file_get_contents(„kliniken.xml“); // Datei einlesen
$daten = explode(„<KLINIK>“ , $daten); // Inhalt in ein Array zerlegen

dann die Daten aus dem Array lesen:

 for ($zaehler = 1; $i &lt; count($daten); $i++) {
preg_match("~&lt;NAME&gt;(.*)&lt;/NAME&gt;~" , $daten[$i] , $name); // Name auslesen
preg_match("~&lt;DIREKTOR&gt;(.*)&lt;/DIREKTOR&gt;~" , $daten[$i] , $direktor); // Direktor auslesen
preg_match("~&lt;STRASSE&gt;(.*)&lt;/STRASSE&gt;~" , $daten[$i] , $strasse); // Strasse auslesen
preg_match("~&lt;ORT&gt;(.*)&lt;/ORT&gt;~" , $daten[$i] , $ort); // Ort auslesen
preg_match("~&lt;LINK&gt;(.*)&lt;/LINK&gt;~" , $daten[$i] , $link); // Link auslesen 

Jetzt brauche ich eine Unterscheidung in 3 verschiedene Spalten. In der ersten Spalte brauche ich ein div der Klasse „subcolumns“ um den float aufzuheben, damit bei unterschiedlichen Höhen der Inhaltsblöcke die Struktur nicht zerstört wird.

In der dritten Spalte muss das div natürlich wieder geschlossen werden.

Die mittlere Spalte enthält den normalen Inhaltsblock mit der Struktur.

Der Modulo-Operator (%) ist hier die Lösung. Er gibt bei einer Division den Rest aus, also bei 10/3 ist das Ergebnis 1.

switch ($mal % 3) {
case 0:
// letzte Spalte
echo "&lt;div class='c33l_k'&gt;&lt;div class='subcl_k'&gt;&lt;p&gt;&lt;b&gt;".$name[1]."&lt;/b&gt;&lt;/p&gt;n";
echo "&lt;p&gt;Direktor: ".$direktor[1]."&lt;/p&gt;n";
echo "&lt;p&gt;".$strasse[1]."&lt;br /&gt;n".$ort[1]."&lt;/p&gt;n";
echo "&lt;a href='" . trim($link[1]) . " target='_blank'&gt;Homepage&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;n";
$mal++;
break;

case 1:
// Erste Spalte
echo "n&lt;!-- Neue Reihe !--&gt;nn&lt;div class='subcolumns'&gt;&lt;div class='c33l_k'&gt;&lt;div class='subcl_k'&gt;&lt;p&gt;&lt;b&gt;".$name[1]."&lt;/b&gt;&lt;/p&gt;n";
echo "&lt;p&gt;Direktor: ".$direktor[1]."&lt;/p&gt;n";
echo "&lt;p&gt;".$strasse[1]."&lt;br /&gt;n".$ort[1]."&lt;/p&gt;n";
echo "&lt;a href='" . trim($link[1]) . " target='_blank'&gt;Homepage&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;n";
$mal++;
break;

default:
// mittlere Spalte
echo "&lt;div class='c33l_k'&gt;&lt;div class='subcl_k'&gt;&lt;p&gt;&lt;b&gt;".$name[1]."&lt;/b&gt;&lt;/p&gt;n";
echo "&lt;p&gt;Direktor: ".$direktor[1]."&lt;/p&gt;n";
echo "&lt;p&gt;".$strasse[1]."&lt;br /&gt;n".$ort[1]."&lt;/p&gt;n";
echo "&lt;a href='" . trim($link[1]) . " target='_blank'&gt;Homepage&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;n";

$mal++;
break;

};

jetzt noch den Zähler $mal auf 1 setzen und über dem Beginn der for-Schleife einfügen.

Hier der komplette Code:

&lt;?php
$daten = file_get_contents("kliniken.xml"); // Datei einlesen
$daten = explode("&lt;KLINIK&gt;" , $daten); // Inhalt in ein Array zerlegen
$mal = 1;
for ($zaehler = 1; $i &lt; count($daten); $i++) {
preg_match("~&lt;NAME&gt;(.*)&lt;/NAME&gt;~" , $daten[$i] , $name); // Name auslesen
preg_match("~&lt;DIREKTOR&gt;(.*)&lt;/DIREKTOR&gt;~" , $daten[$i] , $direktor); // Direktor auslesen
preg_match("~&lt;STRASSE&gt;(.*)&lt;/STRASSE&gt;~" , $daten[$i] , $strasse); // Strasse auslesen
preg_match("~&lt;ORT&gt;(.*)&lt;/ORT&gt;~" , $daten[$i] , $ort); // Ort auslesen
preg_match("~&lt;LINK&gt;(.*)&lt;/LINK&gt;~" , $daten[$i] , $link); // Link auslesen (wird in $link[1] gespeichert)

switch ($mal % 3) {
case 0:
// letzte Spalte
echo "&lt;div class='c33l_k'&gt;&lt;div class='subcl_k'&gt;&lt;p&gt;&lt;b&gt;".$name[1]."&lt;/b&gt;&lt;/p&gt;n";
echo "&lt;p&gt;Direktor: ".$direktor[1]."&lt;/p&gt;n";
echo "&lt;p&gt;".$strasse[1]."&lt;br /&gt;n".$ort[1]."&lt;/p&gt;n";
echo "&lt;a href='" . trim($link[1]) . " target='_blank'&gt;Homepage&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;n";
$mal++;
break;

case 1:
// Erste Spalte
echo "n&lt;!-- Neue Reihe !--&gt;nn&lt;div class='subcolumns'&gt;&lt;div class='c33l_k'&gt;&lt;div class='subcl_k'&gt;&lt;p&gt;&lt;b&gt;".$name[1]."&lt;/b&gt;&lt;/p&gt;n";
echo "&lt;p&gt;Direktor: ".$direktor[1]."&lt;/p&gt;n";
echo "&lt;p&gt;".$strasse[1]."&lt;br /&gt;n".$ort[1]."&lt;/p&gt;n";
echo "&lt;a href='" . trim($link[1]) . " target='_blank'&gt;Homepage&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;n";
$mal++;
break;

default:
// mittlere Spalte
echo "&lt;div class='c33l_k'&gt;&lt;div class='subcl_k'&gt;&lt;p&gt;&lt;b&gt;".$name[1]."&lt;/b&gt;&lt;/p&gt;n";
echo "&lt;p&gt;Direktor: ".$direktor[1]."&lt;/p&gt;n";
echo "&lt;p&gt;".$strasse[1]."&lt;br /&gt;n".$ort[1]."&lt;/p&gt;n";
echo "&lt;a href='" . trim($link[1]) . " target='_blank'&gt;Homepage&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;n";

$mal++;
break;

};
};

?&gt;

Date
Categories
Tags
Permalink
Status

Veröffentlicht:29. März 2012

Allgemein Blog

Bookmark the permalink

Kommentieren oder einen Trackback hinterlassen: Trackback-URL


Einen Kommentar hinterlassen

Your email is never published nor shared. Erforderliche Felder sind mit * markiert

Sie können diese HTML-Tags und -Attribute verwenden <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*
*