Mit PHP das Datum von gestern ermitteln:

$date = date('Y-m-d', time() - 86400);

Die aktuelle Zeit nehmen, davon 86400sec abziehen (entspricht 24h) und dann in das gewünschte Datumsformat casten.

Update: Besser geht das Ganze allerdings über folgendes Codesnippet:

$date = '2012-05-11';
date('Y-m-d', strtotime('-1 days', strtotime($date)));

Möchte man im Eclipse oder Zend Studio eine .htaccess Datei bearbeiten, so wird man diese im PHP-Explorer oder im Navigator standardmäßig nicht finden. Da die Datei mit einem “.” beginnt gilt sie als versteckte Datei und wird ausgeblendet.

Um diese versteckten Dateien dennoch wieder einzublenden, klickt ihr im PHP-Explorer auf das kleine Dreieck und wählt den Menüpunkt “Filters …” aus. Im sich öffnenden Fenster muss der Haken bei “.* resources” entfernt werden, damit zukünftig auch die versteckten Dateien angezeigt werden.

Um einen beliebigen “HTML”-Text in ein Zend-Formular zu integrieren sind folgende zwei Schritte notwendig:

1. Anlegen einer Klasse welche von Zend_Form_Element_Xhtml ableitet und den ViewHelper ‘formNote’ implementiert:

/**
 * Lädt den View-Helper Zend_View_Helper_FormNote
 */
class MyClass_Form_Element_Note extends Zend_Form_Element_Xhtml
{
    public $helper = 'formNote';
}

2. Instanzieren der angelegten Form_Element-Klasse innerhalb der Zend_Form:

$note = new MyClass_Form_Element_Note('note');
$note->setValue('<p><b>Ich</b> bin ein beliebiger HTML-Text</p>');
$this->addElement($note);

Decorator können ebenfalls wie gewohnt benutzt werden.

Wenn sich auf einem Server sehr viele Dateien in einem Verzeichnis befinden kommt man mit dem Befehl “ls” recht schnell an seine Grenzen. Abhilfe schafft hier der Befehl

ls | less

Damit könnt ihr euch die Dateien seitenweise anzeigen lassen und es kommt beim Anzeigen nicht zu ungewollten Wartezeiten.

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.

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

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.

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

Möchte man einen DELETE über mehrere Tabellen hinweg machen (mit Hilfe von Joins), kann es durchaus vorkommen, dass man beim Ausführen seines DELETE-Statements einen Fehler bekommt.

Nach längerer Suche bin ich auf folgenden Hinweis gestoßen.

Ich wollte folgendes SQL ausführen:

DELETE FROM
  table1
JOIN
  table2 ON [**onClause**]
JOIN
  table3 ON [**onClause**]
WHERE
  [**whereClause**]

Dieses Statement lieferte mir allerdings einen Syntaxerror zurück. Durch Einfügen von USING funktionierte meine Query dann so, wie sie sollte.

DELETE FROM
  table1
USING
  table1
JOIN
  table2 ON [**onClause**]
JOIN
  table3 ON [**onClause**]
WHERE
  [**whereClause**]

Alternativ funktioniert auch Folgendes:

DELETE table1 FROM
  table1
JOIN
  table2 ON [**onClause**]
JOIN
  table3 ON [**onClause**]
WHERE
  [**whereClause**]

Liegt wahrscheinlich daran, das die Query nicht wirklich weiß, aus welcher Tabelle sie die ermittelten Datensätze löschen soll.

Ich hoffe dem Einen oder Anderen so eine unnötige Sucherei erspart zu haben :)

Um das Rendern der View im Controller zu unterbinden, kann folgendes Codesnippet benutzt werden:

$this->_helper->viewRenderer->setNoRender(true);

Weitere Infos dazu lassen sich hier finden.