如何使用php发布复选框?
这是我的表单,类别来自带有while循环的数据库。 我只想将选中的输入插入数据库 如何检测选中的复选框如何使用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>
<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;
?>