HTML-Embperl
view release on metacpan or search on metacpan
Hier ist ein einfaches DBI Beispiel, welches das Ergebnis einer Anfrage
in einer zwei dimensionalen Tabelle anzeigt, mit den Feldnamen als Überschrift
in der ersten Zeile:
[-
# Verbinden mit Datenbank
$dbh = DBI->connect($DSN) ;
# SQL Select vorbereiten
$sth = $dbh -> prepare ("SELECT * from $table") ;
# Datenbankanfrage ausführen
$sth -> execute ;
# $head erhält die Feldnamen für die Tabellenüberschrift
$head = $sth -> {NAME} ;
# $dat erhält die Datensätze
$dat = $sth -> fetchall_arrayref ;
-]
<table>
<tr><th>[+ $head->[$col] +]</th></tr>
<tr><td>[+ $dat -> [$row][$col] +]</td></tr>
</table>
=head1 Formularfelder
=head2 Gesendete Formulardaten sind in %fdat/@Z<>ffld verfügbar
Der Hash B<%fdat> enthält alle Werte der Formularfelder. Das Array
B<@>Z<>B<ffld> enthält die Namen in der Reihenfolge wie sie gesendet wurden.
=head2 Input/Textarea/Select tags erhalten ihre Werte aus %fdat
Wenn innerhalb des HTML Codes kein Wert für ein Inputtag angegeben ist
und Daten in B<%fdat> dafür verfügbar sind, fügt Embperl automatisch den
Wert aus B<%fdat> ein. Dies ist ähnlich dem Verhalten von CGI.pm. Das
bedeutet, daß wenn man die Daten eines Formular (in einer Embperlseite) an
sich selbst schickt, automatisch die Daten wieder angezeigt werden, die gerade
eingegeben wurden.
=head2 [$ hidden $]
[$ hidden $] erzeugt versteckte Formularfelder für alle Werte aus B<%fdat>, die
bis dahin nicht in einem anderem Formularfeld ausgegeben wurden. Dies ist
hilfreich, wenn Daten über mehere Formulare hinweg transportiert werden müssen.
=head2 Ein einfaches Texteingabe/Bestätigungs Formular
Das folgende Beispiel zeigt viele der Möglichkeiten von Embperl.
Es ist ein einfaches Formular, in dem man seinen Namen, seine Email Adresse,
sowie eine Nachricht eingeben kann. Wenn man es absendet,
werden die Daten zunächst noch einmal angezeigt.
Von dort kann man zum vorherigen Formular zurückkehren, um die Daten zu
korrigieren oder der Benutzer bestätigt die Daten, wodurch sie zu einer vordefinierten
Email Adresse gesandt werden. Das Beispiel zeigt auch wie eine Fehlerüberprüfung
implementiert werden kann. Wenn der Name oder die Email Adresse weggelassen wird,
wird eine entsprechende Fehlermeldung angezeigt und das Eingabeformular erscheint wieder.
Der erste Teil ist die Fehlerüberprüfung; der zweite Teil die Bestätigungsseite;
der dritte Teil versendet die Email, wenn die Eingaben bestätigt wurden und der
letzte Teil ist das Eingabeformular.
In Abhängigkeit der Werte von C<$fdat{check}>, C<$fdat{send}> und ob C<$fdat{name}> und
C<$fdat{email}> Daten enthalten, entscheidet das Dokument welcher Teil zur
Ausführung kommt.
[- $MailTo = 'richter\@ecos.de' ;
@errors = () ;
if (defined($fdat{check}) || defined($fdat{send}))
{
push @errors, "**Bitte Namen eingeben" if (!$fdat{name}) ;
push @errors, "**Bitte E-Mail Adresse eingeben" if (!$fdat{email}) ;
}
-]
[$if (defined($fdat{check}) and $#errors == -1)$]
[-
delete $fdat{input} ;
delete $fdat{check} ;
delete $fdat{send}
-]
<hr><h3> Sie haben folgende Daten eingegeben:</h3>
<table>
<tr><td><b>Name</b></td><td>[+$fdat{name}+]</td></tr>
<tr><td><b>E-Mail</b></td><td>[+$fdat{email}+]</td></tr>
<tr><td><b>Nachricht</b></td><td>[+$fdat{msg}+]</td></tr>
<tr><td align="center" colspan="2">
<form action="input.htm" method="GET">
<input type="submit" name="send"
value="Send to [+ $MailTo +]">
<input type="submit" name="input" value="Daten abändern">
[$hidden$]
</form>
</td></tr>
</table>
[$elsif defined($fdat{send}) and $#errors == -1$]
[- MailFormTo ($MailTo,'Formdata','email') -]
<hr><h3>Ihre Nachricht wurde abgeschickt</h3>
[$else$]
<hr><h3>Bitte geben Sie Ihre Daten ein</h3>
<form action="input.htm" method="GET">
<table>
[$if $#errors != -1 $]
<tr><td colspan="2">
<table>
<tr><td>[+$errors[$row]+]</td></tr>
</table>
</td></tr>
[$endif$]
<tr><td><b>Name</b></td> <td><input type="text"
name="name"></td></tr>
<tr><td><b>E-Mail</b></td> <td><input type="text"
name="email"></td></tr>
( run in 0.423 second using v1.01-cache-2.11-cpan-e1769b4cff6 )