2010-03-19 41 views
1

我已经为用户设置了一个PHP表单,用于输入所有要存储在数据库中的信息。我使用了NetTut +教程来做到这一点。如何在提交到数据库之前将PHP表单分成两部分?

我已经把表格提交到数据库中,但有很多额外的问题,我想将表单分成两个单独的部分。很明显,第一页会说在第二步之前继续下一步,允许将表单提交给数据库。

用户看到的内容应该被拆分,但应该都是同一表单的一部分。提交之前的步骤1>步骤2。

有人会知道或推荐任何方法来做到这一点吗?

我附上了下面的代码。

<form method="post" action=""> 

    <fieldset> 

     <ul> 
      <li> 
       <label for="code">Entry Code On-Pack</label> 
       <input type="text" name="code" /> 
      </li> 
      <li> 
       <label for="name">Name</label> 
       <input type="text" name="name" /> 
      </li> 
      <li> 
       <label for="email">Email</label> 
       <input type="text" name="email" /> 
      </li> 
      <li> 
       <label for="addressone">Address</label> 
       <input type="text" name="addressone" /> 
      </li> 
      <li> 
       <label for="addressone">&nbsp;</label> 
       <input type="text" name="addresstwo" /> 
      </li> 
      <li> 
       <label for="addressone">&nbsp;</label> 
       <input type="text" name="addressthree" />  
      </li> 
      <li> 
       <label for="telephone">Telephone</label> 
       <input type="text" name="telephone" /> 
      </li> 
      <li> 
       <label for="dob">Date of Birth</label> 
       <input name="dob" type="text" value="[dd/mm/yy]" /> 
      </li> 
      <li> 
       <label for="q1">Where have you seen Cookstown advertised?</label><br /> 
       <input type="checkbox" name="q1cb1" /><label for="q1cb1">Magazines</label><br /> 
       <input type="checkbox" name="q1cb2" /><label for="q1cb2">Billboards</label><br /> 
       <input type="checkbox" name="q1cb3" /><label for="q1cb3">Television</label><br /> 
       <input type="checkbox" name="q1cb4" /><label for="q1cb4">Radio</label><br /> 
       <input type="checkbox" name="q1cb5" /><label for="q1cb5">Online</label><br /> 
       <input type="checkbox" name="q1cb6" /><label for="q1cb6">Public Transport</label><br /> 
       <input type="checkbox" name="q1cb7" /><label for="q1cb7">Bus Stops</label><br /> 
      </li> 
      <li> 
       <label for="q2">How well do you remember those advertisments?</label><br /> 
       <input type="radio" name="q2" value="VeryWell"/><label for="q1cb1">Very well</label><br /> 
       <input type="radio" name="q2" value="FairlyWell"/><label for="q1cb2">Fairly well</label><br /> 
       <input type="radio" name="q2" value="FewDetails"/><label for="q1cb3">A few details</label><br /> 
       <input type="radio" name="q2" value="NotAtAll"/><label for="q1cb4">Not at all</label><br /> 
      </li> 
       <label for="tc">Do you accept the terms and conditions</label> 
       <input type="checkbox" name="tc" class="styled" /> 
      </li> 
      <li>&nbsp;</li> 
      <li> 
       <input type="submit" value="Enter Competition" class="large blue button" name="signup" />   
      </li> 
     </ul> 

    </fieldset> 

</form> 

回答

0

会话通常是这样做的首选方式,但隐藏的表单字段将工作一样好。

这很容易做到 - 在第一次提交后,将值存储到会话中 - 如果你喜欢,首先验证它们,事实上这可能是一个好主意。然后转到下一页,一旦提交,验证第二组答案并将它们放入数据库中。

隐藏的表单字段也起作用,但我更喜欢基于会话的方法。

祝你好运!

0

另一种选择是将附加字段放在同一页面上的隐藏div中,并在第一组完成后使用javascript显示它们。对你的好处是它可以让你的表单处理更简单。同样对于您的用户,他们也不会往返服务器以获取表单的其他部分。

这当然要求你的用户打开javascript。最佳做法是默认显示同一页面上的所有字段,然后在页面呈现前使用JS隐藏第二批。

+0

嗨Surugman, 你能够告诉我更多关于这种方法。这正是我想要做的,但似乎无法找到一种方法或教程来帮助我这样做。 我目前有一个窗体,里面有列表项以及其中的字段和其他输入类型。我将如何将这些隐藏区域放置在一个按钮中以扩大其一半并隐藏另一半? 非常感谢您的帮助,提前。 :) – 2010-03-19 17:59:20

+0

如果您正在使用两个部分使用单一表单的路线,表单中的两个单独的字段集(带有合适的图例)比div更合适。 – akamike 2010-03-19 18:06:17

相关问题