请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Discuz! 官方站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Discuz! X 最新研发动态 通过这个窗口,关注跟踪我们的研发进展 Discuz! 开发技术文库 - 给官方提建议

Discuz! X2 正式版下载 帮助网站实现一站式服务  商业支持服务咨询 下载 - 安装 - 常见问题 - 转换 - 讨论 - 购买

2012站长年会开启报名 限量船票免费发放 年会“船票”每日审核名单公布 - Discuz!NT3.6发布 漫游引入QQ空间游戏 -一骑新区横扫三国-5d6d免费论坛

查看: 26626|回复: 55

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

Rank: 3Rank: 3

UID
174544
积分
331
帖子
76
威望
10
在线时间
0 小时
注册时间
2005-2-27
发表于 2005-10-16 16:55:24 |显示全部楼层
分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, 下载次数: 1163

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

King

ⓐⓛⓟⓢ

Rank: 6Rank: 6

UID
235765
积分
2399
帖子
1494
威望
104
在线时间
0 小时
注册时间
2005-8-15
发表于 2005-10-16 17:37:48 |显示全部楼层
沙发~

使用道具 举报

Rank: 3Rank: 3

UID
174544
积分
331
帖子
76
威望
10
在线时间
0 小时
注册时间
2005-2-27
发表于 2005-10-17 09:13:22 |显示全部楼层
怎么没人顶呀 .

使用道具 举报

Forum Legend

Discuz Lite!

Rank: 8Rank: 8

UID
115360
积分
6079
帖子
2335
威望
378
在线时间
0 小时
注册时间
2004-8-29
发表于 2005-10-22 00:42:20 |显示全部楼层
我也來頂你!
Lite is the Best! - JimmY

使用道具 举报

Rank: 3Rank: 3

UID
72086
积分
241
帖子
142
威望
0
在线时间
1 小时
注册时间
2004-4-1
发表于 2005-10-22 20:36:39 |显示全部楼层
支持哪个版本的呀?
祥子 http://bbs.0068.cn
各种论坛数据库转换 源码收集  QQ:61008008

使用道具 举报

Rank: 6Rank: 6

UID
60753
积分
1644
帖子
1502
威望
0
在线时间
66 小时
注册时间
2004-2-22
发表于 2005-12-27 13:22:56 |显示全部楼层
好东西 我喜欢

使用道具 举报

Rank: 2

UID
249766
积分
88
帖子
87
威望
0
在线时间
8 小时
注册时间
2005-9-17
发表于 2005-12-28 04:06:56 |显示全部楼层
这位大大,请问一下,怎么找到您所说的数据库呢?我是个小白!不知道数据库从哪里看!还有就是您说的这个2.5的可以用么?我的是免费2.5的!
麻烦您回一下!谢谢了!

使用道具 举报

Rank: 3Rank: 3

UID
138555
积分
224
帖子
90
威望
0
在线时间
0 小时
注册时间
2004-11-11
发表于 2005-12-28 15:59:23 |显示全部楼层
好东西啊!!!

明白原理就是好!

使用道具 举报

Rank: 3Rank: 3

UID
142666
积分
276
帖子
58
威望
0
在线时间
35 小时
注册时间
2004-11-25
发表于 2006-1-1 19:31:25 |显示全部楼层
好东东 我喜欢

使用道具 举报

Rank: 2

UID
297959
积分
54
帖子
67
威望
0
在线时间
0 小时
注册时间
2005-12-28
发表于 2006-1-1 21:24:32 |显示全部楼层
谢谢

使用道具 举报

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

fastpost

手机版|Archiver|北京康盛新创科技有限责任公司 ( 京ICP证110024号|京网文[2011]0019-007号 )  

GMT+8, 2012-2-13 12:55 , Processed in 0.100803 second(s), 16 queries , Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部