2016-10-13 88 views
0

這個想法是通過一個掛在學校食堂附近的電視提醒學生洗手來從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,並且不能在學校PC上播放。 請記住,頁面每5分鐘自動刷新一次。

如果有人對事件監聽器或其他任何事情給予暗示,我們將不勝感激。

+0

它看起來像的,最後面值或條件與天將使其忽略所有的時間,和'$ hour'數字並不像他們在正確的格式來比較輸出'date('G')'。 –

+0

在一個沒有真正編程相關的腳註中,如果人們經常聽到它,人們似乎很快會對警報聲音變得敏感。 –

+0

關於日期(G) - 一小時(0至23)的24小時制格式。 如果我寫 - || ($ day == 1-5)帶點|| ($ day == 1..5)我得到錯誤500內部服務器錯誤。 – user72160

回答

0

您的代碼有幾個問題。

$day = date('1..5');'1..5'不是date()的有效格式。這將返回字符串1..5。你想要date('w')

date('G')以24小時格式返回小時,因此$date將是一個整數的字符串表示形式。在您的if條件下,您將其與浮點數進行比較。由於所有不同的時間條件都是相同整數以上的各種小數,所以$date將永遠不會匹配任何一個。例如,如果時間是上午11:30,$date將是'11',它不在11.0511.35之間。 (顯然,'10''12'也不是。)

if的最後部分條件中,您有|| ($day == 1-5)。這有兩個問題。首先,1-5並不意味着「在一到五之間」;這意味着「一減五」。其次,這是一個附加的非嵌套條件,這意味着它會否定所有的各種時間比較,因爲每當條件的任何部分成立時,整個條件評估爲真。如果是|| ($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">'; 
+0

謝謝。把它的工作時間縮短到幾分鐘是非常重要的,比如11:05到11:35,因爲這些時間以外的任何事情都是教訓。這要求電視安靜。 我試過更換$小時=日期('G');與$小時=時間();和$小時=日期('HH:MM'),但它沒有辦法。 有沒有辦法讓它降到分鐘? – user72160

+0

哦,是的,這是可能的。所以,你的代碼中的評論說'早上5點 - 上午7點'等不代表什麼? –

+0

你可以擴展它嗎? 另外,它現在在Mozilla/IE/Chrome中工作,但它不在Linux上的Chromium上......對此有何想法?我們將它設置爲EU時間,因此也是24小時制。 – user72160

相關問題