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

PHP:使用IF-ELSE语句输出错误,php,Php,以下是我的数据库示例: **Netname** **BldgName** **Totalduration** LRT - 2 Araneta Center - Cubao 09:30:00 LRT - 2 Legarda 09:45:00 LRT - 2 Pureza

以下是我的数据库示例:

  **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>";
}
if($get_ID==“LRT-2”| |$get_ID==“LRT-1”)&&&$row[fldtottalduration]==“10:00:00”)
{
回声“;
echo$row['fldBldgName'];
回声“
”; } 否则如果($get|u ID==“LRT-2”|$get|u ID==“LRT-1”)和&$row['fldTotalDuration']>=“09:55:00”&&$row['fldTotalDuration']=“6秒”&$get(duration=“09:50:00”&$row['fldTotalDuration']=“11秒”&$get(duration=“09:45:00”&$row['fldtalduration']=“16秒”&$get&=“30:00”&$fldtalduration&&&$get_duration=“09:00:00”&&$row['FLDTottalDuration']“60秒”) { 回声“; echo$row['fldBldgName']; 回声“
”; }
示例场景:

我选择“5秒”作为持续时间

Duration
5 s
10 s
15 s
30 s
60 s
这是我的程序的输出: 这个错了。。。。

输出应为

这是正确的输出:

因为我只会在总持续时间中加上“5秒”……剩余的持续时间是有效的,而不是这个[5秒]


谢谢你的帮助。

我不会试图弄清楚你到底在这里干什么。只是建议使用Switch命令,而不是一堆嵌套的if/elseif语句


如果我看到您在那里硬编码LRT-2,我想您也可以通过以不同的方式制定数据库查询来让事情变得更好

根据OP的要求:问题在于计算
$get\u duration
值的方式:

$get_duration <= "60 s"
这是因为字符串的比较方式不同:

“9年代”>“50年代”

如果你看一下C处理字符串的方式,可能最容易理解:“9'=>57(ASCII),而“5”实际上是53,而且由于57>53,两个字符串的比较等于true。特别是如果你认为<代码> 0 >代码>实际上是48,但是<代码> s <代码>实际上是115。Br/> 当然,PHP会发现实际比较
'12'>'9'
的情况,而不是比较整数VAL(
12>9
)。但是,为了安全起见,我个人更喜欢将变量转换为正确的类型。这样,我就可以确定给定变量包含的类型

比较数字时,请比较整数/浮点值,而不是它们的字符串表示形式。

基本上,用
60
替换所有那些
“60 s”
字符串常量。正如OP提到的:这解决了问题/

您应该发布一段尽可能小的代码,以便我们可以在pc上运行,并尝试查看错误。
$someVar>=“60秒将以眼泪结束:
'10s'>'5s'
计算结果为假。。。比较数字时,请确保比较数字类型,而不是字符串。。。并重构此代码,请。。。保持这一点会让人cry@Veda...Thats已经是我代码的摘要了…@EliasVanOotegem…我把它改成“60秒”,因为它的输出来自于持续时间的下拉列表…对不起,你的意思是…我应该删除“s”字???@EliasVanOotegem/。问题解决了!。。。你能把它贴出来吗???@EliasVanOotegem…再次感谢…..)顺便说一下..“var_dump('9s'>'4s');//true”这一个,我想我们应该删除“s”?@user2826499:是的,但这只是为了解释大于/小于比较和字符串是危险的!理想情况下,您应该做的是
(int)$get\u duration>60
(比较整数)@EliasVanOotegem..哦,我明白了。。再次感谢!:)