Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php发布复选框?_Php_Html - Fatal编程技术网

如何使用php发布复选框?

如何使用php发布复选框?,php,html,Php,Html,这是我的表单,类别来自带有while循环的数据库。 我只想将选中的输入插入数据库 如何检测选中的复选框 <form action="account.php" method="POST"> <ul class="account-info"> <li>Category1 : <input type="checkbox" value="val1" name="cat1"></li> <li>

这是我的表单,类别来自带有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>

  • 类别1:
  • 类别2:
  • 类别3:
  • 类别100:

account.php
中,只有复选框才会被过账。由于您将它们命名为相同的名称,因此只会发布1个,即最后一个复选框。如果希望它们具有相同的名称并以数组形式出现,则需要在名称后添加
[]
,如下所示:

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

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

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

 $i = 0; 
    while(true){
    if ($_POST["cat".$i."]) {   
        //category activated
    } 
    else { 
        //no category found -> loop ends
        break;
    }
    $i++;
    }
name=“cat1”
更改为
name=“cat[1][]”

在您的
account.php
页面中

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

首先,将选项设置为具有相同名称的单选按钮,并将其转换为3个可能选项中的1个值。如果你想让它们成为传统的复选框,你必须给它们单独的名字

在您的PHP中,您将检查是否存在有关复选框名称的
array\u key\u
,这是我通常将复选框字段转换为更易于使用的形式的方式:

<?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;
?>


POST数组中只传递选定的复选框。您可能会想到一个单选按钮。(因为您询问选择了哪一个,并将其命名为所有cat1)。您的代码中有复选框,每个复选框都需要一个唯一的名称,然后您可以在发布表单时在php中检查每个复选框。@右键单击它们不需要唯一的名称,请检查我的答案。@JayBlanchard的可能重复项没问题,但我不知道如何检测选中的输入。通常我使用它:
$String=$\u POST[“postedstring”]但我正在使用while循环从数据库中获取复选框。如何在account.phy中获取这些值,但cat2?或cat75我不知道将添加多少类别。@sonerkaya使用
[]
将只生成复选框的数组。因此,如果他们检查cat2和cat75,则只有这两个会添加到阵列中。所以,使用foreach循环,它将循环两次,只允许您使用这两个值?或者cat75,我不知道会增加多少类别。我无法手动编写代码,因为类别来自数据库。那么您想对名称执行此操作吗?或者cat75,我不知道会增加多少类别。我无法手动编写代码,因为类别来自数据库
<?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;
?>