我有以下代码应该接受来自用户的复选框数据,并通过php将其存储在sql数据库中,但有些东西不是koshir,我似乎无法弄清楚我哪里出错了:(这是到目前为止我所拥有的:
主页表单代码:
<?php
$salesman = json_decode($invoice['salesman'], true);
if(empty($salesman)){
for($i = 1; $i <= 5; $i++){
echo '<input type="checkbox" name="data-invoice-salesman[]" value="'.$i.'"/> '.$i.'<br>';
}
} else {
foreach($salesman as $k => $v){
$i = $k+1;
if($v == "checked") {
echo '<input type="checkbox" name="data-invoice-salesman[]" value="'.$i.'" checked/> '.$i.'<br>'; // if checked, check.
} else {
echo '<input type="checkbox" name="data-invoice-salesman[]" value="'.$i.'"/> '.$i.'<br>'; // if not checked, don't check.
}
}
}
?>
Sql页面代码:
$salesman = $data['data-invoice-salesman']; // this is an array
$salesman_array[]; // create new array
for($i = 1; $i <= 5; $i++){ // loop from 1 to 5
if(in_array($i, $salesman)){ // if value exists (has been selected), stack 'checked', if not, stack ''.
$salesman_array[] = "checked";
} else {
$salesman_array[] = "";
}
}
$salesman_json = mysqli_real_escape_string($this->_con, json_encode($salesman_array)); // encode the array into JSON and then escape it.
答案 0 :(得分:0)
解决方案就是这个代码:
$salesman_array[];
应该是:
$salesman_array = array();
<小时/> 感谢@FirstOne的评论,这有助于修复阵列并使保存部分正确。另一个问题只是命名调用数据的方案。
答案 1 :(得分:-1)
您忘记做的是初始化阵列。 $ array []用于添加NEW元素。不幸的是,当数组尚未初始化时,这不起作用,因此PHP大惊小怪。
您只需添加以下行:
$salesmen_array = [];
(在你的其他代码之前,在函数中)