我怎么能用php发布复选框?

时间:2015-07-10 15:53:48

标签: php html

这是我的表单,类别来自带有while循环的数据库。 我想将选中的输入只插入数据库。

如何检测选中的复选框?

<form action="account.php" method="POST">
    <ul class="account-info">
        <li>Category1 : <input type="checkbox" value="val1" name="cat1"></li>
        <li>Category2 : <input type="checkbox" value="val2" name="cat1"></li>
        <li>Category3 : <input type="checkbox" value="val3" name="cat1"></li>
        <!-- while continues -->
        <li>Category100 : <input type="checkbox" value="val100" name="cat1"></li>
    </ul>
    <input type="submit" value="submit" />
</form>

4 个答案:

答案 0 :(得分:2)

account.php中,只会发布复选框。虽然您已将它们全部命名为相同,但只会发布1个,最后一个复选框。如果您希望它们具有相同的名称并以数组形式出现,则需要在名称后面添加[],如下所示:

<input type="checkbox" value="val100" name="cat1[]">

然后在他们提交的account.php中,你可以这样做:

foreach($_POST['cat1'] as $val)
{
    echo "$val<br>";
}

这将显示所有复选框的值。

答案 1 :(得分:0)

您可以这样检查: 此代码将检查哪些类别已激活 假设您的数据库返回从0到x的类别

 $i = 0; 
    while(true){
    if ($_POST["cat".$i."]) {   
        //category activated
    } 
    else { 
        //no category found -> loop ends
        break;
    }
    $i++;
    }

答案 2 :(得分:0)

name="cat1"更改为name="cat[1][]"

account.php

foreach($_POST['cat'] as $category){ 
    foreach($category as $value){
        echo $value;
    }
}

答案 3 :(得分:0)

首先,您可以设置选项,就好像它们是具有相同名称的单选按钮,从3种可能中转换为1个值。如果你想让它们成为传统的复选框,你必须给它们单独的名称。

在你的PHP中你会检查array_key_exists是否有问题的复选框名称,这就是我通常翻译表单中的复选框字段以便更容易使用的方法:

<?php
    $checked = array(
        'cat1' => array_key_exists('cat1', $_POST),
        'cat2' => array_key_exists('cat2', $_POST),
        'cat3' => array_key_exists('cat3', $_POST)
    );
    print_r($checked);
    exit;
?>