PHP:使用IF ELSE语句输出错误

时间:2013-10-15 13:38:53

标签: php

这是我的数据库示例:

  **Netname**     **BldgName**                    **Totalduration**
    LRT - 2       Araneta Center - Cubao              09:30:00
    LRT - 2          Legarda                          09:45:00
    LRT - 2           Pureza                          09:50:00
    LRT - 2           Santolan                        10:00:00
    LRT - 2         Recto Station                     09:55:00

然后我有一个持续时间的组合框......

Duration
5 s
10 s
15 s
30 s
60 s

这是我的代码:

if(($get_ID == "LRT - 2" || $get_ID == "LRT - 1") && $row[fldTotalDuration] == "10:00:00")
{
    echo "      ";
    echo $row['fldBldgName'];
    echo "&nbsp;<img src='image/full.png' title='Already full'><br>";
}
else if(($get_ID == "LRT - 2" || $get_ID == "LRT - 1")&& $row['fldTotalDuration'] >= "09:55:00" && $row['fldTotalDuration'] <= "10:00:00" && $get_duration >= "6 s" && $get_duration <= "60 s"  )
{
    echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
    echo $row['fldBldgName'];
    echo "&nbsp;<img src='image/near_full.png' title='Only 5 s left'><br>";
}
else if(($get_ID == "LRT - 2" || $get_ID == "LRT - 1")&& $row['fldTotalDuration'] >= "09:50:00" && $row['fldTotalDuration'] <= "09:54:00" && $get_duration >= "11 s"&& $get_duration <="60 s" )
{
    echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
    echo $row['fldBldgName'];
    echo "&nbsp;<img src='image/near_full.png' title='Only 10 s left'><br>";
}
else if(($get_ID == "LRT - 2" || $get_ID == "LRT - 1")&& $row['fldTotalDuration'] >= "09:45:00" && $row['fldTotalDuration'] <= "09:49:00" && $get_duration >= "16 s" && $get_duration <= "60 s")
{
    echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
    echo $row['fldBldgName'];
    echo "&nbsp;<img src='image/warning.png' title='Only 15 s left'><br>";
}
else if(($get_ID == "LRT - 2" || $get_ID == "LRT - 1")&& $row['fldTotalDuration'] >= "09:30:00" && $row['fldTotalDuration'] <= "09:44:00" && $get_duration >= "31 s" && $get_duration <= "60 s")
{
    echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
    echo $row['fldBldgName'];
    echo "&nbsp;<img src='image/warning.png' title='Only 30 s left'><br>";
}
else if(($get_ID == "LRT - 2" || $get_ID == "LRT - 1")&& $row['fldTotalDuration'] >= "09:00:00" && $row['fldTotalDuration'] <= "09:29:00" && $get_duration > "60 s")
{
    echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
    echo $row['fldBldgName'];
    echo "&nbsp;<img src='image/warning.png' title='Only 60 s left'><br>";
}

示例场景:

我选择“5秒”持续时间...

这是我的程序的输出,: 这个错了...... enter image description here

输出应为..

这是正确的输出:

因为我只会在总持续时间中添加“5秒”....其余的持续时间正在工作但不是这个[5秒]

enter image description here

感谢您的帮助..

2 个答案:

答案 0 :(得分:0)

我不打算弄清楚你到底在做什么。只是建议使用Switch命令,而不是加载嵌套的if / elseif语句。

如果我看到你在那里硬编码LRT-2,我认为你也可以通过不同的方式制定数据库查询来改善。

答案 1 :(得分:0)

根据OP的要求:问题在于$get_duration的评估方式:

$get_duration <= "60 s"

例如...比较字符串总是很麻烦:

var_dump('9s' > '4s');//true
//but:
var_dump('10s' > '5s');//false!
var_dump('9s' > '50s');//true!

这是因为字符串的比较不同:

'9s'&gt; 50年代“

如果你看看C处理字符串的方式,可能最好理解:'9'=&gt; 57(ASCII),而'5'实际上是53,并且因为57> 53,两个字符串的比较等于true。特别是如果您认为0实际上是48,但s实际上是115 当然,PHP会发现您实际比较'12' > '9'的情况,并比较整数值(12 > 9)。但是,为了安全起见,我个人更喜欢将变量转换为正确的类型。这样,我确定给定变量包含的类型

比较数字时,比较整数/浮点值,而不是它们的字符串表示 基本上,将所有"60 s"字符串常量替换为60。正如OP提到的:这解决了问题/.