baseportal
Suche: 
 Forum   Start 

loop (Schrittweises Durchlaufen einer Datenbank-Abfrage)

 

Trotz der vielen Einstellmöglichkeiten von do action=all oder do action=list werden Sie in vielen Fällen mit der standardisierten Ausgabeform nicht zufrieden sein: Sie möchten die Ausgabe jedes Feldes selbst bestimmen. loop ermöglicht dies, indem es durch alle Einträge einer Datenbank geht und Zeile für Zeile die einzelnen Felder als Variablen zur Verfügung stellt.

Definition:

 
    <loop[Parameter]>
    ...[$<i>Feldname</i>]... </loop>

Beispiel:

 
<b>Neueste Neuigkeiten:</b>

<loop db=news sort=->

<h3><a href="$URL">$Titel</a></h3>
<ul>$Text</ul>
<i>von $Autor</i>
<p>

</loop>

Dieses Beispiel könnte Teil eines Redaktionssystems sein: loop durchläuft alle Einträge der Datenbank news. Da kein Feld für die Sortierung angegeben wurde, erfolgt die Ausgabe chronologisch - allerdings in umgekehrter Reihenfolge, aufgrund des Minus-Zeichens (sort=-). Die neuesten Einträge kommen also ganz oben, was für ein News-System sicherlich wünschenswert ist.

Die Variablen mit dem vorangestellten "Dollar"-Zeichen $ entsprechen jeweils dem Namen eines Feldes, so wie sie bei der Datenbank-Definition vergeben wurden (Achtung auf Gross/Klein-Schreibung, diese wird unterschieden!). Wird ein Feldname verwendet, der nicht existiert, wird einfach nichts eingefügt.

Etwas komplizierter ist der Zugriff auf Felder, deren Namen nicht als Variablennamen verwendet werden können, z.B. "Preis in $" oder "Frage / Antwort". Wegen der Leerzeichen und den Sonderzeichen ("$", bzw. "/") ist eine direkte Abfrage nicht möglich. Stattdessen müssen Sie folgendes schreiben:

$_loop{"Preis in $"}
$_loop{"Frage / Antwort"}


Und so könnte die Ausgabe der News-Seite aussehen:

 
Neueste Neuigkeiten:

Loveparade fällt dieses Jahr aus... Für immer?

    Nachdem letztes Jahr nur noch wenige Hundert hartnäckige Loveparade-Fans auf dem inzwischen nach Pankow verlegten Techno-Umzug erschienen sind, haben die Veranstalter dieses Jahr aufgrund der wiederum geringen Resonanz gleich abgesagt. Motte meint dazu: Endlich Frieden...
von Anja

 

Microsoft am Ende?

    Nach herben Umsatzeinbrüchen hat sich die Führung von Microsoft nun auch noch heillos über die zukünftige strategische Ausrichtung des ehemals so mächtigen Software-Unternehmens zerstritten. Wo wird das alles enden?
von Hans Albers

 

UFOs in Berlin gelandet!

    Echt wahr!
von Stefan Ehrlich

 

(Achtung: Die Nachrichten sind nur Beispiele und NICHT real!! ;-)

    Ein paar Tipps zur Ergänzung:
  • Loop heisst "Schleife" und bedeutet, dass in obigem Beispiel alles, was innerhalb von <loop> und </loop> steht, entweder so oft hintereinader ausgegeben wird, wieviel tatsächlich Datensätze in der Datenbank sind.
    Der Ausdruck sort=- wird an der etsprechenden Stellen erklärt.
  • Im Template werden zur Formatierung der Ausgaben ganz normale HTML-Tags angewandt, ganz egal, ob da noch zusätzlich baseportal - interne Tags stehen, auch innerhalb von <loop> und </loop>.
    Schließlich werden hier ja Ausgaben für Web-Browser generiert, so dass ein paar HTML-Kenntnisse beim Einsatz von baseportal durchaus von Vorteil sind.

do action=all und loop kombinieren


Manchmal möchte man die komfortablen Menüs des <do action=all> mit einer eigenen Ausgabe kombinieren. Das geht einfach mit dem Parameter "listtype=-". Hier ein Beispiel, das die Blätter-Links vom <do action=all> erhält und trotzdem eine eigene Ausgabe ermöglicht:
<do action=all listtype=- selectbrowse=no>
<loop>
$Feld1 - $Feld2... etc.<br>
</loop>
Letzte Änderung am 29.4.2005, 12:11 - Stichworte: loop,Perl-Code,Datenbank durchlaufenc - o - +

© baseportal GmbH. Alle Rechte vorbehalten.


powered in 0.01s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!