复选框代码不起作用?

时间:2015-12-30 20:18:23

标签: php sql json

我有以下代码应该接受来自用户的复选框数据,并通过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.

2 个答案:

答案 0 :(得分:0)

解决方案就是这个代码:

$salesman_array[]; 

应该是:

$salesman_array = array();

<小时/> 感谢@FirstOne的评论,这有助于修复阵列并使保存部分正确。另一个问题只是命名调用数据的方案。

答案 1 :(得分:-1)

您忘记做的是初始化阵列。 $ array []用于添加NEW元素。不幸的是,当数组尚未初始化时,这不起作用,因此PHP大惊小怪。

您只需添加以下行:

$salesmen_array = [];

(在你的其他代码之前,在函数中)