base
portal
Suche:
Forum
Start
Neue Seite erstellen
Titel:
<h2>Deutsche Sortierung</h2> baseportal sortiert ab der Version 3 immer nach den deutschen Regeln, d.h. es kommt zuerst o, dann O, dann ö und Ö. <achtung> Bestehende Datenbanken aus Version 2 müssen in Version 3 reorganisiert werden ("Datenbank > Verwaltung") um die deutsche Sortierung nutzen zu können. </achtung> Auch bei Umwandlungen in Groß-/Kleinschrift mit <c>lc</c> bzw. <c>uc</c>, sowie Sortierungen mit <c>sort</c> und Textvergleichen (<c>lt</c>, <c>gt</c> etc.) werden Umlaute nun berücksichtigt. Mit <c>no_locale</c> bzw. <c>use_locale</c> kann das ab- bzw. wieder eingeschaltet werden. Diese Befehle müssen innerhalb eines <c>BEGIN</c>-Blockes stehen: <code> <perl> # hier gilt normale de-Einstellung out 'DE: '.uc('Schönes Wetter').'<br>'; { # Auswirkungen immer nur für einen Block BEGIN { no_locale; } out 'US: '.uc('Schönes Wetter').'<br>'; } # ab hier gilt wieder die de-Einstellung </perl> </code> <h2>Kurzformen beim Lesen und Beschreiben von Datenbanken</h2> <code> get "datenbank"; </code> Holt den kompletten Inhalt der Datenbank (Die Abfrage lautet: <c>Id==*</c>). <code> put "datenbank"; </code> Schreibt den Standard-Hash <c>%_put</c> in die Datenbank. <h2>Ergebnisse können mit $ergebnis{Feld}[Zeile] gelesen werden</h2> Nach einem <c>get</c> steht das Ergebnis in einem <i>Hash</i> mit dem gleichen Namen wie die Datenbank zur Verfügung: <code> get "meinedb"; for(my $i=0; $i<$_amount; $i++) { out $meinedb{Feldname}[$i]," "; } </code> Gibt man einen Ergebnisnamen an, so wird dieser als Hashname verwendet: <code> get "Name~=a", "meinedb", "ergebnis1"; get "Name~=b", "meinedb", "ergebnis2"; for(my $i=0; $i<$ergebnis1{_amount}; $i++) { out $ergebnis1{Feldname}[$i]," "; } for(my $i=0; $i<$ergebnis2{_amount}; $i++) { out $ergebnis2{Feldname}[$i]," "; } </code> Zur (Test-)Ausgabe des Ergebnis-Hashs eignet sich der Befehl [564:dump]: <code> get "meinedb"; out dump %meinedb; </code> <h2>Ausgabefilter in eigenem Code aktivieren</h2> Innerhalb eigenen Codes werden Einträge die aus einer Datenbank gelesen wurden, nicht durch den <i>Ausgabefilter</i> gewandelt, liegen also immer "roh" vor, so wie sie in der Datenbank stehen. So enthält z.B. ein Datumsfeld den Wert im internen Format, der erst mit <c>datum</c> in ein "schönes" Ausgabeformat gewandelt werden muss. Beim <c><do action=all..</c> oder <c><loop>..</loop></c> wird dies automatisch erledigt, so wie es in der Felddefinition angegeben wurde. Möchte man dies auch bei <c>get</c>-Befehlen erreichen, muss man ein Plus <c>+</c> nach dem Datenbank-Namen angeben: <code> get "Datum>jetzt", "datenbank", "+"; out $Datum; </code> Gibt <c>$Datum</c> im Ausgabeformat der Felddefinition aus, z.B. <i>2.September.2006</i> Das interne Format liegt zusätzlich im Hash <c>%_raw</c> vor, in diesem Fall also in <c>$_raw{Datum}</c>. Auch bei Verwendung des <c>+</c> kann ein Ergebnishash verwendet werden, was aber zusätzlich zu einem leicht anderen Verhalten führt: <h2>Feldvariablen nicht belegen</h2> Um den Ausgabefilter zu aktivieren, muss man das <c>+</c> direkt vor den Ergebnishash schreiben: <code> get "Name==hans", "datenbank", "+erg"; out $erg{Datum}[0]; </code> Dies führt dazu, dass nicht mehr automatisch Variablen mit Feldnamen gesetzt werden (<c>$Datum</c> ist also leer). Das Abfrageergebnis liegt nur im Hash <c>erg</c> vor - durch den Ausgabefilter gewandelt. Die "Rohdaten" sind ebenfalls vorhanden und stehen in <c>$erg{_raw}{Feldname}[Zeile]</c>, in diesem Beispiel also in <c>$erg{_raw}Datum[0]</c>. Der Vorteil hierbei ist, dass so unerwünschtes Überschreiben von Variablen vermieden wird. Möchte man keine Feldvariablen setzen, ohne den Ausgabefilter zu aktivieren, benötigt man ein Minus <c>-</c>: <code> get "Name==hans", "datenbank", "-"; out $datenbank{Datum}[0]; </code> Das Ergebnis steht dann im Datenbank-Hash. Natürlich funktioniert dies auch in Verbindung mit einem Ergebnis-Hash: <code> get "Name==hans", "datenbank", "-erg"; out $erg{Datum}[0]; </code> Gibt das interne Format von <c>Datum</c> aus. Um das Ergebnis später doch in Feldvariablen abzurufen, benutzt man einfach <c>get_next</c>: <code> get_next "erg"; out $Datum; </code> Alle Abfragemöglichkeiten in einer Übersicht: <tab> Abfrage|Auswirkung get "db";|Kein Ausgabefilter, Feldvariablen werden gesetzt, Ergebnis in <c>%db</c> get "db", "erg";|Kein Ausgabefilter, Feldvariablen werden gesetzt, Ergebnis in <c>%erg</c> get "db", "+";|Ausgabefilter aktiv, Feldvariablen werden gesetzt, Ergebnis in <c>%db</c> get "db", "-";|Kein Ausgabefilter, Keine Feldvariablen, Ergebnis in <c>%db</c> get "db", "+erg";|Ausgabefilter aktiv, Keine Feldvariablen, Ergebnis in <c>%erg</c> get "db", "-erg";|Kein Ausgabefilter, Keine Feldvariablen, Ergebnis in <c>%erg</c> </tab> <h2>Id bei neuem Datensatz immer um 1 erhöht</h2> Ab der Version 3 bekommt jeder neue Datensatz eine neue Id, auch dann, wenn zuvor der Datensatz mit der höchsten Id gelöscht worden ist. <h2>Suche nach Datensätzen mit leeren Feldern</h2> Mit dem <c>_</c> kann nun nach leeren Feldern gesucht werden: <code> <perl> get "Vorname==_", "Personen"; while(get_next("Personen")) { out "$Name<br>"; # gibt alle Namen mit leerem Vornamen aus } </perl> </code> <h2>Maskieren von Spezialabfragen</h2> Die Spezialwerte <c>*</c>, <c>#</c>, <c>?</c>, <c>_</c> bei Datenbank-Abfragen können nun maskiert werden: <code> get "Feld==\\?"; </code> Holt alle Einträge bei denen <c>Feld</c> tatsächlich das Zeichen <c>?</c> enthält. Die Abfrage ohne Maskierung: <code> get "Feld==?"; </code> würde einen zufälligen Eintrag holen. <achtung> Beachten Sie dass 2 "Backslashes" <c>\</c> zur Maskierung nötig sind, da die Abfrage 2 Stufen (Perl und baseportal) durchläuft. </achtung> <h2>Sortierung oder Bereich vor get [...]</h2> Dem speziellen <c>get</c>-Aufruf mit <c>[...]</c> kann nun auch eine Sortierung oder ein Bereich übergeben werden, indem die Werte einfach vorher gesetzt werden: <code> $_get{range}="10,20"; $_get{sort}="-"; get ["Name", "==!", $name], "db"; </code> Holt die Einträge 10 bis 30 mit dem Feld <i>Name</i> die genau <c>$Name</c> enthalten, in umgekehrter Reihenfolge sortiert. <c>$name</c> kann auch Leerzeichen enthalten.
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!