有人可以帮我解决以下问题吗?
我有一个基本的事件数据库,每个事件都有一个特定的 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> </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> </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/