Gesendete Formulardaten sind in %fdat/@Z<>ffld verfügbar | top |
Der Hash %fdat enthält alle Werte der Formularfelder. Das Array
@Z<>ffld enthält die Namen in der Reihenfolge wie sie gesendet wurden.
Input/Textarea/Select tags erhalten ihre Werte aus %fdat | top |
Wenn innerhalb des HTML Codes kein Wert für ein Inputtag angegeben ist
und Daten in %fdat dafür verfügbar sind, fügt Embperl automatisch den
Wert aus %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.
[$ hidden $] erzeugt versteckte Formularfelder für alle Werte aus %fdat, die
bis dahin nicht in einem anderem Formularfeld ausgegeben wurden. Dies ist
hilfreich, wenn Daten über mehere Formulare hinweg transportiert werden müssen.
Ein einfaches Texteingabe/Bestätigungs Formular | top |
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 $fdat{check} , $fdat{send} und ob $fdat{name} und
$fdat{email} Daten enthalten, entscheidet das Dokument welcher Teil zur
Ausführung kommt. [- $MailTo = 'user\@example.org' ;
@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>
<tr><td><b>Nachricht</b></td> <td><input type="text"
name="msg"></td></tr>
<tr><td colspan=2><input type="submit"
name="check" value="Send"></td></tr> </table>
</form>
[$endif$]
|