这是我的数据库示例:
**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 " <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 " ";
echo $row['fldBldgName'];
echo " <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 " ";
echo $row['fldBldgName'];
echo " <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 " ";
echo $row['fldBldgName'];
echo " <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 " ";
echo $row['fldBldgName'];
echo " <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 " ";
echo $row['fldBldgName'];
echo " <img src='image/warning.png' title='Only 60 s left'><br>";
}
示例场景:
我选择“5秒”持续时间...
这是我的程序的输出,: 这个错了......
输出应为..
这是正确的输出:
因为我只会在总持续时间中添加“5秒”....其余的持续时间正在工作但不是这个[5秒]
感谢您的帮助..
答案 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提到的:这解决了问题/.