繁体   English   中英

为timelinejs拉mysql数据?

[英]pulling mysql data for timelinejs?

我正在尝试从mysql数据库中提取数据以创建一个与timelinejs时间轴一起使用的json文件。 问题是必须以某种方式格式化json文件。 我创建了以下代码来正确格式化json,但它只是从数据库中拉出一个条目(特别是最后一个条目)。 你们提供的任何帮助将不胜感激!

<?php
$link = mysql_pconnect("localhost", "root", "********") or die("Could not connect");
mysql_select_db("php_test") or die("Could not select database");
$rs = mysql_query("SELECT * FROM timelinetest");
while($row = mysql_fetch_array($rs, MYSQL_ASSOC)) 
    $object = array
    ('timeline'=>
        array(
        'headline'=>'Georgia History Title Page', 
        'type'=>'default', 
        'text'=> 'Testing Overview', 
        'startDate'=>'1700', 
        'asset'=>array('media'=>'titlepagemedia', 'credit'=>'titlepagecredit', 'caption'=>'titlepagecaption'), 
        'date'=>array(array('startDate'=>($row['startDate']), 'endDate'=>($row['endDate']), 'headline'=>($row[        'headline']), 'text'=>($row['text']), 'tag'=>'', 'asset'=>array('media'=>($row['media']), 'credit'=>($row[        'credit']), 'caption'=>($row['caption']))), ), 
        'era'=>array(array('startDate'=>'', 'endDate'=>'', 'headline'=>'', 'text'=>'', 'tag'=>'')) 
        )
    );

$json = json_encode($object);
file_put_contents("testing.json", $json);
?>



<head>
        <!-- jQuery -->
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <!-- BEGIN TimelineJS -->
        <script type="text/javascript" src="http://cdn.knightlab.com/libs/timeline/latest/js/storyjs-embed.js"></script>
        <script>
            $(document).ready(function() {
                createStoryJS({
                    type:       'timeline',
                    width:      '800',
                    height:     '600',
                    source: 'http://localhost/php_test/timeline_test/testing.json',
                    embed_id:   'my-timeline'
                });
            });
        </script>
        <!-- END TimelineJS -->

在while循环你继续分配(=覆盖)的结果向量的内容$row至同(奇!)对象$object 我不熟悉TimelineJS,我认为您需要在$object['timeline']建立一个数组,可以使用

while($row = mysql_fetch_array($rs, MYSQL_ASSOC)) {
    $object['timeline'][]=array(
        'headline'=>'Georgia History Title Page', 
        'type'=>'default', 
        'text'=> 'Testing Overview', 
        'startDate'=>'1700', 
        'asset'=>array('media'=>'titlepagemedia', 'credit'=>'titlepagecredit', 'caption'=>'titlepagecaption'), 
        'date'=>array(array(
            'startDate'=>($row['startDate']),
            'endDate'=>($row['endDate']), 
            'headline'=>($row['headline']),
            'text'=>($row['text']),
            'tag'=>'',
            'asset'=>array('media'=>($row['media']),
            'credit'=>($row['credit']),
            'caption'=>($row['caption'])))), 
        'era'=>array(array('startDate'=>'', 'endDate'=>'', 'headline'=>'', 'text'=>'', 'tag'=>'')) 
        );
}

这本质上与array_push($object['timeline'], ...) ,它将把每个结果行的数据附加到$object的数组'timeline'

编辑

现在,循环将填充$object['timeline'] dateera数组(尽管era没有实际数据):

$object=array('timeline'=>array(
    'headline'=>'Georgia History Title Page', 
    'type'=>'default', 
    'text'=> 'Testing Overview', 
    'startDate'=>'1700', 
    'asset'=>array('media'=>'titlepagemedia', 'credit'=>'titlepagecredit', 'caption'=>'titlepagecaption'), 
    'date'=>array(),'era'=>array()
));

while($row = mysql_fetch_array($rs, MYSQL_ASSOC)) {
    $object['timeline']['date'][]=array(
            'startDate'=>($row['startDate']),
            'endDate'=>($row['endDate']), 
            'headline'=>($row['headline']),
            'text'=>($row['text']),
            'tag'=>'',
            'asset'=>array('media'=>($row['media']),
            'credit'=>($row['credit']),
            'caption'=>($row['caption']))); 
    $object['timeline']['era'][]=array('startDate'=>'', 'endDate'=>'', 'headline'=>'', 'text'=>'', 'tag'=>'');

}

也许有帮助吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM