找回密码
 注册
广告投放 虚位以待【阿里云】2核2G云新老同享 99元/年,续费同价做网站就用糖果主机-sugarhosts.comJtti.com-新加坡服务器,美国服务器,香港服务器
查看: 653|回复: 2

Discuz论坛帖子首页调用(菜鸟简洁版)原理

[复制链接]
发表于 2005 年 12 月 18 日 13:41:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
  分5步:
1:从数据库找到源数据
2:需要什么数据
3:执行SQL得到数据
4:格式化数据
5:调用JS

1:从数据库找到源数据,在discuz_threads,自己用PHPMYADMIN导出--
-- 表的结构 `discuz_threads`
--

CREATE TABLE `discuz_threads` (
  `tid` mediumint(8) unsigned NOT NULL auto_increment,
  `fid` smallint(6) unsigned NOT NULL default '0',
  `creditsrequire` smallint(6) unsigned NOT NULL default '0',
  `iconid` smallint(6) unsigned NOT NULL default '0',
  `author` char(15) NOT NULL default '',
  `authorid` mediumint(8) unsigned NOT NULL default '0',
  `subject` char(80) NOT NULL default '',
  `dateline` int(10) unsigned NOT NULL default '0',
  `lastpost` int(10) unsigned NOT NULL default '0',
  `lastposter` char(15) NOT NULL default '',
  `views` mediumint(8) unsigned NOT NULL default '0',
  `replies` smallint(6) unsigned NOT NULL default '0',
  `displayorder` tinyint(1) NOT NULL default '0',
  `highlight` tinyint(1) NOT NULL default '0',
  `digest` tinyint(1) NOT NULL default '0',
  `blog` tinyint(1) NOT NULL default '0',
  `poll` tinyint(1) NOT NULL default '0',
  `attachment` tinyint(1) NOT NULL default '0',
  `closed` mediumint(8) unsigned NOT NULL default '0',
  `threads_moderatetime` char(15) NOT NULL default '',
  `threads_moderate` tinyint(1) NOT NULL default '0',
  `threads_moderator` char(15) NOT NULL default '',
  `threads_moderatorid` char(8) NOT NULL default '',
  `authornick` char(15) NOT NULL default '',
  PRIMARY KEY  (`tid`),
  KEY `displayorder` (`fid`,`displayorder`,`lastpost`),
  KEY `digest` (`digest`)
) TYPE=MyISAM AUTO_INCREMENT=10 ;

--
-- 导出表中的数据 `discuz_threads`
--

INSERT INTO `discuz_threads` VALUES (1, 4, 0, 0, '懑梵', 5, '晕死', 1128577768, 1128623748, 'macrolong', 42, 9, 0, 0, 0, 0, 0, 0, 0, '1128577768', 0, '懑梵', '5', '');

2:需要什么数据看到了把,帖子的N个属性,这几个是关键的,subject(标题),dateline(发表时间),lastpost(最后回复),replies(回复数),其他一样,很好理解的 ,就要着几个。

3:执行SQL得到数据
  1. $result=@mysql_query("SELECT * FROM `$discuz_table` ORDER BY `lastpost` DESC LIMIT 0,$post");
  2. while ($row = mysql_fetch_array($result)) {
  3.    $subject=(strlen($row[subject])<=$titlelength)?$row[subject]:(m_substr($row[subject],0,$titlelength)."..");
  4.    $date=date("y-m-d",$row[dateline]);
  5.    $linedate=date("Y-m-d H:i:s",$row[dateline]);
  6.    $postdate=date("Y-m-d H:i:s",$row[lastpost]);
  7.    $views=$row[views];
  8. }  
复制代码


4:格式化数据
  1. $discuz_lastpost.="<TR><TD>◇<a href=bbs/viewthread.php?tid=$row[tid] title='$title'>$subject</a></TD><TD>$date</TD></TR>";
复制代码

5:调用JS

把discuz_js.php放在论坛根目录;再在调用页添加以下JS:
<script src="discuz/discuz_js.php?new=8&post=3&hot=6"></script>new=8&post=3&hot=6可以选择你所需要的参数,也可以不要,既可以这样:new=8或者post=3或者hot=6或者new=8&post=3或者post=3&hot=6

简单把,其他什么精华贴,置顶贴都相似,有兴趣的可以自己写。希望这编文章对大家有用。
完整的代码如下:
  1. <?php
  2. // ========================== 文件说明 ==========================//
  3. // 文件说明:Discuz论坛帖子首页调用(菜鸟简洁版)
  4. // --------------------------------------------------------------//
  5. // 程序作者:Spring
  6. // --------------------------------------------------------------//
  7. // 程序主页:[url]http://www.mephp.com[/url]
  8. // --------------------------------------------------------------//
  9. // 使用方法:把discuz_js.php放在论坛根目录;再在调用页添加以下JS
  10. // <script src="discuz/discuz_js.php?new=8&post=3&hot=6"></script>
  11. // new=8&post=3&hot=6可以选择你所需要的参数,也可以不要,既可以这样
  12. // new=8或者post=3或者hot=6或者new=8&post=3或者post=3&hot=6
  13. include "config.php";
  14. //==========================变量定义===============================
  15. $titlelength  = 20; //标题长度,按字节
  16. $discuz_table = $tablepre."threads";   //discuz表名
  17. $new          = $HTTP_GET_VARS['new']; //最新发表显示标题数
  18. $post         = $HTTP_GET_VARS['post'];//最新回复显示标题数
  19. $hot          = $HTTP_GET_VARS['hot']; //回复最多显示标题数
  20. //===========================字符截取函数(防乱码)=================
  21. function m_substr($str,$start=0,$strlen) {
  22.    for($i=0;$i<$strlen;$i++)
  23.          if(ord(substr($str,$i,1))>0xa0) $j++;
  24.        if($j%2!=0) $strlen++;
  25.        $str=substr($str,0,$strlen);
  26.        return $str;
  27. }
  28. //===========================调用Discuz帖===========================
  29. @mysql_pconnect($dbhost,$dbuser,$dbpw);
  30. @mysql_select_db($dbname);
  31. //论坛最新发表
  32. $result=@mysql_query("SELECT * FROM `$discuz_table` ORDER BY `dateline` DESC LIMIT 0,$new");
  33. while ($row = mysql_fetch_array($result)) {
  34.    $subject=(strlen($row[subject])<=$titlelength)?$row[subject]:(m_substr($row[subject],0,$titlelength)."..");
  35.    $date=date("y-m-d",$row[dateline]);
  36.    $linedate=date("Y-m-d H:i:s",$row[dateline]);
  37.    $postdate=date("Y-m-d H:i:s",$row[lastpost]);
  38.    $replies=$row[replies];
  39.    $title="$row[subject] 发表:$row[author] $linedate";
  40.    //用户可以修改下行自定义输出格式
  41.    $discuz_lastline.="<TR><TD>◇<a href=bbs/viewthread.php?tid=$row[tid] title='$title'>$subject</a></TD><TD>$date</TD></TR>";
  42. }
  43. //论坛最后回复
  44. $result=@mysql_query("SELECT * FROM `$discuz_table` ORDER BY `lastpost` DESC LIMIT 0,$post");
  45. while ($row = mysql_fetch_array($result)) {
  46.    $subject=(strlen($row[subject])<=$titlelength)?$row[subject]:(m_substr($row[subject],0,$titlelength)."..");
  47.    $date=date("y-m-d",$row[dateline]);
  48.    $linedate=date("Y-m-d H:i:s",$row[dateline]);
  49.    $postdate=date("Y-m-d H:i:s",$row[lastpost]);
  50.    $replies=$row[replies];
  51.    $title="$row[subject] 发表:$row[author] $linedate 回复:$row[lastposter] $postdate";
  52.    //用户可以修改下行自定义输出格式
  53.    $discuz_lastpost.="<TR><TD>◇<a href=bbs/viewthread.php?tid=$row[tid] title='$title'>$subject</a></TD><TD>$date</TD></TR>";
  54. }
  55. //论坛回复最多
  56. $result=@mysql_query("SELECT * FROM `$discuz_table` ORDER BY `replies` DESC LIMIT 0,$hot");
  57. while ($row = mysql_fetch_array($result)) {
  58.    $subject=(strlen($row[subject])<=$titlelength)?$row[subject]:(m_substr($row[subject],0,$titlelength)."..");
  59.    $date=date("y-m-d",$row[dateline]);
  60.    $linedate=date("Y-m-d H:i:s",$row[dateline]);
  61.    $postdate=date("Y-m-d H:i:s",$row[lastpost]);
  62.    $replies=$row[replies];
  63.    $title="$row[subject] 发表:$row[author] $linedate 回复数:$replies";
  64.    //用户可以修改下行自定义输出格式
  65.    $discuz_replies.="<TR><TD>◇<a href=bbs/viewthread.php?tid=$row[tid] title='$title'>$subject</a></TD><TD>$date</TD></TR>";
  66. }
  67. //===========================输出调用帖==========================
  68. if(!empty($new)) $list  .= "◆ 论坛最新发表<TABLE width=98% cellSpacing=3 cellPadding=0 border=1>$discuz_lastline</TABLE>";
  69. if(!empty($post)) $list .= "◆ 论坛最后回复<TABLE width=98% cellSpacing=3 cellPadding=0 border=1>$discuz_lastpost</TABLE>";
  70. if(!empty($hot)) $list  .= "◆ 论坛回复最多<TABLE width=98% cellSpacing=3 cellPadding=0 border=1>$discuz_replies</TABLE>";
  71. echo "document.write(\"$list\");";
  72. ?>
复制代码

也可以点击下载:http://www.mephp.com/data/upfile/discuz_js.rar
查看演示: http://www.mephp.com/bbs.htm
参考:http://www.mephp.com/view.php?id=26

FROM MEPHP
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
发表于 2005 年 12 月 18 日 15:25:06 | 显示全部楼层
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价
不怎么美观
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

 楼主| 发表于 2005 年 12 月 18 日 13:41:36 | 显示全部楼层

Discuz论坛帖子首页调用(菜鸟简洁版)原理

  分5步:
1:从数据库找到源数据
2:需要什么数据
3:执行SQL得到数据
4:格式化数据
5:调用JS

1:从数据库找到源数据,在discuz_threads,自己用PHPMYADMIN导出--
-- 表的结构 `discuz_threads`
--

CREATE TABLE `discuz_threads` (
  `tid` mediumint(8) unsigned NOT NULL auto_increment,
  `fid` smallint(6) unsigned NOT NULL default '0',
  `creditsrequire` smallint(6) unsigned NOT NULL default '0',
  `iconid` smallint(6) unsigned NOT NULL default '0',
  `author` char(15) NOT NULL default '',
  `authorid` mediumint(8) unsigned NOT NULL default '0',
  `subject` char(80) NOT NULL default '',
  `dateline` int(10) unsigned NOT NULL default '0',
  `lastpost` int(10) unsigned NOT NULL default '0',
  `lastposter` char(15) NOT NULL default '',
  `views` mediumint(8) unsigned NOT NULL default '0',
  `replies` smallint(6) unsigned NOT NULL default '0',
  `displayorder` tinyint(1) NOT NULL default '0',
  `highlight` tinyint(1) NOT NULL default '0',
  `digest` tinyint(1) NOT NULL default '0',
  `blog` tinyint(1) NOT NULL default '0',
  `poll` tinyint(1) NOT NULL default '0',
  `attachment` tinyint(1) NOT NULL default '0',
  `closed` mediumint(8) unsigned NOT NULL default '0',
  `threads_moderatetime` char(15) NOT NULL default '',
  `threads_moderate` tinyint(1) NOT NULL default '0',
  `threads_moderator` char(15) NOT NULL default '',
  `threads_moderatorid` char(8) NOT NULL default '',
  `authornick` char(15) NOT NULL default '',
  PRIMARY KEY  (`tid`),
  KEY `displayorder` (`fid`,`displayorder`,`lastpost`),
  KEY `digest` (`digest`)
) TYPE=MyISAM AUTO_INCREMENT=10 ;

--
-- 导出表中的数据 `discuz_threads`
--

INSERT INTO `discuz_threads` VALUES (1, 4, 0, 0, '懑梵', 5, '晕死', 1128577768, 1128623748, 'macrolong', 42, 9, 0, 0, 0, 0, 0, 0, 0, '1128577768', 0, '懑梵', '5', '');

2:需要什么数据看到了把,帖子的N个属性,这几个是关键的,subject(标题),dateline(发表时间),lastpost(最后回复),replies(回复数),其他一样,很好理解的 ,就要着几个。

3:执行SQL得到数据
  1. $result=@mysql_query("SELECT * FROM `$discuz_table` ORDER BY `lastpost` DESC LIMIT 0,$post");
  2. while ($row = mysql_fetch_array($result)) {
  3.    $subject=(strlen($row[subject])<=$titlelength)?$row[subject]:(m_substr($row[subject],0,$titlelength)."..");
  4.    $date=date("y-m-d",$row[dateline]);
  5.    $linedate=date("Y-m-d H:i:s",$row[dateline]);
  6.    $postdate=date("Y-m-d H:i:s",$row[lastpost]);
  7.    $views=$row[views];
  8. }  
复制代码


4:格式化数据
  1. $discuz_lastpost.="<TR><TD>◇<a href=bbs/viewthread.php?tid=$row[tid] title='$title'>$subject</a></TD><TD>$date</TD></TR>";
复制代码

5:调用JS

把discuz_js.php放在论坛根目录;再在调用页添加以下JS:
<script src="discuz/discuz_js.php?new=8&post=3&hot=6"></script>new=8&post=3&hot=6可以选择你所需要的参数,也可以不要,既可以这样:new=8或者post=3或者hot=6或者new=8&post=3或者post=3&hot=6

简单把,其他什么精华贴,置顶贴都相似,有兴趣的可以自己写。希望这编文章对大家有用。
完整的代码如下:
  1. <?php
  2. // ========================== 文件说明 ==========================//
  3. // 文件说明:Discuz论坛帖子首页调用(菜鸟简洁版)
  4. // --------------------------------------------------------------//
  5. // 程序作者:Spring
  6. // --------------------------------------------------------------//
  7. // 程序主页:[url]http://www.mephp.com[/url]
  8. // --------------------------------------------------------------//
  9. // 使用方法:把discuz_js.php放在论坛根目录;再在调用页添加以下JS
  10. // <script src="discuz/discuz_js.php?new=8&post=3&hot=6"></script>
  11. // new=8&post=3&hot=6可以选择你所需要的参数,也可以不要,既可以这样
  12. // new=8或者post=3或者hot=6或者new=8&post=3或者post=3&hot=6
  13. include "config.php";
  14. //==========================变量定义===============================
  15. $titlelength  = 20; //标题长度,按字节
  16. $discuz_table = $tablepre."threads";   //discuz表名
  17. $new          = $HTTP_GET_VARS['new']; //最新发表显示标题数
  18. $post         = $HTTP_GET_VARS['post'];//最新回复显示标题数
  19. $hot          = $HTTP_GET_VARS['hot']; //回复最多显示标题数
  20. //===========================字符截取函数(防乱码)=================
  21. function m_substr($str,$start=0,$strlen) {
  22.    for($i=0;$i<$strlen;$i++)
  23.          if(ord(substr($str,$i,1))>0xa0) $j++;
  24.        if($j%2!=0) $strlen++;
  25.        $str=substr($str,0,$strlen);
  26.        return $str;
  27. }
  28. //===========================调用Discuz帖===========================
  29. @mysql_pconnect($dbhost,$dbuser,$dbpw);
  30. @mysql_select_db($dbname);
  31. //论坛最新发表
  32. $result=@mysql_query("SELECT * FROM `$discuz_table` ORDER BY `dateline` DESC LIMIT 0,$new");
  33. while ($row = mysql_fetch_array($result)) {
  34.    $subject=(strlen($row[subject])<=$titlelength)?$row[subject]:(m_substr($row[subject],0,$titlelength)."..");
  35.    $date=date("y-m-d",$row[dateline]);
  36.    $linedate=date("Y-m-d H:i:s",$row[dateline]);
  37.    $postdate=date("Y-m-d H:i:s",$row[lastpost]);
  38.    $replies=$row[replies];
  39.    $title="$row[subject] 发表:$row[author] $linedate";
  40.    //用户可以修改下行自定义输出格式
  41.    $discuz_lastline.="<TR><TD>◇<a href=bbs/viewthread.php?tid=$row[tid] title='$title'>$subject</a></TD><TD>$date</TD></TR>";
  42. }
  43. //论坛最后回复
  44. $result=@mysql_query("SELECT * FROM `$discuz_table` ORDER BY `lastpost` DESC LIMIT 0,$post");
  45. while ($row = mysql_fetch_array($result)) {
  46.    $subject=(strlen($row[subject])<=$titlelength)?$row[subject]:(m_substr($row[subject],0,$titlelength)."..");
  47.    $date=date("y-m-d",$row[dateline]);
  48.    $linedate=date("Y-m-d H:i:s",$row[dateline]);
  49.    $postdate=date("Y-m-d H:i:s",$row[lastpost]);
  50.    $replies=$row[replies];
  51.    $title="$row[subject] 发表:$row[author] $linedate 回复:$row[lastposter] $postdate";
  52.    //用户可以修改下行自定义输出格式
  53.    $discuz_lastpost.="<TR><TD>◇<a href=bbs/viewthread.php?tid=$row[tid] title='$title'>$subject</a></TD><TD>$date</TD></TR>";
  54. }
  55. //论坛回复最多
  56. $result=@mysql_query("SELECT * FROM `$discuz_table` ORDER BY `replies` DESC LIMIT 0,$hot");
  57. while ($row = mysql_fetch_array($result)) {
  58.    $subject=(strlen($row[subject])<=$titlelength)?$row[subject]:(m_substr($row[subject],0,$titlelength)."..");
  59.    $date=date("y-m-d",$row[dateline]);
  60.    $linedate=date("Y-m-d H:i:s",$row[dateline]);
  61.    $postdate=date("Y-m-d H:i:s",$row[lastpost]);
  62.    $replies=$row[replies];
  63.    $title="$row[subject] 发表:$row[author] $linedate 回复数:$replies";
  64.    //用户可以修改下行自定义输出格式
  65.    $discuz_replies.="<TR><TD>◇<a href=bbs/viewthread.php?tid=$row[tid] title='$title'>$subject</a></TD><TD>$date</TD></TR>";
  66. }
  67. //===========================输出调用帖==========================
  68. if(!empty($new)) $list  .= "◆ 论坛最新发表<TABLE width=98% cellSpacing=3 cellPadding=0 border=1>$discuz_lastline</TABLE>";
  69. if(!empty($post)) $list .= "◆ 论坛最后回复<TABLE width=98% cellSpacing=3 cellPadding=0 border=1>$discuz_lastpost</TABLE>";
  70. if(!empty($hot)) $list  .= "◆ 论坛回复最多<TABLE width=98% cellSpacing=3 cellPadding=0 border=1>$discuz_replies</TABLE>";
  71. echo "document.write(\"$list\");";
  72. ?>
复制代码

也可以点击下载:http://www.mephp.com/data/upfile/discuz_js.rar
查看演示: http://www.mephp.com/bbs.htm
参考:http://www.mephp.com/view.php?id=26

FROM MEPHP
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|金光论坛

GMT+8, 2025 年 2 月 1 日 06:39 , Processed in 0.113524 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表