Baseportal stellt spezielle Befehle zur Behandlung von Datenbanken
bereit. Sie erlauben den Abruf, das Hinzufügen, Ändern oder Löschen
von Datensätzen. Da Sie diese Befehle in Templates einsetzen, die nur
Sie verändern können, haben Sie mit diesen Befehlen immer Zugriff auf
alle Ihre Datenbanken - unabhängig davon, wie die Rechte dieser
Datenbanken gesetzt sind.
Definition:
get Abfrage, Datenbank,
Ergebnis; |
Alle Felder sind optional. Ohne irgendeine Angabe werden die per URL
übergebenen Parameter genommen, fehlen auch diese, wird die
gleichnamige Datenbank (wie das Template) komplett gelesen. Die Abfrage
entspricht den Datenbank-Abfragen bei "loop", "do"
oder über die URL und kann als String oder Referenz auf eine Liste
übergeben werden. Datenbank gibt den Namen der Datenbank an. Ergebnis
bezeichnet einen "Hash" in dem die resultierenden Datensätze
gespeichert werden sollen; standardmässig wird hier der Name der
Datenbank genommen.
Der erste passende Eintrag wird in Variablen, mit den entsprechenden
Feldnamen, gespeichert (genau wie bei loop).
Beispiele:
get
"KundenNr==32631", "adressen";
out "Name: $Name, Ort: $Ort, Telefon: $Telefon";
|
Holt alle Datensätze bei denen "KundenNr" den Wert
"32631" besitzt aus der Datenbank "adressen" und
gibt den ersten davon aus.
Hiermit lässt sich ein individueller Zugangsschutz sehr einfach
realisieren:
get
"Name==!$namerein", "nutzer";
if($Passwort ne "" && $Passwort eq
$passwortrein)
{
# Hier die Ausgabe der eigentlichen Datenbank
# z.B. mit get_next (s.unten)
} else
{
out "Zugang verboten!";
}
|
Holt aus der Datenbank "nutzer" den passenden Nutzer mit dem
per URL oder Formular übergebenen "namerein". Der Wert des
Feldes "Passwort" wird dann mit dem ebenfalls per URL oder
Formular übergebenen "passwortrein" verglichen. Stimmen beide
überein wird z.B. eine Datenbank ausgegeben, wenn nicht, erfolgt die
Ausgabe "Zugang verboten!". Achten Sie darauf, dass die
Datenbank "nutzer" keinerlei Rechte für Aussenstehende hat!
Um an mehrere passende Einträge zu kommen, benötigt man einen
weiteren Befehl:
get_next
Definition:
Holt den nächsten Datensatz von Ergebnis und speichert ihn in
Variablen, mit den entsprechenden Feldnamen. Ohne Angabe von Ergebnis
wird die zuletzt abgerufene Datenbank genommen.
Beispiele:
get;
while(get_next)
{
out "Name: $Name - Auto: $Auto<br>";
}
|
Holt alle Datensätze der zum Template gehörigen oder per URL
übergebenen Datenbank und gibt sie aus.
Mehrere Abrufe per "get" und "get_next" können
verschachtelt werden:
get "Id==*",
"kunden";
while(get_next("kunden"))
{
out "Kunde: $Name<br>";
get "Name==$Auto", "autos";
out "Auto: $Name<br>";
out "Beschreibung:
$Beschreibung<p>";
}
|
Hier wurde eine Relation zwischen den beiden Datenbanken
"kunden" und "autos" hergestellt. Jeder Datensatz
eines Kunden enthält ein Feld "Auto" mit dem Autonamen des
Kunden. Dieser Wert wird verwendet, um den passenden Eintrag aus der
Datenbank "autos" zu holen und die Beschreibung für dieses
Auto auszugeben.
Sie können auch verschiedene Abfragen derselben Datenbank speichern.
Zur Unterscheidung dient der "Ergebnis"-Parameter:
get
"Name~=a", "kunden";
get "Name~=b", "kunden",
"kmitb";
out "Alle Kunden mit a:<p>";
while(get_next("kunden"))
{
out "Kunde: $Name<br>";
}
out "<hr>Alle Kunden mit b:<p>";
while(get_next("kmitb"))
{
out "Kunde: $Name<br>";
}
|
Zuerst werden alle Datensätze, die mit "a" beginnen aus der
Datenbank "kunden" geholt und im gleichnamigen Ergebnis
gespeichert. Dann werden alle Datensätze, die mit "b"
beginnen im Ergebnis "kmitb" gespeichert. Schliesslich werden
beide Ergebnisse in entsprechenden Schleifen mit "get_next"
ausgegeben.
|
|