Tutorials
Vermischtes
Datenbankzugriffe
Wenn Sie als Entwickler beim Arbeiten mit dem webEdition CMS in Ihren Vorlagen mittels PHP direkt auf die MySQL-Datenbank von webEdition zugreifen, dann sollten Sie dabei beachten, dass das webEdition CMS mit und ohne Präfix für die Namen der Datenbanktabellen installiert werden kann. Dies wirkt sich unmittelbar auf Ihre MySQL-Statements aus und kann beim Austausch von Vorlagen zwischen einem Entwicklungs- und dem Live-Server schnell zu unliebsamen Überraschungen führen.
Möchten Sie zum Beispiel Daten aus der Datenbanktabelle "tblfile" auslesen und verwenden direkt den Tabellennamen, dann bekommen Sie recht schnell Probleme, wenn webEdition mit einem Präfix für die Namen der Datenbanktabellen installiert wurde und die Tabelle "tblfile" dadurch den Namen "kunde1_tblfile" besitzt.
Doch dafür gibt es eine sehr einfache Lösung, die Sie sich immer zu Herzen nehmen sollten um Problemen in der Zukunft aus dem Weg zu gehen. Für alle Tabellen gibt es PHP-Konstanten.
Sollte Ihre MySQL-Query zum Beispiel so aussehen...
"SELECT ID FROM tblfile WHERE Path='".$path."'"
...dann sollten Sie diese besser so schreiben:
"SELECT ID FROM ".FILE_TABLE." WHERE Path='".$path."'"
Hier eine Liste der PHP-Konstantent für den Zugriff auf die Datenbanktabellen:
| Name der Datenbanktabelle | PHP-Konstante |
|---|---|
| tblbackup | BACKUP_TABLE |
| tblcategorys | CATEGORY_TABLE |
| tblcleanup | CLEAN_UP_TABLE |
| tblcontent | CONTENT_TABLE |
| tbldoctypes | DOC_TYPES_TABLE |
| tblerrorlog | ERROR_LOG_TABLE |
| tblfile | FILE_TABLE |
| tbllink | LINK_TABLE |
| tbltemplates | TEMPLATES_TABLE |
| tbltemporarydoc | TEMPORARY_DOC_TABLE |
| tblindex | INDEX_TABLE |
| tblpasswd | PASSWD_TABLE |
| tblprefs | PREFS_TABLE |
| tblrecipients | RECIPIENTS_TABLE |
| tblupdatelog | UPDATE_LOG_TABLE |
| tblfailedlogins | FAILED_LOGINS_TABLE |
| tblthumbnails | THUMBNAILS_TABLE |
| tblvalidationservices | VALIDATION_SERVICES_TABLE |
| tbluser | USER_TABLE |
| tbllock | LOCK_TABLE |
| tblschedule | SCHEDULE_TABLE |
| tblwebuser | CUSTOMER_TABLE |
| tblwebadmin | CUSTOMER_ADMIN_TABLE |
| tblobject | OBJECT_TABLE |
| tblobjectfiles | OBJECT_FILES_TABLE |
| tblobject_ | OBJECT_X_TABLE |
| tblanzeigeprefs | ANZEIGE_PREFS_TABLE |
| tblorders | SHOP_TABLE |
| tblworkflowdef | WORKFLOW_TABLE |
| tblworkflowstep | WORKFLOW_STEP_TABLE |
| tblworkflowtask | WORKFLOW_TASK_TABLE |
| tblworkflowdoc | WORKFLOW_DOC_TABLE |
| tblworkflowdocstep | WORKFLOW_DOC_STEP_TABLE |
| tblworkflowdoctask | WORKFLOW_DOC_TASK_TABLE |
| tblworkflowlog | WORKFLOW_LOG_TABLE |
| tbltodo | MSG_TODO_TABLE |
| tbltodohistory | MSG_TODOHISTORY_TABLE |
| tblmessages | MESSAGES_TABLE |
| tblmsgaccounts | MSG_ACCOUNTS_TABLE |
| tblmsgaddrbook | MSG_ADDRBOOK_TABLE |
| tblmsgfolders | MSG_FOLDERS_TABLE |
| tblmsgsettings | MSG_SETTINGS_TABLE |
| tblnewsletter | NEWSLETTER_TABLE |
| tblnewslettergroup | NEWSLETTER_GROUP_TABLE |
| tblnewsletterblock | NEWSLETTER_BLOCK_TABLE |
| tblnewsletterlog | NEWSLETTER_LOG_TABLE |
| tblnewsletterprefs | NEWSLETTER_PREFS_TABLE |
| tblnewsletterconfirm | NEWSLETTER_CONFIRM_TABLE |
| tblbanner | BANNER_TABLE |
| tblbannerclicks | BANNER_CLICKS_TABLE |
| tblbannerprefs | BANNER_PREFS_TABLE |
| tblbannerviews | BANNER_VIEWS_TABLE |
| tblexport | EXPORT_TABLE |




Kommentare (1)
Diese Liste ist anscheinend nicht mehr ganz aktuell.
Die Basisversion von webEdition 4 kennt zusätzlich:
tblnavigation NAVIGATION_TABLE
tblnavigationrules NAVIGATION_RULE_TABLE
tblhistory HISTORY_TABLE
tblshopvats WE_SHOP_VAT_TABLE
tblvoting VOTING_TABLE
Außerdem gibt es BACKUP_TABLE nicht mehr. Man kann getrost TBL_PREFIX.'tblbackup' verwenden, denn genauso hart kodiert steht es auch in webEdition/we/include/we_exim/backup/weTableMap.inc.php.
Dieser Schnipsel listet alle definierten Konstanten, die dem Namensschema *_TABLE entsprechen - nützlich wenn man weitere Module installiert hat.
<?php
$constants = get_defined_constants();
ksort($constants);
foreach ($constants as $name => $value) {
if (strpos($name, '_TABLE') !== FALSE) {
echo $name.' = '.$value."<br />\n";
}
}
?>