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
Tags: Datenbank, Delete, Join, SQL
Posted in SQL |
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.
Tags: Controller, Rendering, View, Zend Framework
Posted in News, Zend Framework |
Um einen Hover-Effekt auf Tabellenzeilen zu erzielen kann man folgende CSS-Notation benutzen:
tr:hover td{
background-color: #F0F0F0;
cursor:pointer;
}
Ein einfaches tr:hover funktioniert in diesem Fall nicht, da tr-Elemente keine Hintergrundfarbe besitzen.
Aber Achtung: Der IE kann dies u.U nicht darstellen.
Posted in News |
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'));
Posted in News, Zend Framework |
Falls ihr in eurem Projekt auf die Javascript-Bibliothek jQuery nicht verzichten wollt, könnte der folgende Artikel interessant sein. Ich werde erklären, wie man über die Integration der ZendX Library jQuery im Projekt verfügbar macht und aktiviert.
Read on »
Tags: jQuery, Zend Framework, ZendX
Posted in Zend Framework |
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
Read on »
Tags: Error, Module, Zend Framework
Posted in Zend Framework |
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
Tags: CSS3, Fallback, Internet Explorer 6, Javascript
Posted in CSS |
Das Wechseln des Design in Abhängigkeit von eurem Modul kann im Zend Framework über ein Plugin realisiert werden. Legt dazu im Ordner application/Plugin/Layout die Datei Changer.php an und füge folgenden Inhalt in die Datei:
class Plugin_Layout_Changer extends Zend_Controller_Plugin_Abstract
{
public function routeShutdown(Zend_Controller_Request_Abstract $request)
{
//Prüft ob eine Layoutdatei in Abhängigkeit vom Modulnamen existiert
if(is_file(Zend_Layout::getMvcInstance()->getLayoutPath()
.$request->getModuleName().'.phtml'))
{
//wenn ja, dann diese setzen
Zend_Layout::getMvcInstance()->setLayout($request->getModuleName());
}
else
{
//wenn nicht, dann Standardlayout setzen, hier: bibo
Zend_Layout::getMvcInstance()->setLayout('bibo');
}
}
}
Jetzt müsst ihr noch in eurer Bootstrap-Datei eurer Anwendung das Plugin initialisieren. Fügt dazu einfach folgende Methode eurer Bootstrap-Klasse hinzu:
protected function _initLayoutChanger()
{
$this->bootstrap('frontController');
$this->getResource('frontController')
->registerPlugin(new Plugin_Layout_Changer());
}
Überprüft, ob folgende Einträge in eurer application.ini vorhanden sind:
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
autoloadernamespaces.0 = "Plugin_"
Nun ändert sich automatisch das Layout, in Abhängigkeit von eurem Modulnamen. Achtet darauf, dass die entsprechende Layoutdatei im Ordner application/layouts/scripts/ genauso benannt ist, wie euer Ordnername des Moduls. Bei mir existieren beispielsweise im Ordner application/modules/ die Module “bibo” und “login”. Demzufolge heißen meine Layoutscripte im Ordner application/layouts/scripts auch “bibo.phtml” und “login.phtml”. Existiert keine entsprechende Layoutdatei, wird das in der Changer.php im else Zweig angegebene Layout geladen (in meinem Fall das Layoutscript bibo.phtml).
Tags: Layout, Module, Zend Framework
Posted in News, Zend Framework |
Um Layout- & Viewscripte zu entschlacken und von Programmcode zu befreien (MVC-Prinzip), gibt es in Zend die Möglichkeit View-Helper einzusetzen. View Helper können auch dazu verwendet werden, um wiederkehrenden Code in seperaten Dateien abzulegen und somit doppelten Code zu vermeiden.
Ich erkläre das Prinzip beispielhaft für das Einbinden eines Copyrights incl. Jahreszahl (bspw.: © 2005 – 2011).
Read on »
Tags: View Helper, Zend Framework
Posted in News, Zend Framework, Zend Tutorials |
Wir wollen unsere Bibliotheksanwendung um ein Login erweitern. Dafür benötigen wir für das Eingabeformular ein neues Modul. Die eigentliche Authentifikation des Nutzers soll über ein Plugin (angelehnt an folgendes Tutorial) realisiert werden. Plugins haben bei Zend den Vorteil, dass sie im Anwendungszyklus nach der Initialisierung stets verfügbar sind. Auf den Loginstatus kann also später einmal innerhalb der Anwendung von überall aus zugegriffen werden.
Read on »
Tags: Login, Zend Framework, Zend_Auth, Zend_Form
Posted in News, Zend Framework, Zend Tutorials |