PHP+Mysql+jQuery實現(xiàn)動態(tài)展示信息
更新時間:2011年10月08日 23:26:57 作者:
在本文中,我將介紹如何在頁面上實現(xiàn)動態(tài)展示用戶發(fā)表的信息,將用戶發(fā)表的信息逐條播放展示。該效果可以在展示系統(tǒng)動態(tài)、商品評論等場景應(yīng)用
在本站前面有文章介紹了如何實現(xiàn)發(fā)表微博說說:PHP+Mysql+jQuery實現(xiàn)發(fā)布微博程序--jQuery篇,本例將基于其數(shù)據(jù)庫結(jié)構(gòu),用動態(tài)的方式展示發(fā)表的說說信息。
<div id="demo">
<div class="saylist">
<a href="#"><img src="images/0.jpg" width="50" height="50" alt="demo" /></a>
<div class="saytxt">
<p><strong><a href="http://chabaoo.cn">Shuro</a></strong><span>
8分鐘前</span> 說:</p>
<div class="say">評論內(nèi)容。。。</div>
</div>
</div>
...
</div>
上述HTML結(jié)構(gòu)由N個.saylist構(gòu)成,用于展示用戶的評論信息,當(dāng)然在本例中,將由PHP負(fù)責(zé)生成這段XHTML代碼。
CSS
#demo{width:400px; height:80px; margin:80px auto; border-bottom:1px dotted #d3d3d3}
.saylist{margin:8px auto; height:80px; padding:4px 0;}
.saylist img{float:left; width:50px; margin:4px}
.saytxt{float:right; width:320px; overflow:hidden}
.saytxt p{line-height:18px}
.saytxt p strong{margin-right:6px}
.saytxt p span{color:#999}
.say{margin-top:3px; font-size:14px; font-weight:bold}
使用上述CSS渲染HTML外觀,當(dāng)然你也可以自己定制你喜歡的外觀樣式。
PHP
在function.php中有兩個函數(shù),formatSay()用來輸出用戶評論列表,即輸出上文中的HTML。
function formatSay($say,$dt,$uid){
$say=htmlspecialchars(stripslashes($say));
return'
<div class="saylist"><a href="#"><img src="images/'.$uid.'.jpg" width="50"
height="50" alt="demo" /></a>
<div class="saytxt">
<p><strong><a href="#">demo_'.$uid.'</a></strong> <span>'.tranTime($dt).'</span> 說:
</p><div class="say">'.$say.'</div>
</div>
<div class="clear"></div>
</div>';
}
時間軸函數(shù)tranTime()將時間轉(zhuǎn)換成如“1小時前”的格式,詳情可閱讀本站文章:PHP實現(xiàn)時間軸函數(shù)
function tranTime($stime) {
$rtime = date("m-d H:i",$stime);
$htime = date("H:i",$stime);
$day_time = date("j",$stime);
$today=date("j",time());
$ds = $today - $day_time;
$time = time() - $stime;
if ($time < 60) {
$str = '剛剛';
}
elseif ($time < 60 * 60) {
$min = floor($time/60);
$str = $min.'分鐘前';
}
elseif ($time < 60 * 60 * 24) {
$h = floor($time/(60*60));
$str = $h.'小時前 '.$htime;
if($ds==1)
$str = '昨天 '.$rtime;
}
elseif ($time < 60 * 60 * 24 * 2) {
$str = '昨天 '.$rtime;
if($ds==2)
$str = '前天 '.$rtime;
}elseif($time < 60 * 60 * 24 * 3){
$str = '前天 '.$rtime;
if($ds>2)
$str = $rtime;
}
else {
$str = $rtime;
}
return $str;
}
然后在index.php中調(diào)用funciton.php,并連接MySQL數(shù)據(jù)庫輸出評論列表。
require_once('connect.php'); //連接數(shù)據(jù)庫文件
require_once('function.php'); //函數(shù)文件
$query=mysql_query("select * from say order by id desc limit 0,15");
while ($row=mysql_fetch_array($query)) {
$sayList.=formatSay($row[content],$row[addtime],$row[userid]);
}
在div#demo中輸出評論列表。
<div id="demo">
<?php echo $sayList;?>
</div>
這樣一來,運(yùn)行index.php會出現(xiàn)一個列表,我們只需要一條一條展示,下面就需要jQuery來辦了。
jQuery
$(function(){
//除了顯示第一個saylist,其他的都隱藏
$(".saylist").hide().eq(0).show();
//自循環(huán)函數(shù),循環(huán)展示信息
(function showNextSay(){
//每條信息展示7.5秒
$(".saylist:visible").delay(7500).fadeOut("slow",function(){
$(this).appendTo("#demo");
//展示下一條
$(".saylist:first").fadeIn("slow",function(){
//再次調(diào)用函數(shù)
showNextSay();
});
});
})();
});
查看示例:DEMO
XHTML復(fù)制代碼 代碼如下:
<div id="demo">
<div class="saylist">
<a href="#"><img src="images/0.jpg" width="50" height="50" alt="demo" /></a>
<div class="saytxt">
<p><strong><a href="http://chabaoo.cn">Shuro</a></strong><span>
8分鐘前</span> 說:</p>
<div class="say">評論內(nèi)容。。。</div>
</div>
</div>
...
</div>
上述HTML結(jié)構(gòu)由N個.saylist構(gòu)成,用于展示用戶的評論信息,當(dāng)然在本例中,將由PHP負(fù)責(zé)生成這段XHTML代碼。
CSS
復(fù)制代碼 代碼如下:
#demo{width:400px; height:80px; margin:80px auto; border-bottom:1px dotted #d3d3d3}
.saylist{margin:8px auto; height:80px; padding:4px 0;}
.saylist img{float:left; width:50px; margin:4px}
.saytxt{float:right; width:320px; overflow:hidden}
.saytxt p{line-height:18px}
.saytxt p strong{margin-right:6px}
.saytxt p span{color:#999}
.say{margin-top:3px; font-size:14px; font-weight:bold}
使用上述CSS渲染HTML外觀,當(dāng)然你也可以自己定制你喜歡的外觀樣式。
PHP
在function.php中有兩個函數(shù),formatSay()用來輸出用戶評論列表,即輸出上文中的HTML。
復(fù)制代碼 代碼如下:
function formatSay($say,$dt,$uid){
$say=htmlspecialchars(stripslashes($say));
return'
<div class="saylist"><a href="#"><img src="images/'.$uid.'.jpg" width="50"
height="50" alt="demo" /></a>
<div class="saytxt">
<p><strong><a href="#">demo_'.$uid.'</a></strong> <span>'.tranTime($dt).'</span> 說:
</p><div class="say">'.$say.'</div>
</div>
<div class="clear"></div>
</div>';
}
時間軸函數(shù)tranTime()將時間轉(zhuǎn)換成如“1小時前”的格式,詳情可閱讀本站文章:PHP實現(xiàn)時間軸函數(shù)
復(fù)制代碼 代碼如下:
function tranTime($stime) {
$rtime = date("m-d H:i",$stime);
$htime = date("H:i",$stime);
$day_time = date("j",$stime);
$today=date("j",time());
$ds = $today - $day_time;
$time = time() - $stime;
if ($time < 60) {
$str = '剛剛';
}
elseif ($time < 60 * 60) {
$min = floor($time/60);
$str = $min.'分鐘前';
}
elseif ($time < 60 * 60 * 24) {
$h = floor($time/(60*60));
$str = $h.'小時前 '.$htime;
if($ds==1)
$str = '昨天 '.$rtime;
}
elseif ($time < 60 * 60 * 24 * 2) {
$str = '昨天 '.$rtime;
if($ds==2)
$str = '前天 '.$rtime;
}elseif($time < 60 * 60 * 24 * 3){
$str = '前天 '.$rtime;
if($ds>2)
$str = $rtime;
}
else {
$str = $rtime;
}
return $str;
}
然后在index.php中調(diào)用funciton.php,并連接MySQL數(shù)據(jù)庫輸出評論列表。
復(fù)制代碼 代碼如下:
require_once('connect.php'); //連接數(shù)據(jù)庫文件
require_once('function.php'); //函數(shù)文件
$query=mysql_query("select * from say order by id desc limit 0,15");
while ($row=mysql_fetch_array($query)) {
$sayList.=formatSay($row[content],$row[addtime],$row[userid]);
}
在div#demo中輸出評論列表。
復(fù)制代碼 代碼如下:
<div id="demo">
<?php echo $sayList;?>
</div>
這樣一來,運(yùn)行index.php會出現(xiàn)一個列表,我們只需要一條一條展示,下面就需要jQuery來辦了。
jQuery
復(fù)制代碼 代碼如下:
$(function(){
//除了顯示第一個saylist,其他的都隱藏
$(".saylist").hide().eq(0).show();
//自循環(huán)函數(shù),循環(huán)展示信息
(function showNextSay(){
//每條信息展示7.5秒
$(".saylist:visible").delay(7500).fadeOut("slow",function(){
$(this).appendTo("#demo");
//展示下一條
$(".saylist:first").fadeIn("slow",function(){
//再次調(diào)用函數(shù)
showNextSay();
});
});
})();
});
您可能感興趣的文章:
- PHP+Mysql+jQuery實現(xiàn)發(fā)布微博程序 jQuery篇
- jQuery結(jié)合PHP+MySQL實現(xiàn)二級聯(lián)動下拉列表[實例]
- 解決PHP mysql_query執(zhí)行超時(Fatal error: Maximum execution time …)
- PHP的mysqli_query參數(shù)MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的區(qū)別
- 基于PHP+jQuery+MySql實現(xiàn)紅藍(lán)(頂踩)投票代碼
- jQuery+Ajax+PHP+Mysql實現(xiàn)分頁顯示數(shù)據(jù)實例講解
- 如何解決PHP使用mysql_query查詢超大結(jié)果集超內(nèi)存問題
相關(guān)文章
無法在發(fā)生錯誤時創(chuàng)建會話,請檢查 PHP 或網(wǎng)站服務(wù)器日志,并正確配置 PHP 安裝(win+linux)
今天幫客戶配置服務(wù)器的時候運(yùn)行phpmyadmin出現(xiàn)了“無法在發(fā)生錯誤時創(chuàng)建會話,請檢查 PHP 或網(wǎng)站服務(wù)器日志,并正確配置 PHP 安裝?!钡腻e誤,經(jīng)排查原來是權(quán)限問題,大家可以參考下面的方法解決2012-05-05PHP基于二分法實現(xiàn)數(shù)組查找功能示例【循環(huán)與遞歸算法】
這篇文章主要介紹了PHP基于二分法實現(xiàn)數(shù)組查找功能,結(jié)合實例形式分析了while循環(huán)與遞歸調(diào)用算法實現(xiàn)二分查找功能的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2017-12-12PHP獲取數(shù)組中某元素的位置及array_keys函數(shù)應(yīng)用
獲取數(shù)組中一元素的位置有很多方法,其中PHP自身就已經(jīng)內(nèi)置了一個函數(shù)array_keys(),下邊的代碼能夠打印出所有PHP的內(nèi)置函數(shù),感興趣的朋友可以了解下同時學(xué)習(xí)一下函數(shù)array_keys()的使用方法,就當(dāng)鞏固知識量啦2013-01-01PHP-CGI遠(yuǎn)程代碼執(zhí)行漏洞分析與防范
本文給大家介紹的是PHP-CGI遠(yuǎn)程代碼執(zhí)行漏洞(CVE-2012-1823)分析和防范,這是最近爆出的一個php的比較嚴(yán)重的漏洞,這里分享給大家。2017-05-05php+mysqli批量查詢多張表數(shù)據(jù)的方法
這篇文章主要介紹了php+mysqli批量查詢多張表數(shù)據(jù)的方法,涉及multi_query、store_result及more_results等函數(shù)的使用技巧,需要的朋友可以參考下2015-01-01PHP實現(xiàn)簡單ajax Loading加載功能示例
這篇文章主要介紹了PHP實現(xiàn)簡單ajax Loading加載功能的方法,結(jié)合實例形式分析了ajax加載的原理、操作技巧與相關(guān)注意事項,需要的朋友可以參考下2016-12-12