Werfen wir eine Blick auf diese Datei. Die Datei wird in dem Unterordner inc gespeichert.
<?
include ("tpnews/inc/opendb.inc.php"); // DB öffen
// Auslesen der News
$q_select="SELECT * FROM tp_news ORDER BY startdatum DESC, startzeit DESC ";
$r_select=mysql_query($q_select);
while ($strAusgabe=mysql_fetch_array($r_select, MYSQL_ASSOC))
{
// Einlesen der Vorlage news.inc.php
$strVorlage="";
$arrVorlageZeilen=file("tpnews/tpl/news.inc.php");
// Zusammensetzen der Vorlage
foreach ($arrVorlageZeilen as $Vorlage) { $strVorlage.=$Vorlage; }
// Datum zusammenstellen
$intDatePart=explode("-", $strAusgabe[startdatum]);
$strDatum=$intDatePart[2].".".$intDatePart[1].".".$intDatePart[0]." ".$strAusgabe[startzeit];
// Ersetzen der Platzhalter ##NAME##
$strVorlage=ereg_replace("##DATUM##",$strDatum,$strVorlage);
$strVorlage=ereg_replace("##AUTOR##",$strAusgabe[autor],$strVorlage);
$strVorlage=ereg_replace("##TITEL##",$strAusgabe[titel],$strVorlage);
$strVorlage=ereg_replace("##NACHRICHT##",$strAusgabe[nachricht],$strVorlage);
// Augabe der News
echo $strVorlage;
}
?>
Zunächst wird wieder die Datei opendb.inc.php mit include eingelesen. Der Pfad zu der Datei geht dieses mal aber von der Datei ausgabe.php aus und startet daher mit "tpnews/inc/". Die Nachrichten, die mit den letzten Kursteil gespeichert wurden, werden hier mit eine SQL-Befehl ausgelesen. Dieser lautet SELECT * FROM tp_news ORDER BY startdatum DESC, startzeit DESC. Mit dem SQL-Befehl SELECT werden Daten aus der Datenbank gelesen (vgl. Teil 1). Hier werden * = alle Daten aus der Tabelle (FROM) tp_news eingelesen. Der Teil SELECT * FROM tp_news würde also schon reichen um alle Nachrichten aus der Datenbank auszulesen. Bei den Nachrichten ist es aber wichtig in welcher Reihenfolge die Datensätze auf der Internetseite angezeigt werden. Daher benutzt man an dieser Stelle ORDER BY was eine Sortierung der Daten bewirkt. Gibt man mehrere Spaltennamen mit Komma getrennt an, werden die Daten zunächst nach den ersten Sortiert, dann nach den Folgenden. In diesem Fall sortiert man zunächst nach dem Datum (startdatum) und danach nach der Zeit (startzeit) die man bei der Eingabe angegeben hat. Der Zusatz DESC bewirkt, dass die Daten nicht wie normal Aussteigend sortiert werden, sondern absteigend. Das größte = jüngste Datum steht am Beginn und somit die neuste News oben.
Wiederholend zu Teil 1 wird dieser SQL-Query die Datensätze dann über mysql_query und die while-Schleife mit mysql_fetch_array in ein Array eingelesen. Über den Zusatz MYSQL_ASSOC stehen uns die Daten dann in dem Array $strAusgabe über die Spaltennamen zur Verfügung.
Als nächstes betrachten wir was innerhalb der while-Schleife mit den Daten aus der DB geschieht. Als erstes erstellt man eine neue Variable. In $strVorlage wird im nächsten Schritt die Vorlage Datei news.inc.php eingelesen. Eh ich auf den Sinn dieser Aktion eingehe hier der Inhalt von news.inc.php (welche im Ordner tpl zu erstellen ist):
Die Datei beinhaltet HTML-Code der nötig ist um die News auszugeben. Hier ist es eine einfache Konstruktion, die in der Datei ausgabe.php (Codebox 3.1) an der Stelle an der <? include ("tpnews/inc/hp_ausgabe.inc.php"); ?> steht pro News 1 mal ausgegeben wird. Die Datei kann beliebig verändert werden, es sind also auch Tabellenzeilen oder andere anpassungen an gewünschte Layout möglich. Wichtig ist, dass die Variablen die in "##" eingeschlossen sind erhalten bleiben. Diese werden später durch den entsprechenden Wert aus der DB ersetzt.
Jetzt aber zurück zu dem Code aus der Codebox 3.2. Die Zeile $arrVorlageZeilen=file("tpnews/tpl/news.inc.php"); liest den Inhalt der Datei news.inc.php zeilenweise in das neue Array ein. Über die nächste Zeileforeach ($arrVorlageZeilen as $Vorlage) { $strVorlage.=$Vorlage; } werden die einzelnen Zeilen in der Variable $strVorlage zusammengefasst. Dabei wird mit foreach alle Zeilen des Array durchgegangen und über .=an die Zielvariable angehangen. Jetzt ist auch zu verstehen, warum die Variable zuvor angelegt bzw auf ="" gesetzt werden muss. Kommentiert man Probeweise die Zeile $strVorlage=""; mit // aus, sieht man das die erste News einmal abgedruckt wird, die zweite zweimal etc.
Als nächstes muss man aus den beiden Datensätzen Startzeit und Startdatum, die man in Teil 2 in mySQL konforme Anzeigen umgewandelt hat wieder in das Wunschformat umschrieben. Hier wird die Ausgabe auf TT.MM.JJJJ HH:MM:SS gesetzt. Es ist aber auch jedes andere Format möglich, welches dann mit den erworbenen Wissen erstellt werden kann. Wichtig ist, das das Ergebnis in der Variable $strDatumlandet.
Im Anschluss werden die Platzhalter in der Datei news.inc.php durch die entsprechenden Werte ersetzt. Dieses erfolgt über die Zeilen $strVorlage=ereg_replace("##AUTOR##",$strAusgabe[autor],$strVorlage);. Die Variablen werden zum besseren Verständnis man durch eine Erläuterung ersetzt: Variable_in_der_das_Ergebniss_steht = ereg_replace("PLatzhalter_in_news.inc.php",Daten_aus_der_DB,Datei_in_der_nach_dem_PLatzhalter_gesucht_wird);
Sind dann als Platzhalter ersetzt, wird die Variable über echo ausgegeben und erscheint so auf der Internetseiten. Dieser Vorgang wird für alle Datensätze wiederholt.