Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

The timelineJS requires a specified JSON format. So far with this php code I'm able to generate an output like this below:

$rs = mysql_query("SELECT filename, data AS added,  f.image as media, f.info_hash AS hash, c.name AS category FROM xbtit_files f LEFT JOIN xbtit_categories c ON f.category = c.id WHERE f.uploader =  '2' ORDER BY added DESC"); 

$json_arr = array();
while($row = mysql_fetch_array($rs)) { 
if (strlen(htmlspecialchars($row[filename])) > 30)
  $t_name  = substr(htmlspecialchars($row[filename]), 0, 30)."...";
else
  $t_name  = htmlspecialchars($row[filename]);

$row_arr['credit'] = $row['hash'];
$row_arr['caption'] = $row['category'];
$row_arr['media'] = $row['media'];
$row_arr['headline'] = $t_name;
$row_arr['startDate'] = $row[added];
array_push($json_arr,$row_arr);
} 
$json = '{"timeline":
    {
        "headline":"UPLOADER1",
        "type":"default",
        "text":"Show all uploads of this uploader",
        "asset": {
            "media":"http://localhost/torrent/torrentimg/49ac3aa95ec6d2ae56772a158b41d4aa62a7b78c.jpg",
            "credit":"Credit Name Goes Here",
            "caption":"Caption text goes here"
            },
        "date":
            '.json_encode($json_arr).'

    }}';
echo $json;

This gives output like this:

{
"timeline": {
    "headline": "UPLOADER1",
    "type": "default",
    "text": "Show all uploads of this uploader",
    "asset": {
        "media": "http://localhost/torrent/torrentimg/49ac3aa95ec6d2ae56772a158b41d4aa62a7b78c.jpg",
        "credit": "Credit Name Goes Here",
        "caption": "Caption text goes here"
    },
    "date": [
        {
            "headline": "Avatar",
            "startDate": "2012-06-26 12:03:13"
        },
        {
            "headline": "Rio BRRIP x264-1080p-2011",
            "startDate": "2012-06-26 11:59:19"
        },
        {
            "headline": "The Number 23 (2007)",
            "startDate": "2012-06-26 11:50:44"
        },
        {
            "headline": "Fate Stay night",
            "startDate": "2012-06-26 11:41:01"
        }
    ]
}
}

How would I be able to get something like this:

{
"timeline":
{
    "headline":"UPLOADER 1",
    "type":"default",
    "text":"Name of the Uploader",
    "startDate":"2012,1,26",
    "date": [
        {
            "startDate":"2012,2,30",
            "headline":"Hanky Panky (Torrent Name)",
            "text":"<p>Some description of the torrent.</p>",
            "asset":
            {
                "media":"Poster.jpg",
                "credit":"",
                "caption":""
            }
        },
        {
            "startDate":"2012,2,18",
            "headline":"Torrent Name 2",
            "text":"This movie was released on... The actors are....",
            "asset":
            {
                "media":"Poster1.jpg",
                "credit":"",
                "caption":"Directed and Edited by Matt Mayer, Produced by Seth Keim, Written by Eliot Glazer. Featuring Eliot and Ilana Glazer, who are siblings, not married."
            }
        }
    ]
}
}

Note that: there's JSON objects inside the object asset. How this could be achieved? Can anybody help??

share|improve this question

2 Answers 2

json_encode() can convert PHP multi-dimensional array into a json string without problem, so create PHP array with desired structure and call json_encode on it.

share|improve this answer
    
That's where I'm stuck. I can;t figure out how I would construct the multidimensional array. –  Imtiaz Mar 3 '13 at 20:16
1  
well, that makes it completely different question. $a = array(); $a['firstKey'] = array(); $a['firstKey']['secondKey'] = 'theValue'; –  amik Mar 4 '13 at 21:21
up vote 1 down vote accepted

I found the solution by tinkering with the arrays as suggested by user1660584. Thanks.

The multidimentional array will look like this:

$c['timeline']['headline']= 'uploader1';
$c['timeline']['type'] = 'Default Type';
$c['timeline']['text'] = 'Some Text about the uploader';
$c['timeline']['asset']['media'] = 'torrentimg/49ac3aa95ec6d2ae56772a158b41d4aa62a7b78c.jpg';
$c['timeline']['asset']['caption'] = 'Assets consists of media files, caption and categories';
$c['timeline']['date'] = array(array(
    "startDate"=>'asfsf as fa',
    "headline"=>'kjahdas a',
    "text"=>'ahidahs kahs',
    "asset" => array(
                "media"=> 'image.png',
                "credit"=> 'Category',
                "caption"=> 'Some Text'
    )
),array(
    "startDate"=>'asfsf as fa',
    "headline"=>'kjahdas a',
    "text"=>'ahidahs kahs',
    "asset" => array(
                "media"=> 'image.png',
                "credit"=> 'Category',
                "caption"=> 'Some Text'
    )
));
echo json_encode($c);

I just have to put it inside a loop with the sql relult.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.