如何在PHP中验证这些元素?

时间:2014-05-05 07:49:19

标签: php

我有以下名称的复选框:

chk-cloud -a
chk-cloud-b
等等...

chk-dco-a
chk-dco-b
等等...

如何在表单提交后进行验证,以便: 必须勾选来自名称以 chk-cloud chk-dco 开头的复选框中的至少一个元素?

我希望有人能帮助我。

干杯!

3 个答案:

答案 0 :(得分:1)

如果他们是复选框,那么您真正关心的是他们是否有价值。这个价值是多么重要。

您需要做的就是检查$ _GET或$ _POST中的元素(取决于表单提交方法)是否包含该名称的字段。

if (array_key_exists ('chk-cloud-a ', $_POST)) {
    // Do what should happen of that checkbox is checked
}

如果问题是您有多个类似的复选框,那么您可能需要考虑将它们组合在一个数组中。这是通过在字段名称中使用方括号表示法来完成的:

<input type="checkbox" value="1" name="chk-cloud[a]" />
<input type="checkbox" value="1" name="chk-cloud[b]" />
<input type="checkbox" value="1" name="chk-cloud[c]" />
<input type="checkbox" value="1" name="chk-cloud[d]" />

您可以使用循环来处理这样的组

foreach ($_POST [chk-cloud] as $key => $value) { // We're really only interested in the key
    handleCheckbox ($key) // handleCheckbox is some function you've wrote
}

或者

foreach (array_keys ($_POST [chk-cloud]) as $key) { // Logically the same as above

答案 1 :(得分:0)

只需使用preg_match或strpos检查POST中的任何键是否符合您的要求。我个人会制作这些元素的子数组,并检查它是否为空。

答案 2 :(得分:0)

尝试这样:

function checkBoxValidate(){ //method to test checkbox
$array = array('a','b','c','d', ....); // make array for each checkbox name
foreach ($array as $a){
    if((isset($_REQUEST['chk-cloud-'.$a]) || isset($_REQUEST['hk-dco-'.$a])) &&  ($_REQUEST['chk-cloud-'.$a] == 'check_value' || $_REQUEST['hk-dco-'.$a] == 'check_value' ) ){
     return true;
    }
}
return false; //return no check box was checked
}