如何对数据库结果列表中的某些行进行颜色编码?

时间:2019-06-25 17:49:57

标签: php cakephp

我有一个网站广告列表。我希望能够根据index.ctp列表中的行颜色直观地判断广告是否仍处于活动状态。我有一个控制每个条目的表单。表单中有一个$ end_date。颜色将基于该日期。我真的不知道我在做什么,所以我想在AdsController中需要一种函数来执行逻辑。如果我走的路正确,请告诉我。

现在的问题是没有出现颜色变化。这是代码:

public function getStatusColor($status_color) {
    $this->loadModel('Advertisements');
    $date = $this->Advertisements->get($end_date);
    $now = new DateTime();
        if($date < $now) {
            echo '#ff0000' ;
        } else {
            echo '#00ff00' ;
        }
}

在我的index.ctp中,这只是列表代码的一部分,所以您可以看到如何将颜色拼接到表中

foreach($advertisements as $advertisement) {
        echo '<tr style="background-color: <?php echo $status_color; ?>;">';
        echo '<td>'.$advertisement->id.'</td>';
        echo '<td>'.$advertisement->title.'</td>';

3 个答案:

答案 0 :(得分:1)

您可能不需要一个单独的函数来执行此操作,而您在该函数中执行的操作实际上只需要执行一次(例如获取当前数据)。如果没有您创建的函数,请尝试以下操作:

$this->loadModel('Advertisements');
$now = new DateTime();

foreach ($advertisements as $advertisement) {
    $date = $this->Advertisements->get($end_date);
    echo '<tr style="background-color: ' . ($date < $now ? '#ff0000' : '#00ff00') . '">';
    echo '<td>'.$advertisement->id.'</td>';
    echo '<td>'.$advertisement->title.'</td>';
}

答案 1 :(得分:0)

嗯,我对Cake PHP不熟悉,但是总体观察是-我看不到您在哪里调用该函数或从该函数返回该颜色代码。

我期望index.php中的for循环中有$ advertisement-> getStatusColor()

和功能

返回('#ff0000')或返回('#00ff00');

对不起,如果我在解释您编写的代码时错了。

答案 2 :(得分:0)

好的,所以因为我是新手,所以我一直在想它。就是这样完成的。

 $now = new DateTime();
 echo '<tr style="background-color: '. ($advertisement->end_date < $now ? '#ff0000' : '#00ff00') .'">';

感谢大家的投入!