IT618发布 发表于 2020-7-7 09:43:27

Discuz!利用ajax从数据库读取论坛版块主题数

有时需要显示某个指定的论坛版块的主题数,这个肯定是要写代码的,然而Discuz是不方便写代码到某个模板里的,虽然可以实现,但是我们可以ajax调用。

实现这个功能要写JS代码与PHP代码:
js代码如下:
function ajax_driv() {
    var xmlhttp;
    if (window.ActiveXObject) {
      /* 不要删除以下注释,这部分不是注释 */
      /*@cc_on @*/
      /*@if (@_jscript_version >= 5)
try {
    xmlhttp = new ActiveXObject("Msxml2.xmlhttp");
} catch (e) {
    try {
   xmlhttp = new ActiveXObject("Microsoft.xmlhttp");
    } catch (e) {
   xmlhttp = false;
    }
}
@end @*/
    } else {
      xmlhttp = new XMLHttpRequest();
    }
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
      xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}

function getposts(fid) {
    var xmlhttp = false; xmlhttp = ajax_driv();
xmlhttp.open("GET", "getforumpost.php?fid=" + fid, true);
xmlhttp.setRequestHeader("If-Modified-Since", "Thu, 01 Jan 1970 00:00:00 GMT");
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
   document.getElementById("fl" + fid).innerHTML="(" + xmlhttp.responseText + ")";
}
}
xmlhttp.send(null);
}

getforumpost.php文件代码如下:
<?php
连接数据库部分代码省略
$fid = (int) $_GET['fid'];
$exec="select concat(concat(todayposts,'/'),posts) as myposts from dz_forum_forum where fid=" . $fid;
$result=mysql_query($exec);
if($rs=mysql_fetch_object($result)){echo $rs->myposts;}
else{echo "0";}
?>

模板调用代码:
版块名称<label id="fl54">(<script>getposts(54);</script>)</label>

php代码里的读取数据库可以直接引用DZ的数据库类
require './source/class/class_core.php';//引入系统核心文件
echo DB::result_first("SELECT concat(concat(todayposts,'/'),posts) FROM ".DB::table('forum_forum')." where fid=".$fid);
页: [1]
查看完整版本: Discuz!利用ajax从数据库读取论坛版块主题数

创宇盾启航版免费网站防御网站加速服务