Раскраска строк таблицы с учетом значения поля - PullRequest
0 голосов
/ 20 октября 2011

Я работаю на корпоративном веб-сайте, на котором вы извлекаете (через консультацию MySQL) некоторые данные, отформатированные в таблице HTML. Проблема возникает при попытке изменить цвет строки, если определенное значение поля является тем или иным.

(частичный) код:

    $RowCt = 0;
while($Row = mysql_fetch_assoc($Result))
{   
    $timezone = new DateTimeZone( "Europe/London" );
    $date = new DateTime();
    $date->setTimezone( $timezone );
    $ahora = $date->format( 'H:i' ); 

    if ($var == 1) {
        $rowcolor = "red";
    } else if ($var == 0) {
        $rowcolor = "yellow";
    } else {
        $rowcolor = "white";
    }

    //$Table.= "<tr style='background-color:#FFFFFF;'>";

    foreach($Row as $field => $value)
    {                   
        switch ($field) {
            default:
                $Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>$value</td>"; 
                break;  
            case a:          
                if ($now > $value) {
                        $var == 0;
                    } else {    
                        // Do nothing
                    }
                $Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>$value</td>"; 
                break;
            case b:
                if ($now > $value) {
                        $var == 1;
                    } else {    
                        // Do nothing
                    }
                $Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>$value</td>"; 
                break;
            case c:
                switch ($value) {
                    case 1:
                        $Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>a</td>";
                        break;
                    case 2:
                        $Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>b</td>";
                        break;
                }
            case d:
                switch ($value) {
                    case 3:
                        $Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>a</td>";
                        break;
                    case 4:
                        $Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>b</td>";
                        break;
                    case 5:
                        $Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>c</td>";
                        break;
                    case 6:
                        $Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>d</td>";
                        break;
                }
            case e:
                switch ($value) {
                    case "E":
                        $Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>a</td>";
                        break;
                    case "I":
                        $Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>b</td>";
                        break;
                    case "F":
                        $Table.= "<td style='font-size:14px; background-color:$rowcolor' align='center'>c</td>";
                        break;
                }
        }
    }
$Table.= "</tr>";

Проблема возникает при попытке определить значение внутри оператора switch, а затем при попытке сделать его условием, чтобы вся строка была окрашена (желтый, если выбран случай 1, а мы не вовремя; красный, если Случай 2 выбран, и мы не вовремя).

1 Ответ

2 голосов
/ 20 октября 2011

Ваш фрагмент кода на самом деле мало что объясняет, но, насколько я понимаю, я бы посоветовал ваш переключатель по-другому.Ваш переключатель создает вывод HTML.

Я бы рекомендовал использовать переключатель для установки стиля в переменной $ style, а также ... строго говоря, в этом случае лучше использовать логику case: сначала, а затем по умолчанию: например.

switch ($condition) {
  case 1 : $style = 'background:red;'; break;
  case 2 : $style = 'background:yellow;'; break;
  default : $style = 'background:white;';
}

теперь создайте свой HTML, например.

foreach ($results as $row) echo '<tr><td style="'.$style.'">Cell data</td></tr>';

Для нескольких случаев на коммутаторе:

switch ($condition) {
  case 0:
  case 1:
    // Do something
    break;
  case 2: /* Do something */ break;
  default: /* Do something */ break;
}

2 Уровень коммутатора:

switch ($condition_1) {
  case 0 :
    switch ($condition_2) {
      case 'A' :
      // do something
      break;
    }
  break;
}

Не забудьте сломать на обоих уровнях

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