Re: [請益] smarty表單問題
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
PHP 近期熱門文章
PTT數位生活區 即時熱門文章