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

标签 php html mysql css sql

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

我有一个基本的事件数据库,每个事件都有一个特定的 date_in、time_in、date_out 和 time_in,我试图在 html 表中显示这些事件。我希望结果背景颜色根据当前日期/时间与查询结果的数据库日期/时间相比发生变化。

我已经通过 MySQL WHERE 想出了一个相当复杂的方法,但是这是很多冗余编码,我希望找到一种方法来使用和 IF ELSE 语句在

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

我的条件是:

如果 category = "jet"和 date_in = $today 并且结果时间 <= 距 $time 1 小时 ... 执行代码(黄色背景查询)

ElseIf category = "jet"and date_in = $today and result time >= 1 hour 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"而不管数据库查询的结果。

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

最佳答案

看起来你需要一个 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

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

关于php - 基于 MySQL 查询中的 If Else 语句的自定义 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22276964/

相关文章:

javascript - 当您选择打开另一个 Accordion 时如何确保 Accordion 关闭

html - 拉伸(stretch)元素的正确方法?

JavaScript 倒计时器在达到 1 天、1 秒、1 分钟时更改文本

php - 在 Laravel 中使用 JSON 列

mysql - 在 Jenkins 中使用 docker exec 运行 October artisan 命令时连接被拒绝

Python 在 MySQL 数据库中插入值 <= 1e-7

php - 随机(有权重偏差)从数据库中选择行?

php - Xampp MySQL 错误?

php - 如何解析具有精确字符串长度的字符串?

PHP MySQL : remember previous RAND()