我很难解释这个......所以请随时询问更多信息。
我从MySQL数据库读取数据使用:
SELECT * FROM resource where date > DATE_SUB(now(), INTERVAL 12 MONTH) ORDER BY `date` DESC
这会产生如下结果:
ID DATE STACK REF NAME LOCATION CREW
9 2016-01-01 06:34:50 A6YH75F 12 Local List SPAIN 1A
8 2016-01-01 06:34:48 QWE343 23 POINT ONE GERMANY 3A
7 2016-01-01 06:34:46 WER342 43 Insite UK 4A
6 2016-01-01 06:34:44 WFF5G1 34 LANWise FRANCE 5A
5 2016-01-01 06:34:42 2D3D35 21 Polent USA 7A
4 2016-01-01 06:34:40 8541FW 33 Rosta UK 4B
3 2015-12-30 16:48:23 A6YH75F 12 Local List SPAIN 2A
2 2015-11-21 14:32:01 FFCWF4 34 LANWISE FRANCE 6A
1 2015-10-14 11:02:22 POI8H6 75 BALAND IRELAND 6B
这是很难解释的地方。
我循环显示结果并将结果回显到<table>
当它出现时,每个NAME可能会出现数百个条目,我想要做的是根据某些特定标准突出显示输出。
例如:
如果NAME多次出现,请比较STACK&amp;的最新值和先前值。该名称的REF。 (所以比较每个名字的最后两个条目)
如果它们不同,则突出显示该条目的输出。
即:
我可以看到Local List
在列表中出现两次。第一个日期戳是2016-01-01 06:34:50
&amp;然后在2015-12-30 16:48:23
很好。在两种情况下,STACK和REF都是相同的。
然而,LANWISE
也会出现两次,但在较新的场合,它的堆叠会有所不同。我如何标记这一点并突出显示LANWISE的最新条目。
我还想查看过去65天内是否有参赛作品出现。
所以查看最后出现的BALAND
列表2015-10-14 11:02:22
所以这超过了65天而且从那时起它们还没有出现。我该如何突出这一点?
由于
答案 0 :(得分:0)
我不知道这是不是最好的方式,但是我做了类似的事情($variable
是您查询的结果)
$already = array();
#The loop where you make your table. I use foreach but use your current loop (probably while if you fetch a query response) :
foreach ($variable as $key => $value) {
$class='';
if(isset($already[$value['name']]) && $already[$value['name']] == $value['date']) {
$class='highlight';
}
#The next time, the variable exist :
$already[$value['name']] = $value['date'];
#do your stuf and add $class to your class in your HTML (and do something inyour CSS)
}
使用isset($already[$value['name']])
,您知道之前是否存在该行。使用== comparator
,您知道它是否是相同的值。
使用CSS和类HTML属性突出显示相关行。
根据您的使用情况调整此代码,它只是基于您的帖子的示例。
对于比较日期,您可以使用DateTime。使用示例:
$datetime1 = new DateTime($xDateDebut[2].'-'.$xDateDebut[1].'-'.$xDateDebut[0]);
$datetime3 = new DateTime(date('Y').'-'.date('m').'-'.date('d'));
$delaisAvantJourJ = $datetime1->diff($datetime3);
($xDateDebut
是一个展开的SQL日期字段)
$delaisAvantJourJ
现在是一个有很多有用信息的对象(比如天数差异)
答案 1 :(得分:0)
您可以使用以下查询返回所需的所有信息,以确定需要突出显示的记录:
SELECT ID, `DATE`, STACK, REF, NAME, LOCATION, CREW,
--Calculate difference between `DATE` field and current date
DATEDIFF(NOW(), `DATE`) AS DaysDiff,
-- Get the count of newer records having the same NAME
COALESCE((SELECT COUNT(*)
FROM resource AS r2
WHERE r2.NAME = r1.NAME AND r2.`Date` > r1.`Date`), 0) CountNewer,
-- Find wether an older record exists having the same NAME and
-- different REF or STACK or both
COALESCE((SELECT 1
FROM resource AS r3
WHERE r3.NAME = r1.NAME AND
r3.`Date` < r1.`Date` AND
(r3.REF <> r1.REF OR r3.STACK <> r1.STACK)), 0) IsHighlighted
FROM resource AS r1
WHERE date > DATE_SUB(now(), INTERVAL 12 MONTH)
ORDER BY `date` DESC