2

新しいコンテンツがデータベースに追加された場合にのみ、divsコンテンツを更新することはできますか?

サイドメニューに表示される「最近の投稿」に使用しています。

現在、divは10秒ごとに更新されるように設定されています。

新しい投稿がデータベースに追加されたことを確認してから、その投稿データのみをdivに追加することはどういうわけか可能ですか?

私はMySql、php、jqueryを使用してこれらすべてを行っています。

4

5 に答える 5

2

はい、テキストの内容を比較することでそれを行うことができます。

function updateHtmlContent() {
    var htmlContent=$('#divToUpdate').text();
    $.ajax({
        type: "GET",
        datatype: "text",
        //php function that should give you the text back
        url: 'dataBaseFunction.php',
        success: function(data) {
            if (htmlContent != data) {
                $('#divToUpdate').text(data);
            }
        }
    });
}

//compare and upate every 20 seconds
setInterval(updateHtmlContent(), 20000);

この助けを願っています!

于 2012-09-14T12:55:32.137 に答える
1

はい、可能ですが、でメソッドを作成し、phpを使用Ajaxしてを更新する必要がありますdiv

あなたがコードであなたの質問を更新するならば、私は例を提供することができます。

于 2012-09-14T12:44:14.077 に答える
1

おそらくそこまでの道のりは約90%だと思います。コンテンツで10秒ごとにjQueryからAJAXを使用していると思います(PSそれはたくさんのようですか?)

裏側の機能を、見つかった最新の投稿から開始することで、問題を解決できると思います。

したがって、クエリが次のようになっている場合:

SELECT a,b,c FROM foo

次のように変更する必要があります

SELECT a,b,c FROM foo WHERE id > $last_found_id

Javascriptに保存last_found_idして、関数を呼び出したときに送り返すことができます。結果セットが空の場合、divを更新する必要はありません。

この変更では、divを完全に上書きするのではなく、divに事前/追加する必要があります。

于 2012-09-14T12:49:03.687 に答える
1

はいそれは可能です

以下のコードは、追加された最近の写真を取得します。

  1. TIMER.PHPがロードされた後(またはワードプレスのブログページ)
  2. そして、新しい写真が追加された後でのみ(最近の投稿、コメント、またはその他に使用できます)

これを使用して、たとえば、現在のページをリロードしなくても、ユーザーが最近のコメント、画像、投稿、またはすべてを表示するライブブログを作成できます。また、コンテンツは新しく追加された場合にのみリロードされるため、多くの帯域幅を消費しません(それ以外の場合は、データベースに小さなチェックを送信するだけです)。

そのための解決策を考え出したところです。それをあなたと共有する必要があります。私はWordpressでそれを行っていましたが、ユーザーがページを読み込んだ後にのみ追加された写真を取得する機能が必要でした。5秒ごとにdivを更新するだけで実行できますが、20枚の写真があり、5秒ごとに更新する必要があると想像してみてください...これは大量のデータです。そのため、新しい写真が追加された場合にのみ更新します(投稿からコメント、ユーザーなど、あらゆるものに適用できます)。

PHPファイルには、 timer.phpcheck.phpdisplay.phpの3つがあります。

timer.phpは、新しいコンテンツが追加されているかどうかを確認するために、5秒ごとにcheck.phpをロードします。check.phpの現在のロード時からの-6抽出に注意してください。

timer.phpの日時は、check.php(** display.php?timm ='。$tizz。')を介して(check.php?tim = ** print dateによって)渡され、 display.phpなので、データベースでの参照に使用できます(新しい画像が追加された場合は、すべての画像をロードする時間になります)。

ご不明な点がございましたら、お気軽にお問い合わせください。それは私のために働くので、あなたのためにも働く必要があります。

楽しい!:)

以下は3つのPHPファイルです。ニーズに合わせてカスタマイズしてください。

THE TIMER.PHP(またはワードプレスのブログページ):

<script type="text/javascript" src="jquery.js"></script>

<script type="text/javascript">
        $(document).ready(function(){


            setInterval(function(){
                $("#quotex a").load("check.php?tim=<?php print date("Y-m-d H:i:s"); ?>");
            }, 5000);

        });
        </script>

        <div id="quote"><a></a></div>


        <div id="quotex"><a></a></div>

CHECK.PHP

 <?php 
     // Connects to your Database 
     mysql_connect("localhost", "username", "password") or die(mysql_error()); 
     mysql_select_db("database name") or die(mysql_error()); 



     // SQL query
        $strSQL = "SELECT * FROM wp_posts WHERE   post_mime_type LIKE 'image/jpeg' ORDER BY `wp_posts`.`id`  DESC LIMIT 1";

        // Execute the query (the recordset $rs contains the result)
        $rs = mysql_query($strSQL);

        // Loop the recordset $rs
        // Each row will be made into an array ($row) using mysql_fetch_array
        while($row = mysql_fetch_array($rs)) {

        $atime = $row['post_date'];

    $tizz = $_GET['tim'];    

    $dsff = $row['post_date'];;

    $duff = date("Y-m-d H:i:s");

    //convert the date-time into seconds so we can extract 6 seconds from it
    $six = strtotime(date("Y-m-d H:i:s"))-6; 

    //convert the latest image date-time too from database so we can compare it
     $sox = strtotime("$dsff");

     if ($six < $sox)
      {
      echo '<script type="text/javascript">$(document).ready( function(){ $("#quote a").load("display.php?timm='. $tizz .'"); } ); </script>';
      }
          }

        // Close the database connection
        mysql_close();


     ?>

DISPLAY.PHP :_

<?php 
$tipp = $_GET["timm"];
 // Connects to your Database 
 mysql_connect("localhost", "username", "password") or die(mysql_error()); 
 mysql_select_db("database name") or die(mysql_error()); 




 // SQL query
    $strSQL = "SELECT * FROM wp_posts WHERE   post_mime_type LIKE 'image/jpeg' AND post_date > '$tipp' ORDER BY `wp_posts`.`id`  DESC LIMIT 10";
    // Execute the query (the recordset $rs contains the result)
    $rs = mysql_query($strSQL);

    // Loop the recordset $rs
    // Each row will be made into an array ($row) using mysql_fetch_array
    while($row = mysql_fetch_array($rs)) {
    //guid is the column where the image url is located in the wordpress database table
    $atime = $row['guid'];

     echo "<img src='". $atime ."' /><br />";
      }
    // Close the database connection
    mysql_close();


 ?>
于 2013-01-13T11:52:23.310 に答える
0

javascriptでsetInterval(function, time)「時間」(ミリ秒単位)ごとにループを作成し 、jQueryで情報をサーバーに渡す

関数を確認します。また、または を使用して新しいコンテンツを作成する必要があります。$.ajax()

.html().append()

于 2012-09-14T12:49:35.247 に答える