2010-10-16 421 views
3

如何創建跨多頁的表單?我想問很多問題,並根據以前問題的答案,提出新的具體問題。跨越多頁的表單

+2

那麼最新的問題? – 2010-10-16 21:51:36

+1

到目前爲止,你有什麼? – 2010-10-16 21:53:16

回答

1

有幾種方法可以做到這一點:

  • 增量填充數據庫,通過提交提交
  • 將所有表單域的每個頁面上,但是隱藏(<input type='hidden' ...>)中的那些不應該出現(如@Trufa在另一個答案建議)
  • 厚積薄發多數民衆贊成隱含堅持在會話對象(取決於你的服務器架構)
  • 在一個或多個Cookie積累的東西(好像噁心由我列出了它的完整性)

如果您想超級流行,可以在HTML5客戶端存儲中積累信息。當然,這將排除舊的微軟瀏覽器。

0

跨越多個頁面的單一表單並不存在:每個頁面/表單都獨立於其他頁面。

如果您以某種方式跟蹤已輸入的內容(可能在會話變量中),那麼您可以直接在新窗體中顯示新問題,直到獲得所需的所有數據。

5

傳統方法:將所有以前對問題的回答存儲在後續頁面的<input type="hidden">字段中,以便最後一個表單包含整個提交(僅全部不可見)。缺點:文件上傳令人討厭,數據量可能會變大。

常用方法:隨時隨地將答案扔到會話或餅乾中,最後挑選出來。缺點:併發操作以不可預知的衝突結果結束。文件上傳仍然很煩人。我會爲此避免Cookie /會話存儲解決方案。

現代方法:有一個簡單的(長)單一形式,但使用JavaScript只顯示一部分。在點擊「下一步」時,只需隱藏上一頁的內容並顯示下一頁。最後一個按鈕是真正的提交按鈕。

+0

+1應該強調現代的方法。 :) – galambalazs 2010-10-16 22:18:49

+0

+1常用方法。現代的是「酷」,但在客戶端很重。 – sdadffdfd 2010-10-16 22:23:16

0

我假設你的問題,因爲沒有多頁形式這樣的事情,你的意思是你如何通過使用多個頁面,每個包含一個窗體,從用戶建立一組答案。

PHP爲此提供的機制是會話機制。當用戶提交每個頁面時,你將在會話中建立一組答案,當你有一個完整的集合時,會話中的全套答案將被提交給數據庫。

當然,這不是唯一的方法,您也可以在每次提交頁面時逐步將數據添加到數據庫中,但是最終會得到部分答案集,其中人們只完成了第一頁或前幾頁頁面,然後放棄它。你必須編寫代碼來處理這些部分提交。