2016-10-13 12 views
0

アイデアは、学校の食堂付近に掛けられたテレビを介してhtml/phpのWebページからアラームを鳴らして、生徒に手を洗うことを思い出させることです。テレビは、学校のイベントやニュースのタブロイド画面として使用されます。次のように私はこのページで使用しているコードの 作品は次のとおりです。ある日のアラーム音

<?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でのみ再生され、学校のPCでは完全に再生されません。 ページが5分ごとに自動的に更新されることに注意してください。

誰かがイベントリスナーなどにヒントを与えてくれたらうれしいです。

+0

'date( 'G')'の出力です。 –

+0

実際にはプログラミング関連のサイドノートでは、頻繁にそれを聞くと、人々は非常に迅速にアラーム音に鈍感になるようです。 –

+0

日付(G)について - 1時間の24時間形式(0〜23)。 私が書いたら - || ($ day == 1-5)ドット付き|| ($ day == 1..5)エラー500内部サーバーエラーが発生します。 – user72160

答えて

0

コードにはいくつか問題があります。

$day = date('1..5');'1..5'は、date()の有効な形式ではありません。それは単に文字列1..5を返します。あなたはdate('w')が欲しいです。

date('G')は、時間を24時間形式で返します。したがって、$dateは整数の文字列表現になります。あなたの状態では、それを浮動小数点数と比較しています。異なる時間条件はすべて同じ整数よりも上のいろいろな小数であるため、$dateはそれらのどれとも決して一致しません。たとえば、時刻が11:30 AMの場合、$date'11'となり、11.0511.35の間には入りません。 (明らかに、いずれも'10'または'12'ではありません)

if状態の最後では、|| ($day == 1-5)です。それには2つの問題があります。第1に、1-5は、「1と5との間に」を意味しない。; 「1マイナス5」を意味します。第2に、これが追加のネストされていないor条件であるということは、のいずれかの部分がorの条件のいずれかが真であるときはいつでも、条件が真と評価されるため、様々な時間比較のすべてを否定することを意味する。 || ($day >= 1 && $day <= 5)の場合、ifは毎週月曜日から金曜日まで一日中真となります。そうであるように、それは木曜日にのみ真の1日です。

私はが(あなたのコードのコメントに基づいて)それをしたいと思います更新されたバージョンを追加しました。うまくいけばグループ化を少し良くするために、私はifの状態で何らかの奇妙な字下げを使用しました。基本的には、の時間を確認する必要があります。時刻('Gi')の異なる形式に注意してください。時刻は、ifの条件で整数値と比較できる形式で時間と分を取得します。一日でそのOR条件の最後のパーが、それはすべての時間を無視するだろう、と彼らはと比較して適切なフォーマットにいるよう `$のhour`番号を見ていないように見えます

$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分までのように分単位で作業することは非常に重要です。これらの時間外にあるものはすべてレッスンです。これはテレビを静かにする必要があります。 $ hour = date( 'G')を置き換えようとしました。 $時間=時間(); $ hour = date( 'HH:MM')が、トリックはしませんでした。 これまで分からないことはありますか? – user72160

+0

ああ、そうかもしれない。だから、あなたのコードの中の「午前5時〜午前7時」などのコメントは何も意味しませんか? –

+0

あなたはそれを拡大できますか? さらに、Mozilla/IE/Chromeでも動作しますが、LinuxのChromiumではサポートされていません。我々はそれをEU時間に設定したので、それも24時間形式です。 – user72160

関連する問題