2012-09-18 54 views
0

我在MySQL有一個表startdateenddateJSON MySQL的開始和結束之間的每個日期添加到JSON編碼

1排的一個例子是(忽略整個命名):

eg 
startdate -> 20121224 
endate -> 20121226 
title -> name 
etc 

當前腳本我有偉大的作品,並增加了JSON的每一行,但..... 我想....爲每個mysql行獲取startdate和enddate,將startdate和enddate中的每個日期添加到JSON編碼中。

爲此而不是1行返回上面的例子:

[{ 
    "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" 
}] 

它將返回3 JSON用於一個行對每個日期:

[{ 
    "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)); 
?> 

回答

1

添加到您的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; 
    } 
} 

您可能需要調整它,

相關問題