新しいコンテンツがデータベースに追加された場合にのみ、divsコンテンツを更新することはできますか?
サイドメニューに表示される「最近の投稿」に使用しています。
現在、divは10秒ごとに更新されるように設定されています。
新しい投稿がデータベースに追加されたことを確認してから、その投稿データのみをdivに追加することはどういうわけか可能ですか?
私はMySql、php、jqueryを使用してこれらすべてを行っています。
はい、テキストの内容を比較することでそれを行うことができます。
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);
この助けを願っています!
はい、可能ですが、でメソッドを作成し、php
を使用Ajax
してを更新する必要がありますdiv
。
あなたがコードであなたの質問を更新するならば、私は例を提供することができます。
おそらくそこまでの道のりは約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に事前/追加する必要があります。
はいそれは可能です
以下のコードは、追加された最近の写真を取得します。
これを使用して、たとえば、現在のページをリロードしなくても、ユーザーが最近のコメント、画像、投稿、またはすべてを表示するライブブログを作成できます。また、コンテンツは新しく追加された場合にのみリロードされるため、多くの帯域幅を消費しません(それ以外の場合は、データベースに小さなチェックを送信するだけです)。
そのための解決策を考え出したところです。それをあなたと共有する必要があります。私はWordpressでそれを行っていましたが、ユーザーがページを読み込んだ後にのみ追加された写真を取得する機能が必要でした。5秒ごとにdivを更新するだけで実行できますが、20枚の写真があり、5秒ごとに更新する必要があると想像してみてください...これは大量のデータです。そのため、新しい写真が追加された場合にのみ更新します(投稿からコメント、ユーザーなど、あらゆるものに適用できます)。
PHPファイルには、 timer.php、check.php、display.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();
?>