we:DevEdge

the webEdition code base

Tutorials

Vermischtes

Datenbankzugriffe

Autor: Dirk Einecke (we:DevEdge / appsolute GmbH) / Kommentare (1)
Geschrieben am 09.07.2006 um 17:08 Uhr / Letzte Änderung am 09.07.2006 um 17:08 Uhr

webEdition Systemvoraussetzungen:
webEdition-Basisversion


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)

  1. [2044] Kommentar von Rik am 25.03.2007 um 01:14 Uhr
    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";
        }
    }
    ?>
Kommentar hinzufügen
Um selber einen Kommentar schreiben zu können müssen Sie sich registrieren und einloggen.