0

MySQL データベースにクエリを実行する PHP コードを使用するページを含む HTML サイトがあります。テーブルには 3 つの列 (日付、時刻、残り) が含まれます。現在の日付と時刻に基づいて、HTML ページが「残り」列から対応する値を返して表示するようにしたいと考えています。

秘訣は、ユーザーがページを更新したりボタンをクリックしたりすることなく、この値を自動的に更新することです (AJAX?)。

私がこれまで持っている PHP は、日付に基づいて「残りの」値を表示するという点で機能しますが、日付と時刻の両方を照会する方法も、自動更新もわかりませんでした。

これまでに把握したPHPコード

(注:quantitytest_config.phpホスト名/ユーザー名/パスワードのみが含まれます)

    <?php

include 'quantitytest_config.php';

//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password) 
  or die("Unable to connect to MySQL");

//select a database to work with
$selected = mysql_select_db("grace59_countdown",$dbhandle) 
  or die("Could not select countdown");

//execute the SQL query and return records
$result = mysql_query("SELECT remaining FROM quantity WHERE salesdate=CURDATE()");
//fetch tha data from the database
while ($row = mysql_fetch_array($result)) {
   echo "Quantity:".$row{'remaining'}."<br>";
}

//close the connection
mysql_close($dbhandle);
?>

よろしくお願いします。とても有難い。

4

2 に答える 2

2

jQuery.load次のスニペットは PHP スクリプトを呼び出し、10 秒ごとに残りのカウントを更新します。

setInterval(function(){
    // Assumes the container has the id of count
    // and the php script is called remaining.php
    $("#count").load("remaining.php")
}, 10000);

jQuery がなければ、多少の読み取りが必要になりますが、それほど難しくありません。

同じ質問に埋め込んだ他の質問に関する限り。複数の質問をまとめて尋ねるべきではありません。各質問には、試したこと、予想される/実際の動作、エラー メッセージが表示されます。それが、あなたの質問が自分だけでなく他の人にも役立つ方法であり、それが Stack Overflow の核心です。現在、あなたの質問は、私はそれを行う方法がわからないということであり、それは SO にはあまり適していません。

于 2013-04-16T23:47:13.240 に答える
1

ご指摘のとおり、AJAX を使用する必要があります。

基本的に、ときどきページを呼び出し続け、新しい結果 (存在する場合) を確認し、それらをユーザーに取得します。

呼び出すページは、投稿したような PHP ファイルで、AJAX 呼び出しの結果を返します。

呼び出しの後、結果がユーザーに表示されます。

通常、AJAX では GET メソッドの方が POST フィールドの処理を伴わないため高速です。また、情報を取得するだけなので、そのまま使用します。

これは、探しているものの基本的な構文です。ちょっと複雑だがわかりやすい名前がいくつかあると思います。

<script>
setInterval(function(){check_new_stuff();}, 10000);

function check_new_stuff(){
  $.ajax({
    type: "GET",
    url: "url_with_your_php_code.php",
    dataType: 'html',
    data: {name_of_the_parameter_to_be_passed_in_get: value_of_the_parameter_to_be_passed_in_get},

    success: function(html){
             $("#div_to_have_its_html_replaced_with_the_result_from_php_code").html(html);
    },

    error: function(){
    },

    complete: function(){
    }
  });

  setTimeout(function(){check_new_stuff();}, 10000);
}
</script>

(これについて詳しく読むことができます ここ)

時間に関するご質問については、問題はありません。フィールドを追加して、データベース クエリで時間値を渡すだけでよいでしょうか。

(現在の時刻が必要な場合は?-説明全体でテーブルの命名法を同じに維持していないため、列名を推測しようとしています)

$result = mysql_query("SELECT remaining FROM quantity WHERE salesdate=CURDATE() AND salestime=CURTIME()");

(特定の時間、自分で指定?)

$result = mysql_query("SELECT remaining FROM quantity WHERE salesdate=CURDATE() AND salestime='11:15:00'");
于 2013-04-16T23:38:28.487 に答える