可以使用PHP完全处理表单提交还是我需要其他技术?

时间:2012-04-02 00:43:19

标签: php checkbox

我有一个表格,允许用户选择他们希望申请的许可证类型。有3种类型的许可证类别和8种许可证类型。

请查看此屏幕截图,以便更好地理解:http://imgur.com/qOlv8

对于课程,用户只能选择1.但对于类别,用户可以应用多个或单个。

用户可以选择2个类别但是0个类别。同样,用户可以选择1个类和0个类别。但是用户必须至少从11个选项中选择一些东西。

EG。用户仅申请1级或用户申请CAT 2TT和CAT 3PG。

我的表格编码:

  <div class="contents">
  <form id="applicationoptions" method="post" action="s_apply_now.php">
  <div id="optionshead">Class :</div>
      <div id="classoptions">
          <input type="radio" name="class" value="1" /> Class 1 Permit             &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <input type="radio" name="class" value="2" /> Class 2 Permit &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <input type="radio" name="class" value="3" /> Class 3 Permit
      </div>
  <div id="optionshead2">Categories :</div>
      <div id="catoptions">
          <input type="checkbox" name="cat" value="1" /> CAT 2PG &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <input type="checkbox" name="cat" value="2" /> CAT 1OR &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <input type="checkbox" name="cat" value="3" /> CAT 2TT <br/><br/>
          <input type="checkbox" name="cat" value="4" /> CAT 3PG &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <input type="checkbox" name="cat" value="5" /> CAT 2OR &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <input type="checkbox" name="cat" value="6" /> CAT 3TT <br/><br/>
          <input type="checkbox" name="cat" value="7" /> CAT 4PG &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <input type="checkbox" name="cat" value="8" /> CAT 3OR
      </div>
  <div class="applynext">
 <input class="applynextbutton" type="submit" name="applynextbutton" value="PROCEED" />
 </div>
  </form>
  </div>

用户选中后,系统将分离选择并将其存储在数据库中。

数据库架构: permit(PID,EID,PTYPE,STATUS,MID,HRID)

如果用户没有选择任何内容,系统会提醒他们并要求他们选择

如果用户选择2个以上的课程,系统会提醒他们只选择1个课程。

你们觉得怎么样? PHP能够让我完成这些意图吗?

P.S。:请告诉我如何在不使用太多&npsb;的情况下制作空格。有没有办法将单选按钮更改为复选框并禁用多项选择?

伙计们......我有一个问题......我如何在php中从复选框中检索数据?任何例子? 我试过array []它但似乎无法工作..

2 个答案:

答案 0 :(得分:1)

PHP没问题,它笑着做这个并且变得懒惰。但没有笑话:绝对没有问题。您可以根据需要使用尽可能多的if和else语句(在最长执行时间内,但不要让它比现有的更难)。

至于您的复选框问题,正如您现在所做的那样是正确的方法。但是,您可以使用javascript函数将标准复选框功能“破解”为无线电。有关相关信息,请参阅http://www.velocityreviews.com/forums/t80854-how-to-allow-only-one-checkbox-to-be-checked-in-a-group-of-checkboxes.html和/或Javascript and only one Checkbox - undefined

您还可以让收音机看起来更好看,在这里查看有关该收音机的更多信息http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/您还可以添加一个标有'Nothing'标签的空收音机进行选择,然后选择一个标准。这将解决您的问题 - 许多道路通往罗马。 :)

至于最终的空间问题,请使用适当的化妆品。

<div style="width: 250px;">a button</div>
<div style="width: 250px; float: right;">a second button</div>

例如。您还可以使用较旧的表结构:

<table><tr><td width="250">a button</td><td width="250">a second button</td></tr></table>

其中table是表,tr是行,td是单元格。

答案 1 :(得分:1)

是的PHP会起作用。您可以通过$ _POST集合获取必要的数据,并与您用于存储它们的任何数据库进行通信。

对于间距,我建议learning CSS并避免添加大量不间断的空格。

就处理复选框值而言,您似乎希望允许用户选择与一个名称(class和cat)对应的多个值。正如您所拥有的那样,PHP将最终得到他们选择的最后一个值。您可以修改表单输入的名称,以使PHP将它们视为后端的数组。然后当你抓住$ _POST ['class']时,你会得到一个数组。

<input type="checkbox" name="class[]" value="1" /> First class
<input type="checkbox" name="class[]" value="2" /> Second class

如果用户检查了这两个,你会在PHP中看到这个

$classes = $_POST['class'];
// array(1, 2)

如果他们只选了一个,那么你在数组中只有一个元素。

如果数组中的键使得处理数据更容易,你甚至可以使它成为一个关联数组:

<input type="checkbox" name="class[first]" value="1" /> First class
<input type="checkbox" name="class[second]" value="2" /> Second class

和PHP

$classes = $_POST['class'];
// array('first'=>1, 'second'=>2)