PHP Datumsumwandlung von 05.04.12 in 2012-04-05

Beim Konvertieren von Datumsangaben in PHP kann es, vorrausgesetzt man macht es nicht wohlüberlegt, schon einmal zu der einen oder anderen Überraschung kommen.

Möchte man beispielsweise das Datum 05.04.12 einfach per

$date = date('Y-m-d', strtotime('05.04.12'));

konvertieren, dann bekommt man häufig das aktuelle Datum ausgegeben. Warum ist das so? Meiner Meinung nach, liegt das daran, dass PHP das Datum nicht korrekt in einen Timestamp auflösen kann. Es kann also nicht automatisch ermittelt werden, was hier Tag, Monat und Jahr sein soll. Bei einem Datum 05.04.2012 ist das allerdings kein Problem. Da kann strtotime() den korrekten Timestamp problemlos extrahieren.

Wie sieht ein möglicher Lösungsansatz aus?

$dateTemp = explode('.', '05.04.12');
$date = date('Y-m-d', mktime(0, 0, 0, $dateTemp[1], $dateTemp[0], $dateTemp[2]));

Somit erhält man das gewünschte Datum. Wichtig kann das werden wenn man nicht nur ein statisches Datum, wie in diesem Fall hat, sondern die Datumsangabe bspw. per Variable übergeben wird.

Zend_Db_Select mit IN in WHERE-Clause

Möchte man über Zend_Db_Select in einer WHERE-Clause das IN benutzen, so muss man die für das IN übergebenen Werte nicht selber per implode() auseinander klamüsern. Dies kann das Zend_Db_Select für euch übernehmen. Siehe dazu nachfolgendes Beispiel:

$data = array(1,3,4);
$select->where('status_id IN(?)', $data);

Gefunden via Stackoverflow

SQL: Werte kopieren und anpassen

Wenn man in SQL Werte in einer Datenbank kopieren möchte, aber einzelne Werte vor dem Einfügen anpassen möchte, so kann das über folgendes Query realisiert werden:

INSERT INTO tabelle (
 spalte1,
 spalte2,
 spalte3,
 spalte4
)
SELECT
 "neuer wert" as spalte1,
 tabelle.spalte2,
 tabelle.spalte3,
 tabelle.spalte4
FROM tabelle
WHERE tabelle.spalte1 = "alter wert";

Aus der Tabelle „tabelle“ werden die Spalten 2-4 ausgelesen und Spalte 1 mit dem neuen Wert ersetzt, wenn Spalte 1 den Wert „alter Wert“ annimmt.

Unter Linux in Dateien suchen

Um in Linux in Dateien (auch in Unterordnern) zu suchen, kann der grep-Befehl genutzt werden:

grep -ir "mein suchbegriff" *

Bei der oben angebenen Syntax wird in ab dem Verzeichnis, in dem ihr euch gerade befindet und in allen Unterverzeichnissen nach Dateien gesucht. In diesen Dateien wird dann nach „mein suchbegriff“ ohne Rücksicht auf Groß- und Kleinschreibung gesucht.

-i => ohne auf Groß- / Kleinschreibung zu achten (ignore case)
-r => rekursives Suchen
* => in allen Dateien/Ordnern

Datumsumwandlungen mit Zend_Date

Um Datumsangaben vom deutschen Datumsformat in das englische Datumsformat umzuwandeln (bspw. für eine Datenbankquery), kann man Zend_Date benutzen. Folgendes Codesnippet zeigt, wie einfach eine solche Datumsumwandlung realisiert werden kann.

$date = new Zend_Date('29.11.2011', 'd.m.Y');
$date->toString('Y-m-d');

Als Output bekommt man ein Datum der Form ‚2011-11-29‘. Klappt natürlich auch andersrum.

Alternativ kann man das Ganze auch über natives PHP umsetzen. Das Ganze sieht dann folgendermaßen aus:

$date = date('Y-m-d', strtotime('29.11.2011'));

Zend Framework – Errorhandling in Modul auslagern

Bei größeren Projekten kommt man evtl. auf die Idee das Errorhandling der Webapplikation in ein eigenes Modul auszulagern. Mit Hilfe des Zend Frameworks sind dazu drei Schritte notwendig:

  • Error-Modul anlegen
  • Error-Plugin zum Setzen des Standard-Error-Moduls
  • application.ini und Bootstrap.php der Anwendung konfigurieren

Weiterlesen →

CSS3 im Internet Explorer 6

Um neue Webtechnologien, wie beispielsweise CSS3 auch im Internet Explorer 6 nutzen zu können, gibt es verschiedene Ansätze. Ein paar davon hat euch das Smashing Magazine zusammengestellt. Es wird dabei auf Javascriptlösungen, sowie sinnvolle Fallbacks eingegangen. Für die Grafiker und Frontendentwickler unter euch auf jeden Fall ein Lesetipp.

Link: CSS3 in älteren Browsern