0

これが私が望むものです。input.php という PHP ページで、ユーザーは html フォームでユーザー名を送信します。これは MYSQL データベースに保存されます。すべてのユーザー名について MYSQL データベースをクエリする results.php というページがあります。

私がする必要があるのは、5秒ごとにいくつかのjqueryコード(おそらくgetJSON)がresults.php(同じページ)からJSON文字列を取得することです。この JSON 文字列は、ユーザーが input.php ページにユーザー名を追加すると更新される場合があります。

これはinput.phpファイルです

        <form name="input" action="<?php $_SERVER['PHP_SELF']?>" method="post">
        Usernames: <input type="text" name="usernames" />
         <input type="submit" value="Submit" name="submit" />
    </form>

    <?php

    if(isset($_POST['submit'])) {
        $link = mysql_connect('', '', '');
        if (!$link) {
            die('Could not connect: ' . mysql_error());
        }

        $db_selected = mysql_select_db('', $link);
        if (!$db_selected) {
            die ('Can\'t use  : ' . mysql_error());
        }

        $result = mysql_query("INSERT INTO users(user_name)             VALUES('".$_POST['usernames']."')");
        if (!$result) {
            die('Invalid query: ' . mysql_error());
        }


    }
    ?>

これは results.php ファイルです

    <script
        type="text/javascript" src="jquery-1.7.1.min.js"></script>
    <?php

    $link = mysql_connect('localhost', 'root', '');
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }

    $db_selected = mysql_select_db('test', $link);
    if (!$db_selected) {
        die ('Can\'t use test : ' . mysql_error());
    }

    $result = mysql_query("SELECT user_name FROM users");
    if (!$result) {
        die('Invalid query: ' . mysql_error());
    }


    $names = array();

    while ($row = mysql_fetch_assoc($result)) {

        foreach ($row as $key => $val) {

            $names[][$key] = $val;
        }
    }

    echo json_encode($names);


    ?>
    <script type="text/javascript"> 




        $.getJSON("http://localhost/test/results.php", function(json){
            alert("JSON Data: " + json);
        });

    </script>



    <div></div>

どのjqueryを配置するか、またはこれを適切に行っている場合でも、私は立ち往生しています。最終的な結果は、ページを更新せずに電子メールを受信する Gmail のようなものです。しかし、私のシステムは、ページを更新しなくても 5 秒ごとにデータベースからユーザー名を取得していました。私は getJSON メソッドについて読んだことがありますが、それについては完全に理解していないので、非常に詳細な説明が必要な場合があります。この目的を間違った方法で行っている場合は、私に知らせてください。これを行う方法の良い方法を教えてください。

PHPコードからエコーされたJSON文字列を除いて、ブラウザでこのURLを試してみました。

これは私のJSON文字列です

[{"user_name":"matt"},{"user_name":"matt"},{"user_name":"peter"},{"user_name":"jim"},{"user_name":"sam"} ]

4

3 に答える 3

0

setTimeout を使用できます。

   setTimeout( function() {
    getData()
  }, 5000);

 function getData() {
    $.getJSON("http://localhost/test/results.php", function(json){
        alert("JSON Data: " + json);
    });
    });
   }
于 2012-05-11T23:37:59.840 に答える
0

あなたが探しているのは AJAX と呼ばれるものです。それを達成するには JavaScript が必要です。洗練された簡単な方法が必要な場合は、jQuery をお勧めします。コードは次のようになります。

setTimeout(function(){
    $.post("results.php",function(result){
        //Do somthing with the result Array or object
    },"json");
},5000);

さらに、データ「ユーザー名」を1つしか取得していないため、オブジェクトjsonではなく配列jsonを返す必要があります

["matt","matt","peter","jim","sam"]

あなたとあなたのユーザーの両方にとって、帯域幅が少なくて済むはずです。

注: results.php から jquery スクリプトを削除する必要があります。戻す必要があるのは json だけです。疑問がある場合は質問してください

于 2012-05-11T23:38:31.253 に答える
0

results.php を使用して両方のこと (つまり、ユーザー名の表示と JSON クエリへの応答) を行いたい場合は、ファイルを 2 つのブランチに分割する必要があります。_GET 変数を使用して、どのブランチを指定するかを指定します。したがって、たとえば、results.php だけでなく、results.php?json=true に対して .getJSON を実行します。ここで、results.php 内に、この _GET 変数の存在をチェックする if 分岐があり、存在する場合は、必要なデータを取得し、json エンコードされた文字列でエコーしてから、 exit() を実行します。<script>タグの前であっても、results.php の他の何よりも前にこれらすべてを実行します。

コードを提供するために編集:(OPの質問から編集)

<?php
    $link = mysql_connect('localhost', 'root', '');
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }

    $db_selected = mysql_select_db('test', $link);
    if (!$db_selected) {
        die ('Can\'t use test : ' . mysql_error());
    }

    $result = mysql_query("SELECT user_name FROM users");
    if (!$result) {
        die('Invalid query: ' . mysql_error());
    }

    $names = array();

    while ($row = mysql_fetch_assoc($result)) {

        foreach ($row as $key => $val) {

            $names[][$key] = $val;
        }
    }

    if (isset($_GET['json'])) {
        echo json_encode($names);
        exit();
    }

    ?>
    <script type="text/javascript" src="jquery-1.7.1.min.js"></script>
    <script type="text/javascript"> 
        $.getJSON("http://localhost/test/results.php?json=true", function(json){
            alert("JSON Data: " + json);
        });
    </script>



    <div></div>
于 2012-05-11T23:17:03.743 に答える