Manyou诚邀开发者加盟 | 常见问题
《站长》俱乐部官方群公布 城市联络员机会多多
立即免费下载 Discuz!7.0.0 正式版
安装升级指南 | 用户手册 | 新手建站学堂
基于.net架构的Discuz!NT2.6正式版发布
Comsenz公司2009年招贤纳士,期待您的加盟
Discuz!收费服务内容及价格
7月重庆、成都、西安三地社区运营实战特训速报名
Discuz!/UCHome 专用官方虚拟主机
牧场新服一起联运:豆浆机免费带回家
基于Discuz!的免费论坛空间5D6D
康盛创想《站长》俱乐部18城市互动之旅报名ing
返回列表 回复 发帖

Discuz论坛帖子首页调用(菜鸟简洁版)原理[10分钟学会]

分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. // 程序主页:http://www.mephp.com
  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

[ 本帖最后由 waterxp 于 2005-10-18 09:20 编辑 ]

discuz_js.rar (1.31 KB)

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

沙发~
怎么没人顶呀 .
我也來頂你!
Lite is the Best! - JimmY
支持哪个版本的呀?
祥子 http://bbs.0068.cn
各种论坛数据库转换 源码收集  QQ:61008008
好东西 我喜欢
这位大大,请问一下,怎么找到您所说的数据库呢?我是个小白!不知道数据库从哪里看!还有就是您说的这个2.5的可以用么?我的是免费2.5的!
麻烦您回一下!谢谢了!
好东西啊!!!

明白原理就是好!
好东东 我喜欢
谢谢
返回列表