【问题标题】:Can Form Submissions Be Handled Completely With PHP or Do I Need Other Technologies?可以用 PHP 完全处理表单提交还是我需要其他技术?
【发布时间】:2012-04-02 00:43:19
【问题描述】:

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

请看一下这个截图以便更好地理解:http://imgur.com/qOlv8

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

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

例如。用户仅申请 Class 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>

在用户检查他们的选择后,系统会将选择分离并存储在数据库中。

数据库架构: 许可(PID、EID、PTYPE、STATUS、MID、HRID)

如果用户没有选择任何东西,系统会提醒他们并要求他们选择一些东西

如果用户选择超过 2 个类别,系统会发出警告提醒他们只选择 1 个类别。

你们怎么看? PHP 是否能够让我完成这些意图?

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

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

【问题讨论】:

  • PHP 是完全图灵完备的语言。是的,它将允许您在代码中表达这一点。
  • 为什么人们投票给我但不告诉我哪里出了问题?困惑
  • 投反对票很可能是因为您没有告诉我们您尝试了什么或已经完成了哪些研究。您只是在询问您是否可以做 X,这是非常基础的,并且可以通过您的一些研究来回答。我没有对你投反对票,但这可能是其他人投反对票的部分原因。根据FAQ,关于 SO 的最佳问题表明您已完成研究
  • 没有。您使用 PHP 构建表单。用户填写表格并提交。您使用 PHP 检查数据并输出错误或其他形式或任何必要的。冲洗,重复直到数据有效,然后将其插入数据库。
  • 真的,单选按钮不应该是可取消选择的。您可以使用 3 个按钮,“男性、女性、未指定”,并将单选按钮默认为“未指定”。如果有人不想选择这两个选项之一,他们会选择您的“未指定”选项。看看一些“信誉良好”的网站如何处理同样的问题。您绝对不是在做互联网上没有人从未做过的事情。查看信誉良好的网站(强调信誉良好)以确定 UI/流程应该是什么样子。 :)

标签: php checkbox


【解决方案1】:

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

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

就处理复选框值而言,您似乎希望允许用户选择与一个名称(类和猫)对应的多个值。正如您所拥有的那样,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)

【讨论】:

  • 谢谢...嗯...我如何将数组结果分离到单个变量?我知道我需要一个循环对吗?
  • hmm 我可以使用 list() 和 split() 分别拆分结果吗?
  • 当然,如果它是一个数组,您可以遍历从 $_POST 中提取的变量。我建议不要使用 list()。您不需要拆分任何值,它们都是数组中自己的条目。
  • hmm...嗨,请问我是否只运行echo $classes; 网页上的结果就是“数组”这个词对吗?
  • hmmu 说他们每个人都是数组中自己的条目......但是我如何循环它例如如果它是数组(1,2)我需要得到它喜欢$permit1=1; $permit2=2;?因为数组的长度不知道我如何循环它,这样我就可以将变量的数量与结果的数量相提并论?感谢指导
【解决方案2】:

对 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 是一个单元格。

【讨论】:

  • 哦,是的,我忘记了使用表格...因为我听说如果您的表格中有 div 标签,它根本不起作用...是真的吗?
  • 不,不是真的。但一定要把它们放在&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;div&gt;这里&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;。您也可以在&lt;table&gt;&lt;tr&gt;&lt;td&gt; 周围加上&lt;div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;,所以你有充分的灵活性。
猜你喜欢
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-12
  • 2011-10-28
相关资源
最近更新 更多