如果语句覆盖下面的CSS语句,停止PHP?用MySQL纠正?

时间:2014-12-18 20:30:14

标签: php mysql css

我有一个日历,其中使用PHP根据不同的变量应用于每个单元格的不同背景颜色。我根据日期是今天的日期,当天是否预订了班次,或者当天是否预订了假期,使用if语句来改变设置为TD的样式。

这已经奏效了,但后来我才意识到,如果假期是在一个轮班的日子预订,无论它是否是一个假期,它仍然会变色。我理解这是因为IF语句的顺序。所以我打算问这个问题是否有任何解决方法......

但后来我才意识到,我正在与一个不同用户的系统合作,而不仅仅是一个人,如果是一个人这不重要,因为他们无法在同一天预订转移和假期。

然而......每个用户都可以通过它的颜色(不显示更多详细信息,例如当天预订的用户)查看是否将某一天预订为班次或假期,我需要指定一个不同的日期颜色为已经为班次或假期预订的一天。

所以在意识到这一切之后(对不起,如果它无用的背景故事)我的问题现在是(至少我认为是......!)我如何创建一个MySQL语句,它将从预订日期的表中选择条目为转变和假期。

我的数据库设计有五列:id,surname,stafflevel,datebooked和typebooked。 我目前使用它的方式的代码是:

$ifShift ="SELECT * FROM schedule WHERE dateBooked = '".$dateToCompare."' AND typeBooked = 'shift'";
$tdShift = mysql_num_rows(mysql_query($ifShift));
$ifHoliday ="SELECT * FROM schedule WHERE dateBooked = '".$dateToCompare."' AND typeBooked = 'holiday'";
$tdHoliday = mysql_num_rows(mysql_query($ifHoliday));

if ($tdShift) {
    echo "class='shift'";
} elseif($tdHoliday) {
        echo "class='holiday'";
}

我尝试使用

select * from schedule where dateBooked = '26/12/2014' AND (typeBooked = 'shift' AND 'holiday');

在终端用我的表测试这个并得到一条消息&#34;空集,1警告&#34; ...所以我该如何解决这个问题......如果它甚至可能?< / p>

但是我还不会有if语句顺序的原始问题吗?

谢谢你们!

1 个答案:

答案 0 :(得分:1)

试试这个:

$classes = array();
if ($tdShift) {
    $classes[] = 'shift';
}
if($tdHoliday) {
    $classes[] = 'holiday';
}

if(!empty($classes)) {
    echo 'class="'.implode(' ',$classes).'"';
}

在你的CSS中类似于:

td.shift {
    background-color: #77B;
}
td.holiday {
    background-color: #B77;
}
td.shift.holiday {
    background-color: #7B7;
}

你应该在假期结束蓝班(红色),红色假期和绿色班次。 随意修改。

[编辑] 建议的一次查询解决方案:

//grab all types for this date
$sched_types = mysql_query("SELECT typeBooked FROM schedule WHERE dateBooked = '".$dateToCompare."'");
//empty classes array
$classes = array();
//append classes array with collected types
if($sched_types && mysql_num_rows($sched_types) > 0) {
    while($sched_type = mysql_fetch_assoc($sched_types)) {
        $classes[] = $sched_type['typeBooked'];
    }
}
//echo your classes
if(!empty($classes)) {
    echo 'class="'.implode(' ',$classes).'"';
}
//free result
mysql_close($sched_types);

它应该支持更多类型,例如 - 您可以添加第三条记录,而不是&#39; shift&#39;或者&#39;假期&#39;并且代码将自己附加一个新类。 此外,最好使用不会与其他人发生冲突的类名,例如&#34;白班&#34;和&#34;假日&#34;。

($ classes [] =&#39; day - &#39;。$ sched_type [&#39; typeBooked&#39;];)