bncms

Einfache Datenbankvisualisierung und Inhaltsverwaltung

Anleitung

1. Arten der Darstellung und Konfiguration

Es gibt bei bncms 3 Möglichkeiten das CRUD zu konfigurieren und darzustellen. CRUD heisst Create Read Update Delete und bezeichnet die Darstellung und Bearbeitung von Datenbankinhalten. CRUD ist die Kernkompetenz von bncms.

- Darstellung im Adminbereich durch Grundkonfiguration
Darstellung der Tabellen / Formulare im Adminbereich unter Daten und Konfigration im Adminbereich unter Konfigration (Grundkonfiguration).

- Darstellung im Frontend durch Grundkonfiguration
Darstellung der Tabellen / Formulare im Frontendbereich und Konfigration im Adminbereich (Grundkonfiguration)

- Darstellung im Frontend durch manuelle Konfiguration
Darstellung der Tabellen / Formulare im Frontendbereich und Konfigration im Quellcode (manuelle Konfiguration). Geschieht durch ein Array das bei den Funktionsaufrufen mitgegeben wird.

Die Grundidee von bncms ist es, dass man Datentabellen im Backend und Frontend äusserst einfach durch einmalige Konfiguration zugänglich machen kann. Dies durch Konfiguration über eine Benutzeroberfläche folgend Grundkonfiguration genannt. Die Tabellen, ihre Felder und Relationen können so zentral konfiguriert werden und die Darstellungen in Front- und Backend greifen dann immer wieder auf diese Einstellungen zurück.

Wenn man zum Beispiel ein Formular im Frontend darstellen möchte und gleichzeitig die dazugehörenden Daten im Adminbereich zugänglich machen will (das ist ja eine immer wiederkehrende Aufgabenstellung), benötigt dies mit herkömmlichen Mitteln mehrfache Konfigurationen, einerseits für das Frontend und andererseits für die Darstellung im Adminbereich (für jede weitere Darstellung der Tabelle würden zusätzliche Konfigurationen notwendig). Mit bncms kann man eine Datenbanktabelle einmalig zentralisiert konfigurieren und immer wenn dann mit der Tabelle im Frontend oder Backend gearbeitet wird wird auf diese Konfiguration zurückgegriffen.

Man muss nur den entsprechenden Befehl displayTable() für die Tabellendarstellung oder displayRow() für das Formular ausführen. Wenn Änderungen an der Konfiguration vorgenommen werden müssen kann das über die manuelle Konfiguration (aManualFieldProperties-Array) geschehen.

Ausserdem wird es möglich, da die Konfigruation vollständig über eine Benutzeroberfläche ablaufen kann, dass man CRUD ganz ohne Kenntnisse von Programmierung durchführen kann eben wie beschreiben in 1.2 Darstellung im Adminbereich durch Grundkonfiguration.

Unter 1.2 bis 1.4 werden die drei Arten erklärt.

1.1 Installation des Skripts

- Hochladen des Skripts
- Eintragen des Datenbanklogins in die Datei inc/configuration/db-settings.inc.php
- Eintragen der Pfad-Konstanten in die Dateien bncms/start.inc.php für das Frontend und bncms/admin/start.inc.php. Das Frontend liegt meist auf der Grundebene und der Adminbereich im Ordner /bncms/admin.
- Login unter bncms/admin mit admin/admin
- Klick auf "Konfiguration".
- Neue Tabellen hinzufügen durch Klick auf "Neue Tabelle"
- Falls die Tabellen bereits in der Datenbank angelegt sind können die Felder importiert werden durch Klick auf "Struktur runterladen". Ansonsten Felder von Hand anlegen durch Ausklappen der Tabellennamen und dann auf "Feld erstellen". Danach muss die "Struktur hochgeladen" werden, immer wenn Änderungen an der MySQL Struktur vorgenommen wurden.
- Bei den Feldern die Typen wählen. Nto1 für n zu 1 Relationen. Tinymce für Wysiwyg-Editor (HTML Editor), Textarea, Datum für Unixtimestamp und Kalender, Passwort, Nummer, Bild für Bildupload usw.
- Den Feldern auch die Sichtbarkeit und Editierbarkeit der Benutzer zuweisen (unchangeable, hidden)
- Eventuell Tabellen n zu m Relationen zuweisen durch Klick auf "n zu m Relation erstellen".
- Danach "Struktur hochladen" um die Änderungen abzuspeichern und eventuelle Änderungen an der Datenbank vorzunehmen. (n zu m Tabellen erstellen, Felder und Tabellen in MySQL erstellen usw)
- Sichtbarkeit der Relationen konfigurieren unter "Konfiguration > Relationen-Sichtbarkeit". Dies ist notwendig damit die relationierten Daten angezeigt werden, sie erscheinen als Ordnersymbol bei den Einträgen. Am besten Sie aktivieren einmal alle für ihren Benutzer um zu sehen wie es funktioniert.
- Dann können die Daten betrachtet und bearbeitet werden unter "Daten".
- Redakteur Logins erstellen und ihnen Felder und Tabellen zuweisen.

1.1 Darstellung im Adminbereich durch Grundkonfiguration

Bei dieser Vorgehensweise gibt man Tabellen im Adminbereich von bncms unter Daten aus und man konfiguriert sie auch über den Adminbereich unter Konfiguration. Es ist dazu kein Funktionsaufruf oder Eingreifen in den Code nötig und auch kein FTP-Zugriff.


1.1.1 Grundkonfiguration einer einfachen Tabelle Beispiel Kontaktanfragen

So konfiguriert man eine Tabelle im Adminbereich:
- Unter "Konfiguration" auf "Neue Tabelle". Name "contact" und sichtbar für Admin auswählen.
- Danach auf "Struktur runterladen" klicken um die Felder zu importieren, falls die Tabelle schon in der Datenbank existiert. Ansonsten erstellen der Felder title, text, name, email, date durch Feld hinzufügen und danach "Struktur hochladen" und "Querystack ausführen" um die Felder und Tabelle in der Datenbank zu erstellen.
- Dann sollte man den Feldern noch Typen zuweisen, für text würde ich Textarea wählen und für date den Typ Date. Bei den anderen ist Textfield (Standart) in Ordnung.
- Bei den Feldern id und date müssen bei hidden webuser gewählt werden, sonst werden sie im Frontend angezeigt.
- Bei den Feldern name, email, text und title müssen required gewählt werden und es kann eine min_length gewählt werden. Das ist für die Validierung, damit sie nicht leer abgeschickt werden können.
- Dann kann man die Tabelle ihm Backend bearbeiten unter "Daten".

1.2 Darstellung im Frontend durch Grundkonfiguration

Diese Vorgehensweise bedeutet, dass man Tabellen im Adminbereich konfiguriert und im Frontend ausgibt mit displayTable oder displayRow. Die Tabelle muss beim Funktionsaufruf mit der ID angesprochen sonst nimmt es nicht die Konfiguration vom Backend. Dann können die Tabellen-, Feld- und Relationseigenschaften überschreiben werden mit dem aManualFieldProperties-Array.


1.2.1 Nötige Inkludierungen für Verwendung im Frontend

In die Datei project_config.php, die auf der Grundebene des Projekts liegt, kommt folgendes
<? define(RELATIVEPATHAPP,""); define(APPNAME,"bncms"); define(ADMINMAIL, "email@adresse.ch"); define(SALT, "SALT WERT VERGEBEN"); ?>
Vor jeder anderen Ausgabe in den Dateien in welchen mit bncms gearbeitet werden soll kommt folgendes
<? include("bncms/start.inc.php"); ?>
In den HTML-Kopfbereich der Dateien in welchen mit bncms gearbeitet werden soll kommt folgendes
<script type="text/javascript" src="bncms/jquery.js"></script> <script type="text/javascript" src="bncms/lib/jquery-visible-master/jquery.visible.js"></script> <script>RELATIVEPATH = "<?= RELATIVEPATH?>";</script> <script type="text/javascript" src="bncms/frontend.inc.js"></script> <link rel="stylesheet" href="bncms/lib/jquery-ui/jquery-ui.min.css"> <script src="bncms/lib/jquery-ui/jquery-ui.min.js"></script> <link rel="stylesheet" href="bncms/frontend.css">


1.2.1 Generierung eines einfachen Formulars: Beispiel Kontaktformular

Meist schreiben Formulare nur in eine Tabelle. Dieser Fall ist standardmässig vorbereitet und man kann das gesamte Formular samt Validierung, Speicherung und Sicherheit mit nur einem Funktionsaufruf ausgeben. Falls in mehrere Tabellen gespeichert werden soll kann das einfach in die After-Funktion reingeschrieben werden mit simplen MySQL-Anfragen, dabei muss allerdings auf korrektes escapen mit mysql_real_escape_string geachtet werden.

In den Körper kommt dies
<h3>Kontaktformular</h3><br> <? if ($_POST[after] == "after_contact") { mail("", $_POST[title], $_POST[text]); echo "<script> alert('Nachricht gesendet.');</script>"; } $q = "CREATE TABLE IF NOT EXISTS `contact` ( `id` int(11) unsigned NOT NULL auto_increment, `name` varchar(25) NOT NULL default '', `email` varchar(50) NOT NULL default '', `title` varchar(50) NOT NULL default '', `text` text NOT NULL default '', `date` int(30) NOT NULL default '0', PRIMARY KEY (`id`) )"; q($q); displayRow( '', 'id', 'NUMMER_DER_TABELLE_IM_ADMINBEREICH', "<input type=hidden name=after value='after_contact'><input type=hidden name=date value='".time()."'>", "", $a ); ?>
Jetzt muss die Tabelle konfiguriert werden im Adminbereich (Grundkonfiguration). Wie das geschieht ist unter 1.1.1 beschrieben.

1.2.2 Generierung einer read-only Tabelle: Beispiel Kontaktanfragen

Jetzt gebe ich die Tabelle einfach aus in die mit dem vorherigen Kontakformular rein geschrieben wird. Dazu brauche ich eigentlich nur diesen einfachen Befehl. Die Konfiguration von project_config.php und den Code im Kopfbereich sowie die Inkludierung der start.inc.php ist gleich wie im Formular-Beispiel. Die Nummer der Tabelle contact im Backend ist 4, es wird als alt-Text der Tabellentitel in der "Daten"-Ansicht angezeigt.
<h3>Kontaktanfragen</h3><br> <?php displayTable(4,"id"); ?>

Kontaktanfragen