作者MrMarcus (请勿忘记密码)
看板PHP
标题Re: [请益] smarty表单问题
时间Tue Mar 6 15:57:32 2007
※ 引述《digitalize (一定需要吗?)》之铭言:
: 请教各位...
: 我作了一个注册表单...
: 实做的方式是先编辑表单的样板
: 然後再用 PHP + Smarty 的方式产生网页
: 但是我发现一个问题
: 当我的表单填入资料返回上一页时
: 如果是单纯的网页...
: 填写的资料还会留在栏位里面
: 但采用smarty的方式则不行...
: 想请教各位是否有方法可以把资料留在栏位上面...
: 万一使用者输入资料错误时
: 回到上一页也不至於需要重新填所有的栏位..
: 谢谢..
把表单资料POST给自己,伺服器端检查资料有误的话,在表单里面
把收到的资料印出来:
<input type="text" name="my_field" value="{$smarty.post.my_field}">
$smarty.post.my_field会印出my_field这个POST变数的值。你不用
去担心当刚开始进入这个表单页面的时候,没有值该怎麽办。此时
Smarty会让这个变数的值是空白的。
把表单POST给自己是经常使用的作法,好处是可以直接在画面上
把输入错误的地方显示出来,并且把之前填写的资料再次带出来
以免得重填一次。此外这个方式也不需要回到上一页这个动作。
程式的流程会像这样:
myform.php:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$errors = $form_validate();
if(empty($errors)) {
save_form();
$smarty->display('thanks.tpl');
exit;
}
$smarty->assign('errors', $errors);
} // if
$smarty->display('myform.tpl');
?>
myform.tpl:
{if $errors}
<p class="error">您输入的资料有以下错误:</p>
{section name=e loop=$errors}
........
{/section}
{/if}
<form method="post" action="myform.php">
姓名:<input type="text" name="myname" value="{$smarty.post.myname}">
......
</form>
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.154.199.81