PHP - Как отформатировать фон ячейки и цвет шрифта согласно результату запроса MySQL в файле PHP - PullRequest
0 голосов
/ 02 ноября 2011

У меня есть работоспособный запрос MySQL в файле PHP.Это дает мне 3 возможных разных результата в моей таблице на сайте в одном столбце.Это «ВЫИГРАЛ», «ПОТЕРЯЛ» или «ОЖИДАЕТ».Чего я хочу добиться дальше, так это когда в этих конкретных ячейках есть зеленое фоновое слово WON, а в результате запроса значение LOST становится красным, а PENDING - серым.

Каким образом это сделать?Я новичок в этом, поэтому не могу найти себя онлайн.

Вот код работоспособного запроса:

<?
$qry = "
SELECT timelive,match_title,selection,
CASE 
WHEN game.result LIKE '' THEN 'PENDING'
WHEN game.result LIKE game.selection THEN 'WON'
WHEN game.result NOT LIKE game.selection THEN 'LOST'
END AS result
FROM game
";
$searchText = "";
if($_REQUEST['search_text']!=""){
    $searchText = mysql_real_escape_string($_REQUEST['search_text']);
    $qry .=" WHERE game.timelive LIKE '%$searchText%' " . 
           " OR game.match_title LIKE '%$searchText%' " .
           " OR game.selection LIKE '%$searchText%' " .
           " OR game.username LIKE '%$searchText%'";
}

$qry .= " ORDER BY timelive DESC";

$obj = new pagination_class($qry,$starting,$recpage);       
$result = $obj->result;

?>

и HTML-часть кода для этой части вывода на сайте такова:

<table>
<?if(mysql_num_rows($result)!=0){
$counter = $starting + 1;
while($data = mysql_fetch_array($result)) {?>
<tr>
<td align="center"><? echo $data['username']; ?></TD>
<td align="center"><? echo $data['result']; ?></TD>
</tr>
<?
$counter ++;
} ?>

Мне нужно получить желаемое форматирование, описанное выше, в соответствии с выходным словом в столбце «результат».Спасибо.

Ответы [ 5 ]

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

Пара опций, грубая сила, в которой вы просто применяете сгенерированный style или предопределя классы стилей и применяете их на основе выходных данных ...

В последнем случае(наиболее разумно, IMO), вы просто применяете содержимое $result к свойству class:

<td align="center" class="<?php echo $result;?>"><? echo $data['result']; ?></td>

В первом случае у вас может быть что-то вроде этого:

function getStyleColorForStatus($status) {
  if ($status == 'WON') {
    return 'Green';
  }
  else if ($status == 'LOST') {
    return 'Red';
  }
  else if ($status == 'PENDING') {
    return 'Grey';
  }
  return '';
}

<td align="center" style="background-color:<?php echo getStyleColorForStatus($data['result']); ?>"><? echo $data['result']; ?></td>
0 голосов
/ 02 ноября 2011

перед выводом результата ставим условие типа

if( $data['result'] == 'WON' ){
    echo '<div class="green">' . $data['result'] . '</div>'    
}
elseif( $data['result'] == 'LOST' ){
    echo '<div class="red">' . $data['result'] . '</div>'    
}
elseif( $data['result'] == 'PENDDING' ){
    echo '<div class="gray">' . $data['result'] . '</div>'    
}
0 голосов
/ 02 ноября 2011

Создайте следующие определения CSS, если это возможно, в отдельном файле CSS:

.won
{
background-color:green;
}

.lost
{
background-color:red;
}

После этого свяжите файл css с вашей страницей и, наконец, используйте jQuery для добавления / удаления класса css в зависимости от заданного условия.

Подробнее читайте по следующим ссылкам:

http://api.jquery.com/removeClass/

http://api.jquery.com/addClass/

0 голосов
/ 02 ноября 2011

Назначьте класс css вашей ячейке таблицы на основе результата, например, так:

$tdClass = '';

switch ($data['result']) {
    case 'WON':
        $tdClass = 'won';
        break;
    case 'LOST':
        $tdClass = 'lost';
        break;
    case 'PENDING':
        $tdClass = 'pending';
        break;
}

Итак, очевидно, это ваш php, в html вы делаете:

<td class="<?php $tdClass; ?>"><?php echo $data['result']; ?></td>

Я бы потерял align="center" и использовал бы вместо этого в вашем CSS text-align: center;.Кроме того, в вашем CSS вы должны сделать:

.won {
    background: green;
}
.lost {
    background: red;
}
.pending {
    background: grey;
}

Но вместо green, red и т. Д. Выберите нужный вам цвет.

0 голосов
/ 02 ноября 2011

Мне не хватает той части, которая создает переменную $ data.

Просто добавьте "game.result" в ваш массив $ data.Теперь в вашем коде вы можете сделать что-то вроде этого:

<tr>
<td align="center" class="<? echo $data['result'];?>"><? echo $data['username']; ?></TD>
<td align="center"><? echo $data['result']; ?></TD>
</tr>

Теперь вы можете работать с CSS.Создайте три класса для LOST, PENDING и WON.Пример:

.LOST {
    background-color: #F00;
}

Ваше поле имени пользователя в вашей таблице должно иметь красный фон, когда game.result имеет значение "LOST"

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