PHP: SQL-Datum in d.m.Y umwandeln

In einem kleinen Nebenprojekt sollte auf eine bestehende Datenbank zugegriffen werden, um eine Geburtstagsliste darzustellen.

Die Darstellung in einer Tabelle ist recht schnell erstellt:

<?php
include("database.php");
 
$ergebnis = mysql_query("SELECT * FROM Tabelle ORDER BY Geburtstag");
 
echo '<table border="1; style="text-align: center">';
  echo "<tr>";
  echo "<td><b>Nachname</b></td>";
  echo "<td><b>Vorname</b></td>";
  echo "<td><b>Geburtstag</b></td>";
  echo "</tr>";
 
     while($row = mysql_fetch_object($ergebnis))
 
{
  echo "<tr>";
  echo "<td>". $row->Nachname . "</td>";
  echo "<td>". $row->Vorname . "</td>";
  echo "<td>". $row->Geburtstag . "</td>";
  echo "</tr>";
}
echo "</table>";
?>

Nun wird auch das Datum angezeigt bzw. falls kein Datum eingetragen ist ein leeres Feld. Allerdings wird das Datum im SQL-Format wie 1995-11-29 angezeigt. Eigentlich sollte das Format wie folgt angezeigt werden: 29.11.1995.

Dieses ist mit dem folgenden Austausch des Befehlssatzes möglich:

echo "<td>". date("d.m.Y ", strToTime($row->Geburtstag)) . "</td>";

Jetzt gibt es leider ein neues Problem, da ein NULL-Wert ebenfalls umgewandelt wird und nun dadurch ein Datum angezeigt wird: 01.01.1970

Auch das kann abgefangen werden, damit wieder ein Leerfeld erscheint:

if (!empty($row->Geburtstag)) { echo "<td>". date("d.m.Y ", strToTime($row->Geburtstag)) . "</td>"; } else {echo "<td></td>"; }

Nun wird das Datum wie angefordert angezeigt und falls es einen NULL-Wert gibt entsprechend ein leeres Feld auszugeben.

Tipp: Der Eintrag „include(„database.php“);“ stammt aus dem vorherigen Artikel.

PHP: SQL-Verbindung herstellen

Bei einigen Web-Projekten arbeitet man mit 2 verschiedenen Bereichen:

  • Test-Umgebung
  • Produktiv-Umgebung

Vieles wird erst in der Test-Umgebung mit einer Test-Datenbank erstellt und geprüft. Irgendwann kommt aber auch der Zeitpunkt, wo man es in die Release-Phase bringen und es in der Live-Umgebung zu mindestens prüfen möchte.

Man kann unter PHP die SQL-Verbindung der Datenbank in eine separate Datei (in diesem Beispiel mit dem Namen „database.php“) auslagern, die dann wie folgt aussieht:

<?php
mysql_connect("localhost", "Benutzer","Passwort") or die ("Keine Verbindung möglich");
mysql_select_db("Datenbankname") or die ("Die Datenbank existiert nicht.");
?>

Die Werte „Benutzer“, „Passwort“ und „Datenbankname“ müssen natürlich durch die eigenen Zugangsdaten ersetzt werden. Auch der Eintrag „localhost“ kann in einen Servernamen angepasst werden.

In die Standard-PHP-Datei, z.B. index.php, muss nun nur die folgende Zeile eingefügt werden:

include("database.php");

Entsprechend werden die Daten zum Verbindungsaufbau genutzt. Durch einen Austausch der Datei kann zum Beispiel auch zwischen Test- und Produktiv-Umgebung gewechselt werden, ohne immer am Code zu arbeiten.

Natürlich kann die Verbindung auch in die eigentliche Datei mit dem selben Aufruf eingearbeitet werden.