【问题标题】:Find correct value between different pairs of options [closed]在不同的选项对之间找到正确的值[关闭]
【发布时间】:2013-11-30 12:12:52
【问题描述】:

我需要根据一天中的不同时间显示一个图标。

  • 图标 1 - 凌晨 1 点到早上 7 点
  • 图标 2 - 早上 7 点到早上 8 点
  • 图标 3 - 上午 8 点到下午 12 点
  • 图标 4 – 中午 12 点到下午 1 点
  • 图标 5 – 下午 1 点到 6 点
  • 图标 6 – 晚上 6 点到晚上 8 点
  • 图标 7 – 晚上 8 点到凌晨 12 点。

这些图标和时间对将动态来自数据库。

如何创建一个循环以在一天中的任何时间找到正确的图标?

【问题讨论】:

  • 您的问题不清楚。首先您在上面提到了图标和相应的时间范围,然后您说这些将动态来自数据库。
  • 图标和相应的时间范围是样本数据,将存储在数据库中。

标签: php


【解决方案1】:

它可能是一个返回正确值的简单开关。 比如:

$current_time = date('G');

switch(TRUE) {
    case($current_time >= 1 && $current_time <= 7):
        //set right icon
        //another options...
}

另一种选择是直接从 SQL 查询中进行,但我不确定这个解决方案有多好。像 SELECT icon FROM table WHERE start_time =&gt; CURTIME() AND end_time &lt;= CURTIME() - 但在这种情况下,您应该以正确的日期格式存储 小时。

【讨论】:

  • 如果你解决了 OP 的这一点,我会做 +1 '这些图标和时间对将动态地来自数据库。 '
  • 感谢您的快速回答,我需要将时间范围存储在数据库中,以便管理员可以更改它们。但我想我可以用循环动态地在 switch 语句中创建案例。
  • 不幸的是,switch 内部不支持循环:stackoverflow.com/questions/1391211/…
  • 好吧,答案取决于这个:你总是有 7 个图标 还是更少?在这种情况下,您可以从$start_time[n] 和$end_time[n] 等数据库中输出这些值,并为每个case 相应地设置它们。除非您制作代码生成器,否则您无法动态创建 php 运算符。
  • 图标的数量可以改变,因为管理员可以添加它们,我不想以任何方式修复它们。
【解决方案2】:
$current_time = date('G');

while($resultset=mysql_fetch_assoc($query_result))
{
    if($current_time >= $resultset["time_range1"] && $current_time <= $resultset["time_range2"])
    {
        //set right icon

     }
    //another options condition is as..put here
}

//我只是按照我的逻辑建议

【讨论】:

    【解决方案3】:
    <!DOCTYPE html>
    <html>
    <body>
    
    <?php
    // Prints the day
    
    $d= mysql_query("SELECT  * from result ");
    $row = mysql_fetch_assoc($d);
    $now = date("gA");
    echo $now;
    if($now=='1AM' or $now=='2AM' or $now=='3AM'or $now=='4AM' or $now=='5AM' or $now=='6AM')
    {
    echo $row['Icon 1'];
    }
    elseif($now=='7AM')
    {
    echo $row['Icon 2'];
    }
    elseif(  $now=='8AM' or $now=='9AM' or $now=='10AM' or $now=='11AM')
    {
    
    echo $row['Icon 3'];
    }
    elseif($now=='12PM' or $now=='1PM' or $now=='2PM' or $now=='3PM' or $now=='4PM' or $now=='5PM' )
    {
    
    echo $row['Icon 4'];
    }
    elseif( $now=='6PM' or  $now=='7PM'  )
    {
    
    echo $row['Icon 5'];
    }
    elseif( $now=='8PM' or  $now=='9PM' or $now=='10PM' or $now=='11PM' or $now=='12AM'  )
    {
    
    echo $row['Icon 6'];
    }
    
    ?>
    
    </body>
    </html>
    

    【讨论】:

    • 请不要这样编码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多