-1

这是我的数据库示例:

  **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 s”持续时间......

这是我的程序的输出:这个是错误的.... 在此处输入图像描述

输出应该是..

这是正确的输出:

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

在此处输入图像描述

谢谢您的帮助..

4

2 回答 2

0

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

如果我看到您在那里对 LRT - 2 进行了硬编码,我认为您也可以通过以不同方式制定数据库查询来使事情变得更好。

于 2013-10-15T13:43:04.510 回答
0

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

$get_duration <= "60 s"

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

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

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

“9 年代”>“50 年代”

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

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

于 2013-10-15T14:07:47.573 回答