0
자바 스크립트 롱 폴링 스크립트에서 msgsrv.php를 호출하여 num_rows
을 아직 화면에 표시하지 않습니다. 여기에 작동하는 자바 스크립트입니다 :
<script type="text/javascript" charset="utf-8">
function addmsg(type, msg){
/* Simple helper to add a div.
type is the name of a CSS class (old/new/error).
msg is the contents of the div */
$("#notiWrap.notiZero").html(
"<div id='notiZero "+ type +"'>"+ msg +"</div>"
);
}
function waitForMsg(){
/* This requests the url "msgsrv.php"
When it complete (or errors)*/
$.ajax({
type: "GET",
url: "http://mediahood.net/widgets/txtr/inc/msgsrv.php",
async: true, /* If set to non-async, browser shows page as "Loading.."*/
cache: false,
timeout:50000, /* Timeout in ms */
success: function(data){ /* called when request to barge.php completes */
addmsg("notiMsg", data); /* Add response to a .msg div (with the "new" class)*/
setTimeout(
waitForMsg, /* Request next message */
1000 /* ..after 1 seconds */
);
},
});
};
$(document).ready(function(){
waitForMsg(); /* Start the inital request */
});
</script>
그러나, msgsrv.php 데이터베이스의 실제 최신 행을 알고 있지만, 지금은 페이지에로드 된 최신 행의 ID를하지 않습니다. $ num_rows가 작동합니다. $ loaded_rows가 실패합니다. JS가 msgsrv.php를 호출 할 때 데이터베이스의 실제 num_rows로 재설정되므로 $ loaded_rows가 실패합니다. 나는 PHP가 최신 행을 쿼리하는 방법을 이미 알고 있기 때문에 데이터베이스 대신에 $ loaded_rows를 읽어야한다.
<?php
/* Send a string after a random number of seconds (2-10) */
sleep(2);
include('/home/alimix/public_html/include/conn.php');
/* Variables */
$nr = mysql_query("SELECT * FROM txtr");
while(mysql_fetch_array($nr))
{$nowrecent = mysql_num_rows($nr);}
$mr = mysql_query("SELECT * FROM txtr ");
for($i=0; $i < 1; $i++)
{$mostrecent = "$nowrecent";}
/* $mostrecent shouldn't equal $nowrecent if new rows aren't loaded*/
$minus = $nowrecent - $mostrecent;
if ($minus > 0) {
//echo $nowrecent;
echo $minus;
//echo $mostrecent;
}
elseif($minus < 1) {
echo "nr".$nowrecent."";
echo " ";
echo "mr".$mostrecent."";
}
?>
이오 얼마나 오래 알아낼 수 있을지 모르겠지만 나에게 맞는 대답을 줄 수도 있습니다. 어쨌든. –