这个想法是通过挂在学校食堂附近的电视机从html / php网页发出警报,提醒学生洗手。电视被用作学校活动和新闻的小报屏幕。 我在这个页面上使用的代码如下:
<?php
$hour = date('G');
$day = date('1..5'); // 1..7 for Monday to Friday
if (($hour >= 11.05 && $hour <= 11.35) // 5am - 7am
|| ($hour >= 12.15 && $hour <= 12.30) // 10am - 12 noon
|| ($hour >= 21.10 && $hour <= 21.30) // 10am - 12 noon
|| ($day == 1-5) // Monday - Friday
) { ?>
<audio src="Audio/sirena.mp3" autoplay="true" loop="loop">
<?php } ?>
只有在页面上传到服务器上时才会播放,如果它在上面的时间内。否则,它保持沉默。而且,奇怪的是它只能在Chrome / IE / Mozilla上的家用电脑上播放,并且在学校电脑上无法完全播放。 请记住,页面每5分钟自动刷新一次。
如果有人对事件监听器或其他任何事情进行了暗示,我们将不胜感激。
答案 0 :(得分:0)
您的代码存在一些问题。
在$day = date('1..5');
中,'1..5'
不是date()
的有效格式。那只会返回字符串1..5
。你想要date('w')
。
date('G')
以24小时格式返回小时,因此$date
将是整数的字符串表示形式。在if
条件下,您将其与浮点数进行比较。由于所有不同的时间条件都是高于相同整数的各种小数,$date
将永远不会匹配它们中的任何一个。例如,如果时间是上午11:30,则$date
将为'11'
,而不是11.05
和11.35
之间。 (显然,'10'
或'12'
都没有。)
在if
条件的最后一部分,您有|| ($day == 1-5)
。这有两个问题。首先,1-5
并不意味着&#34;在1到5之间&#34; ;它意味着&#34;一减五&#34; 。第二,这是一个额外的非嵌套or
条件这一事实意味着它会否定所有不同的时间比较,因为每当 or
条件的任何部分时是的,整个条件的计算结果为true。如果是|| ($day >= 1 && $day <= 5)
,则if
每周一至周五全天都是如此。事实上,它只在星期四全天都是真的。
我添加了一个更新版本我认为将按照您的要求执行(基于代码中的注释)。我在if
条件下使用了某种奇怪的缩进,希望能够更好地显示分组。基本上它需要检查一天和检查一组时间条件。请注意时间格式('Gi'
)的不同格式,它以可以与if
条件中的整数值进行比较的格式获取小时和分钟。
$day = date('w');
$time = date('Gi');
if ( ($day > 0 && $day < 6) // Monday - Friday
&& ( // AND
($time >= 1105 && $time < 1135) // time range 1
|| // OR
($time >= 1215 && $time < 1230) // time range 2
|| // OR
($time >= 2110 && $time < 2130) // time range 3
)
)
echo '<audio src="Audio/sirena.mp3" autoplay="true" loop="loop">';