MySQL Ajax Table Editor – PHPmyAdmin für den Kunden

„Ich möchte aber meine Seminarliste selber online pflegen können!“ „Die Preisliste meiner Kollektion kleiner Filzwichtel will ich selber aktualisieren!“ „Ich habe eine Adressliste unseres Vorstandes. Da will ich Sie nicht jedes Mal anrufen müssen, wenn sich was ändert.“ Kennen Sie solche Kundenforderungen?

Die ideale Lösung wäre PHPmyAdmin, haben Sie als Webworker bestimmt schon öfter gedacht; ich jedenfalls habe es. Wenn der Kunde mir damit nur nicht gleich die ganze Datenbank zerschießen könnte. Jetzt gibt es eine Lösung. Sie heißt MySQL Ajax Table Editor und ist unter einer GNU Lizenz kostenfrei verwendbar.

Die Problemstellung

Ich habe relativ häufig den Fall, dass ein Kunde Daten bereits in einer Access-Datenbank verwaltet und diese Datenbank gern auch online verwenden möchte. In aller Regel handelt es sich um Datenbanken mit einer einzigen Tabelle. Enthalten sind Adressen, Termine, Preise oder sonstige in Listenform zu verwaltende Daten.

Solange diese Daten online nur angezeigt werden sollen, muss nicht lang gegrübelt werden. Access in MySQL umgewandelt und eine Select-Abfrage programmiert, sowie das Anzeigeergebnis hübsch formatiert und fertig. Will der Kunde aber selbst Hand anlegen können, wird es komplizierter, jedenfalls zeitintensiver, ohne dass der Kunde verstehen würde, dass und warum das so ist.

In solchen Fällen programmierte ich in der Vergangenheit stets ASP-basierte Sites und beliess die Datenbank im Accessformat. So konnten die Kunden die DB lokal pflegen und per FTP auf den Server laden. Das bedingt jedoch einen Windows Server und die sind im Webhosting bekanntlich nicht gerade auf dem Vormarsch. Obschon Microsoft-Studien natürlich stets anderes zu belegen suchen.

Seit dem letzten Jahr verwendete ich in etlichen Projekten die Formtools, die ich auch bereits vorgestellt habe. Mit den Formtools wickelte ich beispielsweise ein Bestellverfahren online ab, bei dem 40.000 Bestelldatensätze manuell erfasst werden mussten. Die Erfassung fand direkt durch die Bestellenden statt. Formtools hat sich dabei bestens bewährt. Eine eigenständige Programmierung für diesen Anwendungsfall wäre wesentlich teurer und auch nicht so schnell fertig gewesen.

Allerdings ist auch der Aufwand der Implementation der Formtools-Lösung für wirklich kleine Kunden, wie die Filzwichtelverkäuferin oder den Social Media Berater mit seiner Seminarliste im Grunde zu hoch. Dieser Tage stiess ich auf MySQL Ajax Table Editor und habe damit meine Lösung für die eigenpflegewilligen Kleinkunden gefunden.

MySQL Ajax Table Editor – Basics

Der MySQL Ajax Table Editor (MATE) ist eine PHP-Anwendung, die ihren Ajax-Part unter Verwendung von Prototype und Script.aculo.us leistet. MATE ist die nahezu perfekte Lösung, um Datenbankinhalte online zu bearbeiten. Der Programmierer positioniert das Produkt als Backend für beliebige Web-Applikationen.

MATE steht unter der GNU LGPL und ist damit kostenfrei nutzbar. Es arbeitet mit jeder MySQL-DB zusammen und ist dabei auch in der Lage, mit Joins mehrerer Tabellen umzugehen und dabei die Suchfunktionalität homogen zu erhalten. In diesem Artikel werde ich mich jedoch auf die Verwendung mit einer einzelnen Tabelle beschränken. Dem Produkt liegen zwei Beispielkonfigurationen bei, anhand derer man sich zügig auch in komplexere Problemstellungen einarbeiten kann.

Im Grunde arbeitet MATE als Framework. Die einzelnen Kernfunktionen werden aus PHP-Dateien angesprochen, die sich auf die jeweils zu bearbeitende Datenbanktabelle beziehen. Dabei sind vorgegebene Calls zu verwenden, die sehr gut dokumentiert und daher leicht verständlich sind. Mit den hinterliegenden Core-Dateien braucht sich der Webworker nicht zu befassen.

Auf der Basis dieser Arbeitsweise lassen sich kleine Applikationen innerhalb einer knappen halben Stunde erstellen, wenn man die Zeit für die Installation des MATE mitrechnet.

Installation

Die Installation ist für einigermaßen geübte Webworker keine Schwierigkeit. Zunächst laden Sie das etwa 550 KB große Paket von der Projektwebsite herunter, entpacken es lokal und laden die dann auf rund 1,2 MB entzippte Ordnerstruktur auf den gewünschten Webspace hoch. MATE funktioniert auch aus Unterverzeichnissen heraus, so dass Sie es parallel zu anderen Applikationen auf Ihrem Webspace verwenden können. Auch hinsichtlich der PHP-Version dürfte es keine Schwierigkeiten geben. MATE funktioniert sowohl mit Version 4, wie auch mit Version 5.

Wenn Sie die mitgelieferten Beispiele als Grundlage Ihrer Arbeit nutzen wollen, wozu jedenfalls zu raten ist, sollten Sie nun den MySQL-Editor Ihrer Wahl anwerfen und die Datei mate.sql aus dem Ordner sql in die zu bearbeitende Datenbank importieren. Zusätzlich zu den Beispieltabellen wird auch die Tabelle mate_columns erstellt, die in allen Anwendungsfällen benötigt wird, wenn Sie dem User die Möglichkeit geben wollen, Zeilen auszublenden oder umzusortieren.

Nach diesem zweiten Schritt rufen Sie MATE unter Angabe der Verzeichnis-URL auf und können die mitgelieferten Beispielkonfigurationen verwenden.

Konfiguration einer eigenen Tabelle

MATE wird mit Sprachdateien für Englisch, Deutsch, Niederländisch und Spanisch geliefert. Die Sprache wechselt man, indem man in der jeweiligen Konfigurationsdatei, also der PHP-Datei, die den Zugriff auf die konkrete Datenbank regelt, die Aufrufe der Sprachvariablen in der Konfigurationsdatei abändert. Dies geschieht zum einen durch die Datei LangVars-xx.php und zum anderen durch die Datei lang_vars-xx.js.

Für die Verwendung der deutschen Übersetzung wird nicht das übliche DE verwendet, vielmehr muss hier ge, also LangVars-ge.php aufgerufen werden. Ich empfehle bei der Englischsprachigkeit zu bleiben. Die deutsche Übersetzung ist nämlich, freundlich ausgedrückt, als eher hemdsärmelig zu bezeichnen.

Für diesen Beitrag habe ich eine simple Termindatenbank eines Social Media Beraters erstellt, die lediglich vier Felder enthält, nämlich das Feld ID als Primärschlüssel, das Feld Termin, sowie den Titel der Veranstaltung und den Raum, in dem die Veranstaltung stattfindet.

So sieht meine Konfigurationsdatei dann aus:

Daran ist im Grunde nur wenig Erklärungsbedürftiges. Sie sehen, dass man die angezeigten Spaltenbezeichnungen über display_text von der Feldbezeichnung in der DB abweichen lassen kann, was sicherlich bei so mancher DB dem Nutzerkomfort entgegen kommen wird, wenn dort anstatt col-preis-net Nettopreis zu lesen steht. Sie sehen weiterhin, dass man Feldern beispielsweise einen Datepicker beigeben und diesen auch noch hinsichtlich seiner Ausgabeoptik formatieren kann.

Der interessanteste Part ist jedoch, dass Sie der Tabelle als Ganzes, sowie den Feldern im Einzelnen gezielt Berechtigungen zuweisen können. So können Sie verhindern, dass etwa Datensätze gelöscht werden, indem Sie schlicht den Buchstaben D aus der recht kryptisch aussehenden Berechtigungsdefinition $permissions = ‚EAVIDQCSXHO‘; entfernen. Eine Übersicht der verfügbaren Berechtigungskürzel erhalten Sie auf dieser Website. Der Programmierer hat sich bemüht, die Kürzel sprechend zu halten. So kann man sich auch ohne größere intellektuelle Klimmzüge sicherlich selbst erschließen, dass E womöglich Edit, A Add, V View etc. heißen könnte.

MATE in Action

Hier nun meine Beispielkonfiguration in Aktion:

 

Sie können auch gern selbst daran herumprobieren. Klicken Sie hier. Da alle Welt Zugriff auf meine Beispieldatenbank nehmen kann, habe ich mir erlaubt, die Berechtigung D (für Delete) aus den Permissions zu entfernen. Ansonsten stehen alle Funktionen zur Verfügung. Besonders schön finde ich persönlich die Möglichkeit, Datensätze einfach zu kopieren und so als Grundlage eines neuen Datensatzes hernehmen zu können (siehe folgenden Screenshot).

Feldinhalte können von den Tabellenberechtigungen abweichende Berechtigungen enthalten. So ist beispielsweise denkbar, dass es Felder gibt, deren erstmalige Eingabe künftig nicht mehr verändert werden können soll, zB bei Rechnungsnummern. Diese Feingranulierung wird über $tableColumns[‚id‘] = array(‚display_text‘ => ‚ID‘, ‚perms‚ => ‚TVQSXO‘); vorgenommen.

MATE verfügt nicht über ein System der Benutzerauthentifizierung. Insofern müssen Sie selbst für einen Zugriffsschutz auf die Konfigurationsdateien sorgen, am einfachsten unter Verwendung einer .htaccess.

Fazit: Das Beispiel zeigt, wie einfach eine simple Benutzeroberfläche für die Eingabe und Pflege eines Datenbestandes im Web erstellt werden kann. Die Fähigkeiten von MATE gehen noch viel weiter, das Arbeiten mit relationalen Systemen ist auch möglich, wobei der Einarbeitungsaufwand dafür naturgemäß höher liegt. Ein einfaches Tabellenverwaltungssystem jedoch, dass Ihren Kunden zufrieden stellt und Ihnen die Angst vor einem Datenbank-GAU nimmt, ist mit MATE innerhalb einer halben Stunde realisiert.

 

[Eine etwas andere Version dieses Beitrags erschien zuerst im Dr. Web Magazin und war dort zahlenden Abonnenten vorbehalten.]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.