Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 开始和结束之间的每个日期的JSON MySQL添加到JSON编码_Php_Arrays_Associative Array_Json - Fatal编程技术网

Php 开始和结束之间的每个日期的JSON MySQL添加到JSON编码

Php 开始和结束之间的每个日期的JSON MySQL添加到JSON编码,php,arrays,associative-array,json,Php,Arrays,Associative Array,Json,我在MySQL中有一个表,它有一个startdate和enddate 一行的示例如下(忽略整个命名): 我目前使用的脚本非常好,每行都添加了JSON,但是。。。。。 我想。。。。对于每个mysql行,获取startdate和enddate,对于startdate和enddate中包含的每个日期,添加到JSON编码 而不是上述返回一行的示例: [{ "user": "378", "date": "UNIX_TIMESTAMP(startdate)", "title": "n

我在MySQL中有一个表,它有一个
startdate
enddate

一行的示例如下(忽略整个命名):

我目前使用的脚本非常好,每行都添加了JSON,但是。。。。。 我想。。。。对于每个mysql行,获取startdate和enddate,对于startdate和enddate中包含的每个日期,添加到JSON编码

而不是上述返回一行的示例:

[{
    "user": "378",
    "date": "UNIX_TIMESTAMP(startdate)",
    "title": "name",
    "description": "6 Days",
    "url": "UNIX_TIMESTAMP(enddate)",
    "bmanager": "manager name",
    "academic_year": "20120801",
    "division": "division name",
    "manager_id": "3"
}]
[{
    "user": "378",
    "date": "UNIX_TIMESTAMP(1st date)",
    "title": "name",
    "description": "6 Days",
    "url": "UNIX_TIMESTAMP(1st date)",
    "bmanager": "manager name",
    "academic_year": "20120801",
    "division": "division name",
    "manager_id": "3"
}, {
    "user": "378",
    "date": "UNIX_TIMESTAMP(2nd date)",
    "title": "name",
    "description": "6 Days",
    "url": "UNIX_TIMESTAMP(2nd date)",
    "bmanager": "manager name",
    "academic_year": "20120801",
    "division": "division name",
    "manager_id": "3"
}, {
    "user": "378",
    "date": "UNIX_TIMESTAMP(3rd date)",
    "title": "name",
    "description": "6 Days",
    "url": "UNIX_TIMESTAMP(3rd date)",
    "bmanager": "manager name",
    "academic_year": "20120801",
    "division": "division name",
    "manager_id": "3"
}, ]

它将为每个日期的一行返回3个JSON:

[{
    "user": "378",
    "date": "UNIX_TIMESTAMP(startdate)",
    "title": "name",
    "description": "6 Days",
    "url": "UNIX_TIMESTAMP(enddate)",
    "bmanager": "manager name",
    "academic_year": "20120801",
    "division": "division name",
    "manager_id": "3"
}]
[{
    "user": "378",
    "date": "UNIX_TIMESTAMP(1st date)",
    "title": "name",
    "description": "6 Days",
    "url": "UNIX_TIMESTAMP(1st date)",
    "bmanager": "manager name",
    "academic_year": "20120801",
    "division": "division name",
    "manager_id": "3"
}, {
    "user": "378",
    "date": "UNIX_TIMESTAMP(2nd date)",
    "title": "name",
    "description": "6 Days",
    "url": "UNIX_TIMESTAMP(2nd date)",
    "bmanager": "manager name",
    "academic_year": "20120801",
    "division": "division name",
    "manager_id": "3"
}, {
    "user": "378",
    "date": "UNIX_TIMESTAMP(3rd date)",
    "title": "name",
    "description": "6 Days",
    "url": "UNIX_TIMESTAMP(3rd date)",
    "bmanager": "manager name",
    "academic_year": "20120801",
    "division": "division name",
    "manager_id": "3"
}, ]

JSON

<?php
    header('Content-type: text/json');

    $lmanager = $_GET["lmanager"];

    $sqldata = mysql_query('
    SELECT
    requests.user,
    UNIX_TIMESTAMP(requests.start_date) AS date,
    requests.employee AS title, 
    requests.days AS description,
    UNIX_TIMESTAMP(requests.end_date) AS url,
    business.line_manager AS bmanager,
    requests.academic_year,
    business.academic_year,
    business.division,
    line_managers.userid AS manager_id
    FROM requests 
    INNER JOIN holiday_entitlement_business_manual AS business ON requests.user=business.userid AND requests.academic_year=business.academic_year
    INNER JOIN line_managers ON business.line_manager=line_managers.name
    WHERE requests.approved = 1 AND line_managers.userid = '.$lmanager.'
    ');

    $posts = array();

    while($row = mysql_fetch_assoc($sqldata))
    {
        $row['date'] = $row['date'].'000';
        $row['url'] = $row['url'].'000';
        $row['description'] = $row['description'].' Days';
        $posts[] = $row;
    }

    mysql_free_result($sqldata);
    die(json_encode($posts));
?>

将此添加到sql select查询:

select datediff(requests.end_date, requests.start_date) as numdays
然后像这样做:

while($row = mysql_fetch_assoc($sqldata))
{
    for($i = 0; $i < $row['numdays']; $i++){
        $row['date'] = $row['date']+$i*24*60*60; // add 24 hours in seconds to the start_date stamp
        $posts[] = $row;
    }
}
while($row=mysql\u fetch\u assoc($sqldata))
{
对于($i=0;$i<$row['numdays'];$i++){
$row['date']=$row['date']+$i*24*60*60;//在开始日期戳中以秒为单位添加24小时
$posts[]=$row;
}
}
你可能需要调整一下