基于MySQL查询的If Else语句的自定义CSS

时间:2014-03-09 00:34:11

标签: php html mysql css sql

有人可以帮我解决以下问题吗?

我有一个基本的事件数据库,每个事件都有一个特定的date_in,time_in,date_out和time_in,我试图在html表中显示。我希望结果背景颜色根据当前日期/时间与查询结果的数据库日期/时间进行更改。

我通过My​​SQL WHERE想出了一个相当复杂的方法然而这是很多冗余编码而我希望找到一种方法来使用和IF ELSE语句

这是我使用MySQL SELECT和WHERE语句找到的解决方案,但是我有几个这样的语句,它创建了一组凌乱的冗余代码。

我的条件是:

如果category =“jet”和date_in = $ today,结果时间< = 1小时从$ time ...执行代码(黄色背景查询)

ElseIf category =“jet”and date_in = $ today and result time> = $ time from $ time ...执行代码(白色背景查询)

Else category =“jet”and date_in!= $ today ...执行代码(灰色背景查询)

然后,我需要再为5个额外的飞机类别执行此操作,这会创建大量冗余代码和多个选择语句。

这只是一个片段,我知道可能有很复杂的方法可以做到这一点,但这是一个新的MySQL / PHP编码器的基础。

//Gather TIMEZONE, CURRENT TIME, and ACTION TIME 
$set_timezone = date_default_timezone_set('America/New_York');
$today = date('m/d/Y');
$time = date('Hi');


// Build the SELECT statement for JET Aircraft
$select_JETaircraft = "SELECT * FROM aircraft_data WHERE ac_cat = 'Jet' AND (date_in =  '$today' AND time_in <= '$time') ORDER BY time_in ASC"; 
// Run the query
$result = mysql_query($select_JETaircraft);
while($row = mysql_fetch_array($result)){    //Creates a loop to loop through results
?>
   <tr class="datacolor_past">
      <td><?php echo "<a href='javascript:delete_aircraft(" . $row['aircraft_id'] . ");'>X</a>"; ?></td>
      <td>&nbsp;</td>
      <td><?php echo $row['faa_id']; ?></td>
      <td><?php echo $row['ac_type']; ?></td>
      <td><?php echo $row['date_in'] . "  -  " . $row['time_in']; ?></td>
      <td><?php echo $row['date_out'] . "  -  " . $row{'time_out'}; ?></td>
      <td><?php echo $row['services']; ?></td>
      <td><?php echo $row['comments']; } ?></td>
  </tr>

上面的示例here可以在午夜时分减去一些错误。

我希望能找到类似于此的解决方案......但我无法获得处理的逻辑。

// Build the SELECT statement for JET Aircraft PAST Action Time
$select_JETaircraft = "SELECT * FROM aircraft_data WHERE ac_cat = 'Jet' ORDER BY time_in    ASC"; 

// Run the query
$result = mysql_query($select_JETaircraft);
while($row = mysql_fetch_array($result)){    //Creates a loop to loop through results
?>
<tr
         <?php
    $JETdate_in = $row['date_in'];
    $JETtime_in = $row['time_in'];
        if ($JETdate_in = $today)
        {
        echo 'class="datacolor_current"';
        }
        else
        {
        echo 'class="datacolor_past"';
        }
     ?>
     >
     <td><?php echo "<a href='javascript:delete_aircraft(" . $row['aircraft_id'] . ");'>X</a>"; ?></td>
     <td>&nbsp;</td>
     <td><?php echo $row['faa_id']; ?></td>
     <td><?php echo $row['ac_type']; ?></td>
     <td><?php echo $row['date_in'] . "  -  " . $row['time_in']; ?></td>
     <td><?php echo $row['date_out'] . "  -  " . $row['time_out']; ?></td>
     <td><?php echo $row['services']; ?></td>
     <td><?php echo $row['comments']; } ?></td>
     </tr>

可以找到上面的示例here,它仅显示“JET”代码。它运行但只显示class =“datacolor_current”,无论数据库查询的结果如何。

如果我需要进一步澄清,请告诉我......谢谢!

1 个答案:

答案 0 :(得分:0)

看起来你需要一个CASE,它基本上可以作为一个开关。

试试这个:

select ac_cat,date_in,result_time,
CASE 
    WHEN ac_cat = 'jet' AND date_in = '2014-03-09' AND result_time <= 1 then 'yellow' 
    WHEN ac_cat = 'jet' AND date_in = '2014-03-09' AND result_time >= 1 then 'white' 
    WHEN ac_cat = 'jet' AND date_in <> '2014-03-09' then 'grey' 
    ELSE 'nocolor'
END as color
from aircraft_data

您最终会得到一个包含自定义颜色的新列。