如何验证多复选框状态?

发布于 2024-12-10 17:13:08 字数 1129 浏览 0 评论 0原文

我正在使用 绝对位置的验证我的表单的引擎。我想检查是否至少选择了组中的一个复选框。在示例中,它是通过设置相同的名称来完成的复选框组的 属性。 我无法使用相同的名称命名复选框,因为我使用以下代码将它们的状态保存在数据库中:

$values = array(
    'checkbox1'         => null,
    'checkbox2'         => null
);

foreach (array_intersect_key($_POST, $values) as $key => $value) {
    $values[$key] = mysql_real_escape_string($value);
}

$query_add_candidate=sprintf("INSERT INTO dbase (checkbox1, checkbox2)    VALUES    ('$values[checkbox1]', '$dates[checkbox2]')"

现在 checkbox1checkbox2 分别进行验证,因为它们具有不同的名称。如何检查所选内容是否至少是其中之一?

这是我的 HTML 代码:

<input class="validate[minCheckbox[1]] checkbox" type="checkbox" name="checkbox1" id="maxcheck1" value="1"/> Text1
<input class="validate[minCheckbox[1]] checkbox" type="checkbox" name="checkbox2" id="maxcheck2" value="2"/> Text2

I am using position absolute's validation engine for my form. I would like to check whether at least one checkbox from group is selected. In examples it is done by setting the same name attribute for group of checkboxes.
I cannot name checkboxes with the same name, because I am saving their state in database with following code:

$values = array(
    'checkbox1'         => null,
    'checkbox2'         => null
);

foreach (array_intersect_key($_POST, $values) as $key => $value) {
    $values[$key] = mysql_real_escape_string($value);
}

$query_add_candidate=sprintf("INSERT INTO dbase (checkbox1, checkbox2)    VALUES    ('$values[checkbox1]', '$dates[checkbox2]')"

Now checkbox1 and checkbox2 are validated individually, beacuse they have different names. How can I check if selected is at least one of them?

Here is my HTML code:

<input class="validate[minCheckbox[1]] checkbox" type="checkbox" name="checkbox1" id="maxcheck1" value="1"/> Text1
<input class="validate[minCheckbox[1]] checkbox" type="checkbox" name="checkbox2" id="maxcheck2" value="2"/> Text2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

软的没边 2024-12-17 17:13:08

在 php 上,

if(!$_POST['checkbox1'] && !$_POST['checkbox2']){
    echo 'Error check at least one';
}

但你真正想要的是一个数组,
HTML、

<input type="checkbox" value="ch1" name="check[]" /> 
<input type="checkbox" value="ch2" name="check[]" />

php,

<?php 
if(empty($_POST['check'])){
 echo 'Error: hey, check at least one will you!?'; 
}

?>

这样您就不必一一检查它们,特别是当您在同一页面上有大量它们时。

注意:您还应该知道,如果未选中复选框,它也不会在 php $_POST 超全局中设置,否则如果选中它,它将显示 value=". ..” 成立,

on php ,

if(!$_POST['checkbox1'] && !$_POST['checkbox2']){
    echo 'Error check at least one';
}

but what you really want is an array,
HTML,

<input type="checkbox" value="ch1" name="check[]" /> 
<input type="checkbox" value="ch2" name="check[]" />

php

<?php 
if(empty($_POST['check'])){
 echo 'Error: hey, check at least one will you!?'; 
}

?>

so this way you don't have to check all of them one by one, especially if you have loads of them on the same page.

NOTICE: You should also know, if checkbox is not ticked it will also not be set on the php $_POST superglobal, otherwise if it is ticked, it will show whatever the value="..." holds,

假装爱人 2024-12-17 17:13:08

如果它已发布,则已检查,

因此,如果您将其放在 $_POST["checkbox_name"] 中,则已检查,否则不会发布。

if its posted then its checked,

so if you have it in $_POST["checkbox_name"] then its checked, otherwise it wont be posted.

恬淡成诗 2024-12-17 17:13:08

您可以添加大量代码以一种糟糕的方式重新实现控制数组,也可以更改构建查询的代码,以便它可以接受控制数组。

我更喜欢后者。

You can either add loads of code to reimplement control arrays in a poor way, or you can alter the code that builds your query so it can accept control arrays.

I would prefer the latter.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文