Embperl - building dynamic websites with Perl


Formularfelder
[ << Prev: Dynamische Tabellen ] [ Content ] [ Next: Persistente Daten (Sessions) >> ]



Gesendete Formulardaten sind in %fdat/@Z<>ffld verfügbartop

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 %fdattop

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 $]top

[$ 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 Formulartop

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$]

[ << Prev: Dynamische Tabellen ] [ Content ] [ Next: Persistente Daten (Sessions) >> ]


© 1997-2023 Gerald Richter / actevy