2011-11-11 103 views
0

我正在输出费率表。每个费率周期都有一个每日费率和一个周费率,但费率周期保持不变。简单的分组与PHP while while循环?

所以我试图改变两次设置后的背景颜色。所以基本上,表格会显示:

Date 1 - Weekly Rate 
Date 1 - Daily Rate 
<change bg color> 
Date 2 - Weekly Rate 
Date 2 - Daily Rate 
<change bg color back to original> 

此刻,我在样式表中为背景颜色设置了两种样式。而我使用的代码给了我ALTERNATING行。我只是不明白为什么它会改变每一个,而不是每一个!

为此,我必须比较一个Date1到Date2。 (由于我不想进入的原因,我无法每两次更改一次)。

这是我在while循环中的代码。帮帮我!谢谢你。

if ($previous !== $row[datefrom]) 
{  
    $thecolor = "bg1"; 
} 
else 
{ 
    $thecolor = "bg2"; 
} 

echo "<tr class=\"".$thecolor."\"> \n"; 
echo "<td>" . $row[datefrom] . " - " . $row[dateto]. "</td> \n"; 
echo "<td>" . str_replace(" 3-5","",$row[Ratetype]) . "</td> \n"; 
echo "<td>$" . $row[Rate] . "</td> \n"; 
echo "</tr> \n"; 

$previous = $row[datefrom]; 
+0

问题在哪里?你想让我们帮你什么? –

回答

1

你还必须记住上次使用的背景颜色,没有它背景只会改变组中的第一个条目。例如:

$use_original_bg = TRUE; 

for(/*...*/){ 
    if ($previous !== $row[datefrom]) { 
     $use_original_bg = !$use_original_bg; 
    } 
    $thecolor = $use_original_bg?"bg1":"bg2"; 
} 
1

我们可以看到这样做的原因很容易,如果我们每个迭代建立当前日期上一页的状态:

1. date1, prev = nothing => bg1 
2. date1, prev = date1 => bg2 
3. date2, prev = date1 => bg1 
4. date2, prev = date2 => bg2 

一个简单的方法来解决这个问题还要考虑到背景的状态。我会留给你一些想法。

+0

啊,我和你在一起。因此,如果我的日期与我的第一条if语句不匹配,我应该设置标志以表示背景不平等。然后我根据BACKGROUND设置我的颜色,而不是实际的日期条件。这是你在做什么? :) – NarfFlarf