我正在关注我的sql字段
表格
`cbox1` tinyint(1) NOT NULL default '1',
`cbox2` tinyint(1) NOT NULL default '1',
`cbox3` tinyint(1) NOT NULL default '1',
`cbox3` tinyint(1) NOT NULL default '1',
的index.html
<form method="post">
<input type="hidden" name="blah" value="blah">
<input type="checkbox" name="cbox[]" value="1">
<input type="checkbox" name="cbox[]" value="1">
<input type="checkbox" name="cbox[]" value="1">
<input type="checkbox" name="cbox[]" value="1">
<input type="checkbox" name="cbox[]" value="1">
<button type="submit">Submit</button>
</form>
demo.php
$sql="INSERT INTO freetrail (cbox1, cbox2, cbox3,cbox4)VALUES ('$cbox1', '$cbox2', '$cbox3','$cbox4')";
我想做的是:
a)如果选中该复选框,我想用1
更新相应的字段b)如果取消选中该复选框,我想插入0
字段我如何实现目标
提前致谢
答案 0 :(得分:0)
首先,我会改变这些
<form method="post">
<input type="hidden" name="blah" value="blah">
<input type="checkbox" name="cbox[]" value="1">
<input type="checkbox" name="cbox[]" value="1">
<input type="checkbox" name="cbox[]" value="1">
<input type="checkbox" name="cbox[]" value="1">
<input type="checkbox" name="cbox[]" value="1">
<button type="submit">Submit</button>
</form>
由于您无法告诉severside当前检查哪一个,如果只检查其中一个,则会在$ _POST
中得到类似的内容 array(
'blah' => 'blah', //your hidden field
'cbox' => array(
0 => 1
)
);
如果检查2
array(
'blah' => 'blah', //your hidden field
'cbox' => array(
0 => 1
1 => 1
)
);
但问题是哪2?因此,您需要更改这些名称或值
<input type="checkbox" name="cbox[]" value="1">
<input type="checkbox" name="cbox[]" value="2">
<input type="checkbox" name="cbox[]" value="3">
<input type="checkbox" name="cbox[]" value="4">
<input type="checkbox" name="cbox[]" value="5">
OR
<input type="checkbox" name="cbox1" value="1">
<input type="checkbox" name="cbox2" value="1">
<input type="checkbox" name="cbox3" value="1">
<input type="checkbox" name="cbox4" value="1">
<input type="checkbox" name="cbox5" value="1">
或者如果你想进一步复杂化的话
<input type="checkbox" name="cbox[cbox1]" value="1">
<input type="checkbox" name="cbox[cbox2]" value="1">
<input type="checkbox" name="cbox[cbox3]" value="1">
<input type="checkbox" name="cbox[cbox4]" value="1">
<input type="checkbox" name="cbox[cbox5]" value="1">
根据您选择的内容,您需要检查是否已设置,如果未选中该复选框,则不会将其发送到服务器。根据您的姓名或价值观,有几种方法可以解决这个问题。最好的方法是使用
$cbox1 = isset( $_POST['cbox1'] ) ? 1 : 0; //if you rename them
///or -- ( or something similar for each if you change the value )
if( in_array( 1, $_POST['cbox'] )){
$cbox1 = 1
}else{
$cbox1 = 0;
}
现在选择哪一个应该取决于复选框的数量是已知的,固定的数字还是动态的。如果它是一个固定的数字,我会更改名称(第二个选项),因为它更干净,并且更容易处理服务器端。
答案 1 :(得分:0)
如果HTML组件处于这些安排中
<input type="checkbox" name="chkBx1" value="1">
<input type="checkbox" name="chkBx2" value="2">
在demo.php中
function checkStatus($elementID) {
if (array_key_exists($elementID, $_POST)) {
$status = 1;
} else {
$status = 0;
}
return $status;
}
sql="INSERT INTO freetrail (cbox1, cbox2, cbox3,cbox4)VALUES ($this->chkEditStatus('chkBx1'),($this->chkEditStatus('chkBx1'), ($this->chkEditStatus('chkBx2'), ($this->chkEditStatus('chkBx3'),($this->chkEditStatus('chkBx4'))";