Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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 为timelinejs提取mysql数据?_Php_Mysql_Json - Fatal编程技术网

Php 为timelinejs提取mysql数据?

Php 为timelinejs提取mysql数据?,php,mysql,json,Php,Mysql,Json,我试图从mysql数据库中提取数据,创建一个json文件,用于timelinejs时间线。问题是json文件必须以某种方式格式化。我创建了以下正确格式化json的代码,但它只从我的数据库中提取一个条目(特别是最后一个条目)。非常感谢你们提供的任何帮助 <?php $link = mysql_pconnect("localhost", "root", "********") or die("Could not connect"); mysql_select_db("php_test") or

我试图从mysql数据库中提取数据,创建一个json文件,用于timelinejs时间线。问题是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 -->

$(文档).ready(函数(){
createStoryJS({
键入:“时间线”,
宽度:“800”,
高度:'600',
资料来源:'http://localhost/php_test/timeline_test/testing.json',
嵌入id:“我的时间线”
});
});

在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\u push($object['timeline',…)
基本相同,它将把每个结果行中的数据附加到
$object
中的数组
'timeline'

编辑

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


也许这会有帮助?

谢谢您的快速回复!此解决方案的问题在于,它会重复标题页(第一个数组),这会阻止加载时间线。我需要标题数组是静态的,然后是日期、资产和纪元数组来循环。我就是搞不懂。我还在学习你的时间线对象。它表明
日期
-数组可能是需要在循环中填充的结构。在中有一个
资产
,bzt
era
肯定与您的标题处于同一级别,不能循环。我会编辑我的帖子…这很有效!我真的很感激。这件事我已经坚持了好几天了。我对这种代码比较陌生,我没有意识到数组可以像那样拆分。最后一个问题。稍后,我希望能够只显示数据库中的某些日期。我会使用
where
between
吗?是的,肯定会,例如:
SELECT*FROM timelinetest,其中startDate介于“2010-1-1”和“2012-6-30”之间的
将为您提供所有介于1之间的开始日期。2010年1月30日。2012年6月,太棒了。非常感谢你!
$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'=>'');

}