base
portal
Suche:
Forum
Start
Neue Seite erstellen
Titel:
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 Seiten 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. <b>Definition:</b> <codeparse> get <i>Abfrage</i>, <i>Datenbank</i>, <i>Ergebnis</i>; </codeparse> Alle Felder sind optional. Ohne irgendeine Angabe werden die per URL übergebenen Parameter genommen, fehlen auch diese, wird die Datenbank mit dem gleichen Namen der Seite komplett gelesen. Die <i>Abfrage</i> entspricht den Datenbank-Abfragen bei [42:loop], [38:do] oder über die URL und kann als <i>String</i> oder <i>Referenz auf eine Liste</i> übergeben werden. <i>Datenbank</i> gibt den Namen der Datenbank an. <i>Ergebnis</i> bezeichnet einen <i>Hash</i> 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 [42:loop]). <b>Beispiele:</b> <code> get "KundenNr==32631", "adressen"; out "Name: $Name, Ort: $Ort, Telefon: $Telefon"; </code> Holt alle Datensätze bei denen "KundenNr" den Wert "32631" hat aus der Datenbank "adressen" und gibt den ersten davon aus. <code> get "Vorname==hans Alter<30 PLZ~=8", "kunden"; </code> Holt alle Kunden mit dem Vornamen "hans", einem Alter unter 30 und aus dem Postleitzahlengebiet mit führender "8". Es kann passieren, dass man Zeichen zur Abfrage benutzen will, die eine spezielle Bedeutung haben, wie das Leerzeichen zur Trennung von Abfragen oder das <c>|</c>-Zeichen, was für eine Oder-Verknüpfung steht. Diese kann man entweder mit dem <c>\</c> "entschärfen" oder die zweite Form von <c>get</c> benutzen: <code> get ["Name", "==!", "Stefan Klamm", "&", "URL", "==", $URL], "zugriffe"; </code> Holt alle Einträge mit "Name" genau "Stefan Klamm" und "URL" gleich der Variablen <c>$URL</c>. Diese kann beliebige Zeichen wie <c>|</c> oder <c>&</c> etc. enthalten. Hier erfahren Sie mehr über das [63:Maskieren von Sonderzeichen]. Nun noch ein Beispiel für einen individuellen Zugangsschutz: <code> get "Name==!$namerein", "nutzer";<br> if($Passwort ne "" && $Passwort eq $passwortrein) { # Hier die Ausgabe der eigentlichen Datenbank } else { out "Zugang verboten!"; } </code> 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!". Zu beachten ist, dass die Datenbank "nutzer" keinerlei Rechte für Aussenstehende haben darf, da sonst jeder die Passwörter lesen könnte. Um an mehrere passende Einträge zu kommen, benötigt man einen weiteren Befehl: <h2>get_next</h2> <b>Definition:</b> <codeparse> get_next <i>Ergebnis</i>; </codeparse> Holt den nächsten Datensatz von <i>Ergebnis</i> und speichert ihn in Variablen, mit den entsprechenden Feldnamen. Ohne Angabe von <i>Ergebnis</i> wird die zuletzt abgerufene Datenbank genommen. <b>Beispiele:</b> <code>get; while(get_next) { out "Name: $Name - Auto: $Auto<br>"; } </code> Holt alle Datensätze der zum Template gehörigen oder per URL übergebenen Datenbank und gibt sie aus. Mehrere Abrufe von "get" und "get_next" können verschachtelt werden: <code> get "Id==*", "kunden"; while(get_next("kunden")) { out "Kunde: $Name<br>"; get "Name==$Auto", "autos"; out "Auto: $Name<br>"; out "Beschreibung: $Beschreibung<p>"; } </code> 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: <code> get "Name~=a", "kunden"; get "Name~=b", "kunden", "kmitb"; out "<p>Alle Kunden mit a:</p>"; while(get_next("kunden")) { out "Kunde: $Name<br>"; } out "<hr><p>Alle Kunden mit b:</p>"; while(get_next("kmitb")) { out "Kunde: $Name<br>"; } </code> 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. <achtung> Wenn Sie verschachtelte Datenbankaufrufe benutzen, dann müssen Sie unbedingt einen Wert bei <i>Ergebnis</i> angeben, da baseportal sonst nicht unterscheiden kann, welcher Aufruf zu welcher Datenbank gehört und es zu Fehlausgaben oder sogar Datenverlusten kommen kann. </achtung>
Name:
Passwort:
Stichworte:
Version:
1
2
3 Angebot:
Alle
Nur Miete / Lizenz
Nur Miete / Lizenz professional
Nur Miete
Nur Miete smart + pro
Nur Miete smart + pro / Lizenz
Nur Miete pro
Nur Miete ab pure2, smart2, pro1
Nur Lizenz
Nur Lizenz professional
Nur Kostenlos
Ohne Änderungen zurück zur Seite
-
+
©
baseportal
GmbH. Alle Rechte vorbehalten.
powered in 0.01s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!