Re: [請益] smarty表單問題

看板PHP作者 (請勿忘記密碼)時間18年前 (2007/03/06 15:57), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #15xHxjYN (PHP)
討論串 (同標題文章)
文章代碼(AID): #15xHxjYN (PHP)