获取新的 MySQL 条目并动态追加到现有的 div
Posted
技术标签:
【中文标题】获取新的 MySQL 条目并动态追加到现有的 div【英文标题】:Fetch new MySQL entries and append to existing div's dynamically 【发布时间】:2012-06-29 02:06:37 【问题描述】:我有一个 php 脚本可以从数据库中为 cmets 选择记录,然后将它们打印到页面上。我想要发生的是,如果一个用户在一个页面上,而另一个用户在所述页面上的一个项目上,它会自动将新评论附加到底部。我遇到的问题是我不知道如何区分所有状态。
我在状态上生成 cmets 的代码是:
<?php
$rt = ("SELECT * FROM (SELECT comment as comment, byuid as byuid, comuid as comuid, likes as likes, dislikes as dislikes, UNIX_TIMESTAMP(timestamp) as timestamp FROM mingle_comments WHERE onuid = '$sid' AND type = 'status' ORDER BY timestamp DESC LIMIT 2) mingle_comments ORDER BY timestamp ASC"); //query
$result = mysql_query($rt) or die (mysql_error());
if(mysql_num_rows($result) >= 2)
?>
<div id="sa" style="background:#E0E0E0; padding:5px 5px 5px 5px;">
<a href="#" style="font-family:Arial; font-size:12px; color:#3a3a3a; text-decoration:none;">View all comments...</a>
</div>
<?php
while($st = mysql_fetch_assoc($result))
$comment = nl2br($st['comment']);
$by = $st['byuid'];
$comuid = $st['comuid'];
$time = $st['timestamp'];
$l = $st['likes'];
$d = $st['dislikes'];
$bq = "SELECT * FROM users WHERE uid = '$by' LIMIT 1";
$bqq = mysql_query($bq) or die (mysql_error());
while($bqr = mysql_fetch_assoc($bqq))
$dp = $bqr['dp'];
$fbq = $bqr['fname'];
$sbq = $bqr['sname'];
?>
<div id="commentbox" class="<?php echo $comuid; ?>" style="padding:5px 5px 5px 5px;">
<div id="cbi" style=" display:inline; position:relative; ">
<img src="<?php if ($dp == null) echo 'img/unknown_user.jpg'; else echo "pf/" . $by . "/" . $dp; ?>" style=" display:inline; position:relative;"/>
</div>
<div id="cbt" style="position:relative; margin-left:32px; margin-top:-35px;">
<a href="profile.php?uid=<?php echo $uid; ?>" style="position:relative; font-size:13px; margin-left:10px; font-family:Arial; color:#3a3a3a; text-decoration:none;"><?php echo $fbq . " " . $sbq; ?></a>
<p class="<?php echo $comuid; ?>" style="position:relative; margin-left:5px;"><?php echo $comment; ?></p>
</div>
<div id="clb" style="background:#E0E0E0; padding-left:5px;">
<a href="#">Like</a><a href="#" id="time"><?php echo time_since($time); ?></a>
</div>
</div>
<?php
?>
TL:DR;如何在不刷新页面的情况下自动获取新的 cmets 并将它们附加到上述脚本中生成的 cmets。
【问题讨论】:
您需要使用 jquery 的 $.ajax 调用来带来新的结果。很简单,如果你愿意,我可以为你提供一些代码 @AviateX14 你想要的是一种通常被称为“长轮询”的技术 @AviateX14 为你添加了一些代码 【参考方案1】:JQUERY
$(document).ready(function()
var lastcheck='';
setInterval(function()
$.ajax(
url: 'URL_TO_PHP_SCRIPT',
type: 'POST',
data: 'lastcheck':lastcheck,
success: function(result)
if (result!='nothing_new')
lastcheck=result.lastcheck /*Update lastcheck*/
var data=result.data;
$.each(data, function(i,val)
//Foreach comment you do what you need, like append, prepend, etc. data[i]."key" to get the value.
);
);
, 15000 /* This will check each 15 seconds, you can change it */);
);
PHP 端
$lastcheck=$_POST['lastcheck'];
/*
You should add a date field to each new created comment,then filter by "orderby date > $lastcheck" so you get comments since your last check
You get the new comments here
...
...
..
*/
if (!empty($arrayofnewcomments))
/*The output*/
echo json_encode(array('lastcheck'=>date('Y-m-d H:i:s'),'data'=>$arrayofnewcomments));
else/*No new comments*/
echo 'nothing_new';
这是我想出的一些代码,它是一个通用的想法,但它有效。它将每 15 秒检查一次是否有新的 cmets。
【讨论】:
以上是关于获取新的 MySQL 条目并动态追加到现有的 div的主要内容,如果未能解决你的问题,请参考以下文章
使用 pandas 将不同位置的行附加到现有的 csv 文件
python 把新的dataframe保存到现有的excel新的sheet里面