去评论
dz插件网

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

IT618发布
2020/07/07 09:43:27
有时需要显示某个指定的论坛版块的主题数,这个肯定是要写代码的,然而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);