

Beim PHP-Programmieren ist es doch immer das Selbe. Man legt eine Datenbank-Tabelle an mit einigen Feldern (z.B. Vorname, Nachname, E-Mail) und tippt diese Feldnamen immer wieder in seiner Applikation. Einmal als schlichte Liste für die Feldnamen bei einem INSERT statement, dann in einfachen Hochkommas eingeschlossen, hier in doppelten. Ein anderes mal ist der Feldname schlüssel in einem Array wie $_ POST oder $_SESSION. Obwohl in der Tabellenstruktur in der Datenbank bereits der Typ genau festgelegt wurde, muss man ferner jedesmal für die richtige Syntax überlegen, ob es sich bei dem Feld um eine Zahl, einen Text oder eine Aufzählungsliste handelt und dies entsprechend berücksichtigen. Das Gleiche gilt beim Validieren und Escapen in einen anderen Kontext (SQL, HTML, PHP). Und wenn die Tabelle nicht nur Vor- und Nachname, sondern auch noch Datenfelder für Telefonnumer privat, Telefonnummer geschäftlich, Fax, Mobil, Strasse, Hausnummer, Postleitzahl, Ort, Webseite, Notiz, undsoweiterundsofort umfasst, dann artet das regelmäßig in einer Fingerwundtipperei aus. Bein einer einfachen Anwendung, die nichts weiter macht als den Inhalt einer Datenbanktabelle anzuzeigen und es erlaubt, einzelne Einträge anzulegen und zu verändern, muss jeder Feldname ca. 25 Mal in verschiedenen Variablen-Formen geschrieben werden. Als PHP-Experte wünscht man sich deshalb irgendwann einen Großen Roten Button, auf den man nur drücken muss, um diesen häufig verwendeten Standard-Quellcode automatisch generieren zu lassen.
Natürlich steckt der Teufel im Detail und ohne Anpassung lässt sich mit dem Generator nur selten eine komplette Applikation erstellen, jedoch bietet sich stets mindestens einer der vom Großen Roten Button Quellcode Generator erstellten Bausteine für Copy & Paste in die eigene Anwendung an.
Feature Liste
- Open Source
- Der eigene Quellcode des Großen Roten Button Quellcode Generators ist frei verfügbar zum Erweitern und/oder Anpassen an die Ausgabe für ein eigenes Framework oder existierende (Zend Framework, jQuery, Dojo, iPhone iUI, ...).
- Eingabeformate
- In der großen Textbox ganz oben im Generator kann entweder eine kommaseparierte Liste von Variablennamen (z.B. "vorname, nachname, strasse") eingetragen werden oder ein CREATE TABLE statement.
- Kommaseparierte Liste
- Den Variablen der kommagetrennten Liste kann man Buchstaben zur Kennzeichnung des Typs ("i" für Integer oder "b" für Bool) voranstellen. Das erste Feld ist hier immer der Primärschlüssel. Die Feldnamen können auch in Backticks eingeschlossen angegeben werden.
Beispiel:
i geraet_id, name, beschreibung, b aktiv
- CREATE TABLE Statement
- Das CREATE TABLE Statement wird zunächst intern in MySQL geparst. Es werden damit im Vergleich zur kommagetrennten Liste weitere Datentypen erkannt: TEXT, ENUM, SET, TINYINT. Auch werden die Primärschlüssel, Default-Werte und, ob das Feld ein Pflichtfeld also nicht nullable ist, ausgelesen.
- Sektion Target Variables
- Jedes einzelne Feld kann damit in verschiedenen Variablenformaten ausgegeben werden. Das Feld 'vorname' kann in vorname, Vorname, $vorname, ${vorname} $_GET['vorname'], $_POST['vorname'], $_SESSION['vorname'], $_REQUEST['vorname'] oder $custom['vorname'] umgewandelt werden, wobei 'custom' wiederum für einen beliebigen Variablennamen steht. Diese Variablen werden vom Großen Roten Button Quellcode Generator standardmäßig als Liste ausgegeben. In der Sektion Generated Code Type kann man aber auch festlegen, dass diese Variablen in HTML Tags respektive Funktionsaufrufen eingeschlossen verwendet werden sollen oder damit SQL-Abfragen, Formulare und Listen erstellen.
- Sektion Use function
- Um jede einzelne Variable in einen beliebigen Funktionsaufruf einzuschließen.
- Option Multilingual
- Falls aktiv, wird die __() Methode zum Übersetzen von Text eingefügt
- Option MySQL values
- Zur Erstellung einer SQL-Injection sicheren Datenbankabfrage unter Berücksichtigung der einzelnen Datentypen
- Option Validation
- Hier erzeugt man mit dem Großen Roten Button Quellcode, welcher prüft, ob alle Pflichtfelder vorhanden sind und ob die Werte im Gültigkeitsbereich des Datentyps für das jeweilige Feld liegen. Eine allgemeine oder für jedes Feld individuelle Fehlermeldungen können erstellt werden. Bei Bedarf erzeugt man hier auch Code, der die Variablen zum richtigen Typ konvertiert oder in die Session schreibt.
- Option Form
- Integer oder bool'sche Felder werden zu Integer gecastet. Aus TINYINT(1) wird eine Checkbox erstellt, aus ENUM Feldern Radios, aus SET Feldern Auswahllisten und ansonsten Text-Felder. Zur Cross-Site-Scripting sicheren Ausgabe in HTML wird die htmlspecialchars Funktion um die Variablen gelegt, welche je nach ausgewähltem Zeichensatz auch den dritten Funktionsparameter setzt. Mit der Option full fügt man hier auch gleich den Code für die oben erwähnte Datenvalidierung ein sowie die Logik zum Abspeichern eines neuen oder bestehenden Datensatzes.
- Option List
- Der Quellcode für die Generierung einer Listenansicht der Tabelle wird hier ausgespuckt. Die Logik zum Löschen einer Zeile ist standardmäßig dabei, die Codeblöcke für Tabellensortierung, Suchfelder und Paginator sind zuschaltbar. Für den Tabellenkopf kann man sich wahlweise den HTML-Code anzeigen lassen oder in PHP eine foreach-Schleife (Option Dynmic Header).
- Option HTML
- Zum Wrappen von HTML-Tags um Variablen. HTML-Attribute gehen dabei nicht verloren, unpaired HTML-Tags werden unterstützt. Zum Verschachteln von HTML Tags kann eine kommagetrennte Tag-Liste eingegeben werden.
- Mehrere Primärschlüssel
- Mehrere Primärschlüssel werden nur bei Eingabe eines CREATE TABLE statements unterstützt
-
- Zeichensatz
- Unterstützt werden ISO-8859-1 und UTF-8. Relevant ist das beim Quellcode für die Validierung, für das Formular und die Liste.

As you may know, building a simple web application that displays the content of a database table and a form to edit it, requires typing the field names over and over again. Once you write them as a simple comma-separated list, then they come via HTTP POST method packed in $_POST['foobar']. For context change you have to write code to escape and protect against SQL-Injection or Cross Site Scripting attacks. Most of the time you must consider the type of each field even though you defined it already in the database. After all you must type every field name about 25 times in different formats for a basic application. The Big Red Button Source Code Generator, being developed by Christian Fraunholz, is designed to help you with this annoying task.
Feature List
- Open Source
- The Source Code of The Big Red Button Source Code Generator is available here. Feel free to extend or customize it for your own application design or an existing one (e.g. Zend Framework, jQuery, Dojo, iPhone iUI, ...).
- Input Formats
- You can enter either a comma-separated list of variable names (e.g. "firstname, lastname, street") or a CREATE TABLE statement.
- Comma-separated list
- An optional "i" before the variable name indicates the type integer, a leading "b" a bool field. The first fieldname becomes the primary key. Enclosing the names in backticks is allowed.
Example:
i item_id, name, description, b active
- CREATE TABLE Statement
- MySQL parses the CREATE TABLE statement and does recognize additional types TEXT, ENUM, SET, TINYINT, all primary keys, the mandatory (not nullable) fields and default values.
- Section Target Variables
- The Big Red Button Source Code Generator outputs the field names in various formats. You can convert firstname to Firstname, $firstname, ${firstname} $_GET['firstname'], $_POST['firstname'], $_SESSION['firstname'], $_REQUEST['firstname'] oder $custom['firstname'], where 'custom' is a variable name of your choise. The Generator creates a simple list by default, but in the section Generated Code Type this setting is also being used for the variable syntax in HTML tags, function calls, SQL statements, forms and lists.
- Section Use function
- To use a function for each variable.
- Option Multilingual
- Activate this option for multilingual applications and add the __() method for string translation.
- Option MySQL values
- Generates a INSERT statement with the variables protected againt SQL-Injection depending on its type.
- Option Validation
- Creates source code that checks for the existence of mandatory fields and for the right type (INTEGER, BOOL, SET, ENUM). Generates error messages for each field or a general one. You can choose to add the type convertion logic or to write the variables into the session.
- Option Form
- Creates code to cast integer or bool values to integer. Creates a checkbox for TINYINT(1) fields, radio buttons for ENUM fields, a drop-down box for SET fields and a text field otherwise. Uses the htmlspecialchars function with the third parameter when building UTF-8 code. With the full option activated, pressing the Big Red Button will also generate the code for the data validation, a SQL SELECT statement and logic to save a new or existing entry into the database for you.
- Option List
- To retrieve the source code to generate a list view out of the table, to delete one row and - if you want - logic to sort the table when clicking on a table header, search fields and a pagination. For the header you can choose HTML-code or a PHP foreach loop.
- Option HTML
- Wraps one or multiple (comma-separated) HTML tags around your variables. Preserves HTML attributes.
- Multiple primary keys
- Multiple primary keys are supported only for CREATE TABLE statements
- Charset,
- Supports ISO-8859-1 and UTF-8. Used in validation, form and list code.