 |
| Tipps für PHP-Programmierer |  |
 |
 |
PHP-Programmierer müssen beim Einsatz der tdbengine ein wenig umdenken:
tdbengine-Programme sind keine geparsten HTML-Seiten, sondern reine
CGI-Programme, die selbst eine HTML-Seite erzeugen müssen. Zu diesem
Zweck können Sie einfache WRITE-Anweisung direkt an den Klienten senden
oder (besser!) ein Template (HTML-Seite mit Platzhaltern) laden, dort
Ersetzungen durchführen und schließlich diese Seite an den Klienten
(Browser) senden.
Aus diesem Grund ist es nicht nötig, für jede Anfrage bzw. jede
Aktion ein eigenes Programm zu schreiben. Die tdbengine fördert
vielmehr, dass die gesamte Funktionalität beispielsweise für ein
Pressemitteilungs-System in nur einem Programm steckt. Die einzelnen
Funktionen werden über GET- und/oder POST-Parameter übergeben und von
einem zentralen Dispatcher ausgewertet. So schaut in vielen
tdbengine-Programmen die Hauptfunktion so aus:
PROCEDURE Main
VAR command:=GetQueryString('command')
IF command='suchen' THEN ...
ELSIF command='anmelden' THEN ...
ELSIF command='abmelden' THEN ...
ELSIF ...
...
ELSE ... // Startseite
END
ENDPROC
Die integrierte Datenbank arbeitet wesentlich direkter mit Tabellen
als der Anschluß an eine externe SQL-Datenbank. Das schaut für
PHP-Leute sicherlich erst einmal fremd aus, wahrscheinlich sogar
fremder als die Pascal-ähnliche Syntax der Programmiersprache EASY.
Hier ein kleines Codefragment, das eine Query ($PLZ like "8????") in
einer Adressentabelle absetzt und die gefundenen Reihen ausgibt:
VAR db : INTEGER = OpenDB('database/adresen.dat') //Tabelle (zum Lesen) öffnen
VAR nn : INTEGER = FindAndMark(db,'$PLZ LIKE "8????"') // Suchen
IF nn=0 THEN //Kein Treffer
CGIWriteLn('Leider nichts gefunden')
ELSE // Die Tabellenzeilen der gefundenen Datensätze sind IN der Markierungsliste
CGIWriteLn(Str(nn)+' Datensätze gefunden.') // Erst einmal eine Meldung
VAR x : INTEGER = FirstMark(db) // An den Anfang der Markierungsliste
WHILE x>0 DO // Die gesamte Markierungsliste durchgehen
ReadRec(db,x) // Zeile holen
CGIWriteLn(GetField(db,'Name')) // Spalten ausgeben
CGIWriteLn(GetField(db,'Strasse'))
...
x:=NextMark(db,x)
END
END
Freilich kann man sich auch eine Ergebnis-Tabelle (in Form eines
String-Arrays) zusammenstellen lassen, und freilich gibt es auch die
Möglichkeit, die tdbengine als reinen SQL-Server zu verwenden
(=aktuelles Projekt der TDB GmbH in Schwabach) - der direkte
Tabellenzugriff ist allerdings um Längen performanter...
|