php - 从数据库中获取值并将它们设置为数组1tomany

时间:2017-09-25 10:31:34

标签: php jquery mysql arrays

我正在尝试从数据库中获取一些值并将它们设置在一个数组中! 阵列必须采用年份的格式:今年可用的月份。

我有不同年份的多个日期,我需要为每年和当年可用的月份取一个明确的值并将它们设置在一个数组中,然后将其发送到ajax调用并将值放入两个下拉列表(一年多,另一个月)。

PHP代码

$select_all = mysqli_query($dbc, "SELECT DISTINCT YEAR(date) AS year, monthname(date) as month 
    FROM salaries 
    where employee_id = '$employeeid1'")or die(mysqli_error($dbc));

$year = array();
while($years = mysqli_fetch_array($select_all)) {
   $year[] = $years;
}
    foreach ($year as $years) {
        $year_array[] = array(
        'year' => $years["year"],
        'month' => $years["month"]

            );
    }
    echo json_encode($year_array);

的jQuery

<script>
$("#employee_id").on("change", function(){
    var employeeid = $("#employee_id").val();
    console.log('ID is: ' + employeeid);
    $.ajax({
        url: 'queries.php',
        type: 'post',
        dataType: 'json',
        data: {employeeid: employeeid},
        success: function(data) {
            var getarray = jQuery.parseJSON(data);
            var year = getarray.year;
            var month = getarray.month;

            console.log('DATAAAA: ' + data);
            $("#c_year").html('<option value = ' + year + '>' + year + '</option>');
            $("#c_month").html('<option value = ' + month + '>' + month + '</option>');


    },
        error: function(jqXHR, textStatus, errorThrown) {
            console.log(textStatus);
            console.log(errorThrown);
        }
    });
});    

我的主页给出了错误

错误

  

parsererror       index.php:102 SyntaxError:位于0的JSON中的意外标记e           在JSON.parse()           在n.parseJSON(jquery-2.1.3.js:4)           at uc(jquery-2.1.3.js:4)           at x(jquery-2.1.3.js:4)           在XMLHttpRequest。 (jquery的-2.1.3.js:4)

当我回应我的结果时,我得到零...任何想法我做错了什么?

2 个答案:

答案 0 :(得分:0)

如果您的ajax请求响应如下:

[{year:“2015”,month:“Jan”},{year:“2016”,month:“Jan”},{year:“2018”,month:“Jan”}}

要获取年份和月份,您的jquery代码应该是这样的:

var getarray = jQuery.parseJSON(data);

for(var loop=0; loop< getarray.length; loop++)
{
var year = getarray[loop].year;
var month = getarray[loop].month;
}

如果您的ajax响应如下:

{年: “2017”,月: “SEP”}

要获取年份和月份,您的jquery代码应该是这样的:

var getarray = jQuery.parseJSON(data);
var year = getarray.year;
var month = getarray.month;

答案 1 :(得分:0)

我使用的PHP部分,它工作正常。我正在使用一个数组,我指定第一列,以便第二列每年都有相应的月份!

$select_all = mysqli_query($conn, "SELECT DISTINCT YEAR(date) AS year, monthname(date) AS month 
    FROM table 
    where e_id = '$eid' ORDER BY YEAR(date), Month(date)")or die(mysqli_error());

$json   = array();
while($row = mysqli_fetch_array($select_all)){


    $year = $row['year'];
    $month = $row['month'];
    if (!array_key_exists($year, $json)){
        $json[$year] = array();
    }
    array_push($json[$year], $month);       
}

echo json_encode($json);
exit;