Posted form data available in %fdat/@Z<>ffld | top |
The hash %fdat contains all values of form fields. The array
@Z<>ffld contains the names in the order in which they were
submitted.
Input/Textarea/Select tags take values from %fdat | top |
If you do not specify a default value for an input tag and a value for
that input tag is available in %fdat, Embperl will automatically
insert this value and send it to the browser. This is similar to the
behavior of CGI.pm. This means that if you post a form to itself, the
browser will display the values you just entered.
[$ hidden $] creates hidden form fields for all fields not in another
input field. This can be used to transport data through confirmation
forms. (For example, a wizard.)
A simple Text input / Confirmation form | top |
The following example shows many of the possibilities of Embperl.
It's a simple form where you can enter your name, your email address
and a message. If you hit the send button, you see the data you just
entered and can confirm the information by hitting the "send via mail"
button, or you can go back to the input form to change the data. If
you confirm your input, the data will be sent to a predefined e-mail
address. The example also shows how you can implement error
checking--if you miss your name or your e- mail address, you will get
a corresponding error message and the input form is shown again. The first part is the error checking; the second part the confirmation
form; the third part sends the mail if the input was ok and is
confirmed; the last part is the input form itself. Depending on the values of $fdat{check}, $fdat{send} and if
$fdat{name} and $fdat{email} contains data, the document decides which
part to show. [- $MailTo = 'user\@example.org' ;
@errors = () ;
if (defined($fdat{check}) || defined($fdat{send}))
{
push @errors, "**Please enter your name" if (!$fdat{name}) ;
push @errors, "**Please enter your e-mail address" if (!$fdat{email}) ;
}
-]
[$if (defined($fdat{check}) and $#errors == -1)$]
[-
delete $fdat{input} ;
delete $fdat{check} ;
delete $fdat{send}
-]
<hr><h3> You have entered the following data:</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>Message</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="Change your data">
[$hidden$]
</form>
</td></tr>
</table>
[$elsif defined($fdat{send}) and $#errors == -1$]
[- MailFormTo ($MailTo,'Formdata','email') -]
<hr><h3>Your input has been sent</h3>
[$else$]
<hr><h3>Please enter your data</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>Message</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$]
|