如何在用户友好的树视图html列表中显示带有datetime属性的记录(php + mysql)?

时间:2014-06-13 08:22:07

标签: php

我收到了一些记录,包括专栏''时间',' catagory''内容'保存在MySql数据库中。Demo PHP(实际上我使用的是Yii,数据由dataprovider提供。)

我需要以用户友好的方式呈现数据。

该列表分组为"周" =>"日期" =>"记录"。 Demo Output html

有些人可以给我一个聪明的方法来进行php循环吗?

我是否需要执行周循环来检查存在的周并保存键值数组

然后检查同一天的任何记录并保存在另一个数组中,

然后最后做输出循环来显示html?非常感谢。

<div class="tree">
<ul>
    <li>
        <span>2014, Week 2 , 2014-01-05~2014-01-11</span>
            <ul>
                <li>
                    <span>Monday, January 6</span>
                        <ul>
                            <li>
                                <div class="record">
                                    <span>08:00:30</span><br>
                                    <span>Play</span><br>
                                    <span>Do something good...</span><br>
                                </div>
                            </li>
                        </ul>
                </li>

2 个答案:

答案 0 :(得分:0)

function getRecords($result){
$arr = new array();
while ($row = myqsli_fetch_array($result)) {
        $arr[] = $row;
    }
return $arr;
}
$week;
$date;
$records = getReceords($queryresultfromyourdb);
foreach($records as $rec)
{
if ($week != $rec["Week"])
{
echo $rec["Week"] . '<br>';
$week = $rec["Week"];
}
if ($date != $rec["Date"])
{
echo $rec["Date"] . '<br>';
$date = $rec["Date"];
}
echo $rec["record"] . '<br>';
}

答案 1 :(得分:0)

这是php代码:

<?php
//fake data setting
$recordlist=Array();
$record=Array();
$record['time']='2014-01-06 08:00:30';
$record['catagory']='Play';
$record['content']='Do something good...';
$recordlist[]=$record;

$record=Array();
$record['time']='2014-01-07 10:00:30';
$record['catagory']='Study';
$record['content']='Do something fun...';
$recordlist[]=$record;

$record=Array();
$record['time']='2014-01-07 12:00:30';
$record['catagory']='Sport';
$record['content']='Bike';
$recordlist[]=$record;

$record=Array();
$record['time']='2014-12-15 12:00:30';
$record['catagory']='Sport';
$record['content']='Bike';
$recordlist[]=$record;

$record=Array();
$record['time']='2014-12-12 12:01:30';
$record['catagory']='Sport';
$record['content']='Bike';
$recordlist[]=$record;
?>
<?php
//output
//how to output just as http://jsfiddle.net/euj89/


// Refactor Array
foreach($recordlist as $record){
    $date = explode(" ",$record['time']);
    $hour = $date[1];
    $date = $date[0];
    $week = date("W",strtotime($date));
    $month = date("F",strtotime($date));
    $year = date("Y",strtotime($date));
    $newRecordList[$year][$month][$week][$date][$hour]['time']       = $record['time'];
    $newRecordList[$year][$month][$week][$date][$hour]['category']   = $record['catagory'];
    $newRecordList[$year][$month][$week][$date][$hour]['content']    = $record['content'];
}

//OUTPUT
?><div class="tree"><ul><?
        foreach ($newRecordList as $year => $recordByYear) {
            foreach ($recordByYear as $month => $recordByMonth) {
                foreach ($recordByMonth as $week => $recordByWeek) {
                    ?><li><span><?=$year?>, Week <?=$week?> , date</span><ul><?
                    foreach ($recordByWeek as $day => $recordByDay) {
                        ?><li><span><?=date("l",strtotime($day))?>, <?=$month?> <?=$day?> </span><ul><?

                            foreach ($recordByDay as $hour => $recordByHour) {
                                ?><li><div class="record">
                                    <span><?=$hour?></span><br>
                                    <span><?=$recordByHour['category']?></span><br>
                                    <span><?=$recordByHour['content']?></span><br>
                                </div></li><?
                            }
                            ?></ul></li><?
                    }
                    ?></ul></li><?
                }
            }
        }
?></ul></div><?

输出应该是这样的: enter image description here