我有一个复选框列表,当我选中复选框时,它应该将值插入数据库。当我取消选中该复选框时,它应该是从数据库中删除数据。
如果我在复选框中指定一个值,那么我只能获得选中的复选框值。 如果我使用隐藏字段,那么我可以得到所有值的复选框,但后来我不知道哪1是检查,哪1是取消选中。
任何人都可以提供帮助吗?
$num="3";
for($i=1;$i<10;$i++){
?>
<form name="form1" method="post" action="testcheckbox.php">
<input type="hidden" name="task" value="validatesn">
<input type="hidden" name="validate[]" value="<?php echo $i;?>">
<input type="checkbox" name="validate[]" <?php if($num==$i){ echo "checked=checked";} ?> />Serialno<?php echo $i."<br/>"; ?>
<?php
$i++;
}
?>
<input type="submit" name="submit" value="Validate" />
</form>
<?php
if($_REQUEST['task'] == 'validatesn'){
$valid=$_POST['validate'];
foreach($valid as $v){
echo $v; //show all checkbox values
//if checkbox= checked then insert value into database
//if untick the checked checkbox then delete data from database
}
}
?>
答案 0 :(得分:6)
复选框的标记如下所示:
<input type="checkbox" value="myvalue" name="validate[]">
当您发布表单时,您会在validate
中看到一个名为$_POST
的数组。
如果该数组为空,则不检查该复选框。如果该数组包含“myvalue”,则选中该复选框。
如果您正在处理多个复选框,请执行以下操作:
<input type="checkbox" value="myvalue1" name="validate[]">
<input type="checkbox" value="myvalue2" name="validate[]">
您的脚本需要知道validate
中的$_POST
数组可以包含myvalue1
和myvalue2
的值。然后你可以查看$_POST['validate']
,如果数组中存在该值,则选中该复选框。您可以使用array_diff()
轻松完成此操作,而无需编写任何循环。
答案 1 :(得分:2)
我在blog中找到了这个(不是语义但工作)的解决方案,其中包括首先引入一个隐藏的输入,该输入具有相同的名称和未选中复选框时要发送的值:
<input type="hidden" name="box1" value="0" />
<input type="checkbox" name="box1" value="1" />
它有一些缺点,特别是如果您将多个复选框作为数组发送,但是可以解决常见情况。
答案 2 :(得分:1)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<form name="chk" action="" method="post">
<?php $num=2;
for($q=0; $num>$q; $q++)
{
?>
<input type="text" name="fruits[<?php echo $q; ?>][a]" >
<input type="text" name="fruits[<?php echo $q; ?>][b]">
<input type="text" name="fruits[<?php echo $q; ?>][c]">
<input type="hidden" name="fruits[<?php echo $q; ?>][d]" value="0" />
<input type="checkbox" name="fruits[<?php echo $q; ?>][d]" value="1" />
<input type="hidden" name="fruits[<?php echo $q; ?>][e]" value="0" />
<input type="checkbox" name="fruits[<?php echo $q; ?>][e]" value="1" />
<br />
<?php
}
?>
<input type="submit" name="ok" value="ok" />
</form>
<?php
if(isset($_POST['ok']))
{
foreach($_POST['fruits'] as $company=>$row){
foreach($row as $fruit){
echo $fruit;
}
}
}
?>
</body>
</html>