我们通常用数据获取post输入类型的值。但现在我想知道如果检查或取消选中checbox。 这是我的代码:
while (!$listof_artist->EOF) {
$id = $listof_artist->fields['id'];
$arr_id[] = $id;
echo "<tr><td><input type='checkbox' value='".$id."' name='chkid[]' id='chkid[]' /></td>";
}
if(isset($_POST['submit'])){
foreach($_POST['chkid'] as $checkbox){
//code for add
}
这是我的算法: 如果提交是发布的话
for each checbox is check
//add
foreach checbox not check
//code for not check
请帮忙。谢谢
答案 0 :(得分:1)
获取未发布到您网址的值就像询问尚未发现的所有行星的名称一样。
您正在做的事情有一个简单的解决方法,假设您有10个复选框。您知道名称,并且您知道这些值,因为您创建了它们。转到您处理表单提交的页面,并告诉您代码的所有名称。然后代码检查哪一个具有$_POST
中的值,哪一个没有。这会给你答案。
使用简单的HTML不会将未选中复选框的值发送到您的表单处理网址。
答案 1 :(得分:1)
每当提交表单时,只能通过$_POST[var]
获取已检查的复选框。
所以在你的问题中检查它的简单:
foreach($_POST['chkid'] as $checkbox){
//code for add
}
但是对于未经检查的那些,你必须运行一个循环来匹配数据库,如果它被检查了。
或者这是一个更好的出路。
而不是
<input type='checkbox' value='".$id."' name='chkid[]' id='chkid[]' />
使用
<input type='checkbox' value='$id' name='$id' id='$id' />
现在您可以通过名称
轻松检查它们if(isset($_POST[$id])){
//this is checked
}
else{
//its not checked
}
注意: 如果$id
包含空格或者太大,则将某些计数变量更改为名称。
这是一个运行它的小测试代码,它会让你更好地理解。
<?php
if(!empty($_POST['c']))
print_r($_POST['c']);
?>
<form action="" method="post">
<input type="checkbox" name="c[]" value="1" />
<input type="checkbox" name="c[]" value="2" />
<input type="checkbox" name="c[]" value="3" />
<input type="checkbox" name="c[]" value="4" />
<input type="checkbox" name="c[]" value="5" />
<input type="submit">
</form>
答案 2 :(得分:1)
正如其他人所说,你无法获得尚未发送的表单元素的名称/值,但是在提交表单之前,只需要一些JavaScript,就可以找到哪些复选框没有选中,收集他们的名字/值并手动将其附加到表单数据并将其发送到服务器。
正如提示一样,此代码会收集表单中的unchecked
复选框,然后您可以将其(例如,通过Ajax请求中的hidden
输入字段或参数发送到服务器)
$("input:checkbox:not(:checked)")
答案 3 :(得分:1)
与其他答案已经指出的类似,这是一种方法:
while (!$listof_artist->EOF) {
$id = $listof_artist->fields['id'];
$arr_id[] = $id;
echo "<tr><td><input type='checkbox' value='$id' name='$id' id='$id' /></td>";
}
if(isset($_POST['submit'])){
foreach($arr_id as $checkbox){
if (isset($_POST[$checkbox])) {
// Checkbox is checked
echo 'Artist id ' . $checkbox . ' is checked <br/>';
}
else {
// Checkbox is NOT checked
echo 'Artist id ' . $checkbox . ' is NOT checked <br/>';
}
}