простая группировка с помощью php while loop? - PullRequest
0 голосов
/ 12 ноября 2011

Я выдаю таблицу ставок. Каждый период тарифов имеет дневную ставку и еженедельную ставку, но СРОКИ ставки остаются неизменными.

Итак, я пытаюсь изменить цвет фона после ДВУХ подходов. Таким образом, в основном, таблица покажет:

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>

На данный момент у меня есть два стиля, настроенных для фона в моей таблице стилей. И код, который я использую, дает мне Чередование строк. Я просто не понимаю, почему это меняет каждого, а не каждого ДРУГОГО!

Для этого я ДОЛЖЕН сравнить одну дату1 с датой2. (Я не могу изменить его каждые две итерации, по причинам, которые я не хочу обсуждать.)

Вот мой код внутри цикла 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];

Ответы [ 2 ]

1 голос
/ 12 ноября 2011

Вы также должны запомнить последний использованный цвет фона, без него фон изменится только для первой записи в группе. Пример:

$use_original_bg = TRUE;

for(/*...*/){
    if ($previous !== $row[datefrom]) {
        $use_original_bg = !$use_original_bg; 
    }
    $thecolor = $use_original_bg?"bg1":"bg2";
}
1 голос
/ 12 ноября 2011

Мы можем легко понять причину этого, если для каждой итерации настроим состояния текущая дата и пред :

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

Одним из простых способов решения этой проблемы является также учет состояния фона. Я оставлю это на ваше усмотрение, чтобы подумать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...