0

私のウェブサイトに問題があります。PHPコードとJSでカウントダウンタイマーを作成しました。

私の問題は、変数 abc をエコーするときです。大丈夫です(正しいタイムスタンプをエコーし​​ます)が、「DBからの終了時間-サーバーの現在の時間+クライアント時間」を使用して実際の終了時間を見つけたら、それをエコーし​​ます。結果は「DB からの終了時間 - サーバー currentime」のみです。この問題を解決するにはどうすればよいですか?

JS

 </script>  
<script type="text/javascript">
var get_client_time = Math.round(new Date().getTime()/1000);

<?php $abc = "<script>document.write(get_client_time)</script>"?>   
</script>

PHP コード

  echo $abc . "</br>";
  $show=mysql_query("SELECT * FROM `room_lists` WHERE `active` = 1");
    while ($array = mysql_fetch_array($show))
    {
        $room_number = $array['room_number'];
        $room_name = $array['room_name'];
        $subject = $array['subject'];
        $s_group = $array['s_group'];
        $active = $array['active'];

        $timeStop = $array['timeStop'];

        //find real ending time
        $endDay = $abc + strtotime($timeStop)-strtotime(date('Y-m-d H:i:s'));
        echo $endDay;
        die();
       ......} //blah blah blah code
4

3 に答える 3

0

1) TheTime.js を使用すると、JavaScript で Date オブジェクトをより適切に処理できます。

ドキュメント: https://github.com/the-teacher/TheTime.js

ソース: https://github.com/the-teacher/TheTime.js/blob/master/js/the_time.js

(new Moment).unix

例えば

<script>document.write( (new Moment).unix );</script>

2)そして、mysqlでタイムゾーンを変更してみてください

http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html

mysql_query("SET time_zone = SOMETIMEZONE");
于 2012-08-08T10:51:55.877 に答える
0

残念ながら、PHP と Javascript をそのように混在させることはできません。それを達成できる唯一の方法は、ajax を使用することです。いくつかの一般的なライブラリjQueryを使用します。

1 番目の方法は、クライアントがページに入るとすぐに送信される背景を使用することです。

<html><head><title>Please wait ...</title></head><body>
<form method="post" action="nextpage.php" id="continue" name="continue">
    <input type="hidden" name="client_time" id="client_time" value="" />
</form>

<script type="text/javascript">
    document.getElementById('client_time').value = Math.round(new Date().getTime()/1000);
    document.continue.submit();
</script>
</body></html>

このようにして、次のページでclient_timeクライアント時間を含む post 変数を取得します。

2番目の方法は、ajaxを使用し、同じページでデータを送受信することです: $.post

[編集] どちらの方法も信頼できません。そのため、クライアント PC やブラウザに基づいて何かをうまく行うことはできません。

于 2012-08-08T10:52:25.687 に答える
0

個人的には、これらの計算でクライアントの時刻/日付を信頼することはできません。サーバーの時刻/日付に頼るだけです。少なくとも、あなたはそれをある程度制御できます。クライアントでのカウントダウンに関しては、サーバーが考えている時間とクライアントが考えている時間からデルタを計算し、それをカウントダウンだけに使用します。これを実現するには、ページに非表示の入力変数を配置するだけです。

サーバー側では、時間を文字列として保存しません。MySql の組み込みデータ型を使用すると、数学が簡単になります。

あなたが達成しようとしていることについては、あなたの説明を改善できると思います。

于 2012-08-08T10:55:46.270 に答える