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

上一篇 / 下一篇  2005-10-16 16:55:24

查看( 12029 ) / 评论( 48 )
分5步:SupeSite/X-Space官方站CQ}]-bOt
1:从数据库找到源数据SupeSite/X-Space官方站O&@b2aJa(D AY1a
2:需要什么数据SupeSite/X-Space官方站p:Gn#J ]d+z W
3:执行SQL得到数据
;Jb(Re)@4S1|%u0 4:格式化数据
'Z#U!A9dn0 5:调用JSSupeSite/X-Space官方站$?O!`5f$l
SupeSite/X-Space官方站\"oh(t;Qw
1:从数据库找到源数据,在discuz_threads,自己用PHPMYADMIN导出-- SupeSite/X-Space官方站9[(E6n`d7V/Y$X
-- 表的结构 `discuz_threads`SupeSite/X-Space官方站 a`9ONN-t*_:FY
--
-jw\"Rt4W9P xXe0 SupeSite/X-Space官方站7f1SOQvi%n ?k
CREATE TABLE `discuz_threads` (SupeSite/X-Space官方站-C Nk@ g;`'C
  `tid` mediumint(8) unsigned NOT NULL auto_increment,SupeSite/X-Space官方站%bnUw.M HI Ag
  `fid` smallint(6) unsigned NOT NULL default '0',
tOK/asO3ip0   `creditsrequire` smallint(6) unsigned NOT NULL default '0',SupeSite/X-Space官方站az5\+r;@_Kde,{s(n9^
  `iconid` smallint(6) unsigned NOT NULL default '0',
mF\Q4z,hp#~0w0   `author` char(15) NOT NULL default '',
9m~2vr1fp0   `authorid` mediumint(8) unsigned NOT NULL default '0',
z6P'^3\8K-R!jV E0   `subject` char(80) NOT NULL default '',SupeSite/X-Space官方站NXNjt2`elM1HU
  `dateline` int(10) unsigned NOT NULL default '0',
7?.c*}+HL[#g X1he0   `lastpost` int(10) unsigned NOT NULL default '0',
Z8nd*H7S3\^0   `lastposter` char(15) NOT NULL default '',SupeSite/X-Space官方站*S"b)be5v+F
  `views` mediumint(8) unsigned NOT NULL default '0',SupeSite/X-Space官方站oYs:^xb
  `replies` smallint(6) unsigned NOT NULL default '0',
'@by"ff}0   `displayorder` tinyint(1) NOT NULL default '0',SupeSite/X-Space官方站 S4g?#T} |/A"^
  `highlight` tinyint(1) NOT NULL default '0',
qT/@;zsm&L@8{5^}0   `digest` tinyint(1) NOT NULL default '0',SupeSite/X-Space官方站U;]7v\C0g5q1c/F
  `blog` tinyint(1) NOT NULL default '0',SupeSite/X-Space官方站5I5J*_ k#u#h$g[{
  `poll` tinyint(1) NOT NULL default '0',SupeSite/X-Space官方站l6|S#[:n6Z)Y#O#S:gAy
  `attachment` tinyint(1) NOT NULL default '0',
Y2A:h-R+KB0   `closed` mediumint(8) unsigned NOT NULL default '0',SupeSite/X-Space官方站;az]}W
  `threads_moderatetime` char(15) NOT NULL default '',SupeSite/X-Space官方站kgQ#y f4K1x
  `threads_moderate` tinyint(1) NOT NULL default '0',SupeSite/X-Space官方站ss,O*we(e2\
  `threads_moderator` char(15) NOT NULL default '',SupeSite/X-Space官方站z{.q"bX
  `threads_moderatorid` char(8) NOT NULL default '',SupeSite/X-Space官方站X*R2oI-|G
  `authornick` char(15) NOT NULL default '',SupeSite/X-Space官方站5{Fns!oI*\R0a
  PRIMARY KEY  (`tid`),
M GDH3J_D0S!`EY0   KEY `displayorder` (`fid`,`displayorder`,`lastpost`),SupeSite/X-Space官方站!fLH;})y@ ~8W
  KEY `digest` (`digest`)SupeSite/X-Space官方站$I&`m1P#B!?"R5~7U
) TYPE=MyISAM AUTO_INCREMENT=10 ;SupeSite/X-Space官方站:u H a)Qn*XF%NHh

f*t`2TJ-Ru3C0 -- SupeSite/X-Space官方站wY^*_#`jr,_9sc6z0@
-- 导出表中的数据 `discuz_threads`SupeSite/X-Space官方站gLUqlF
--
rJOH|]'{ y Ep0 SupeSite/X-Space官方站!ary-GV_'Wh
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', '');
&Q/pR6O:Au.p0 SupeSite/X-Space官方站!sFa7y s0?rmB
2:需要什么数据看到了把,帖子的N个属性,这几个是关键的,subject(标题),dateline(发表时间),lastpost(最后回复),replies(回复数),其他一样,很好理解的 ,就要着几个。
&R;m.Us&~q}0
b.[;{(|&I/`7L0 3:执行SQL得到数据SupeSite/X-Space官方站c)d%Jz+JHY)Y
SupeSite/X-Space官方站4ZR N'^ w9lvf
$result=@mysql_query("SELECT * FROM `$discuz_table` ORDER BY `lastpost` DESC LIMIT 0,$post");SupeSite/X-Space官方站'\vX"iU^/aykA;j'h
while ($row = mysql_fetch_array($result)) {
D#h1g|plig-F0     $subject=(strlen($row[subject])<=$titlelength)?$row[subject]:(m_substr($row[subject],0,$titlelength)."..");
:r7?c,k0k&`,D"P#O$_0     $date=date("y-m-d",$row[dateline]);
EKT*o&^0     $linedate=date("Y-m-d H:i:s",$row[dateline]);SupeSite/X-Space官方站` |2K @$V X;O6l
    $postdate=date("Y-m-d H:i:s",$row[lastpost]);SupeSite/X-Space官方站"_Y k+^k+m ITF
    $views=$row[views];SupeSite/X-Space官方站@${$ji4dY\Z
}
4:格式化数据SupeSite/X-Space官方站 KT m4Wl$y

s'W({2zQ0
$discuz_lastpost.="<TR><TD>◇<a href=bbs/viewthread.php?tid=$row[tid] title='$title'>$subject</a></TD><TD>$date</TD></TR>";
5:调用JS
` {*t,p]}+R.ob;H0
1RVms'W6zA.O0 把discuz_js.php放在论坛根目录;再在调用页添加以下JS:
*|K|;O \'G&Dk,U"k9S0 <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=6SupeSite/X-Space官方站 G3do0SO,P6c7h;N
SupeSite/X-Space官方站$l@Uc:y'd q}0F$w
简单把,其他什么精华贴,置顶贴都相似,有兴趣的可以自己写。希望这编文章对大家有用。
(n,o)A A L0 完整的代码如下:SupeSite/X-Space官方站V"Z S8dJL

9p6v5TKt3l0
<?phpSupeSite/X-Space官方站 B:{~j5Wq u&L
// ========================== 文件说明 ==========================//SupeSite/X-Space官方站j4s'o|#I
// 文件说明:Discuz论坛帖子首页调用(菜鸟简洁版)
Th.]pcl0 // --------------------------------------------------------------//
KG5T"VHM0 // 程序作者:Spring
9}D/@B{D)Y/}0X&s0 // --------------------------------------------------------------//SupeSite/X-Space官方站Ad)n v0{.g$b
// 程序主页:http://www.mephp.comSupeSite/X-Space官方站7e{0OH ]dc C+RM
// --------------------------------------------------------------//SupeSite/X-Space官方站F'k'Bl)f3w!U
// 使用方法:把discuz_js.php放在论坛根目录;再在调用页添加以下JS
)G-f[i1@r Q&i0 // <script src="discuz/discuz_js.php?new=8&post=3&hot=6"></script>
1b s8m0y(D9M+w*mos0 // new=8&post=3&hot=6可以选择你所需要的参数,也可以不要,既可以这样
?$Z^uQ)k)h[Ai)@Q0 // new=8或者post=3或者hot=6或者new=8&post=3或者post=3&hot=6
I O+aP ]3|\ I0 include "config.php";
&m S0^ `SSm0 //==========================变量定义===============================
,V@/^5xIXk0 $titlelength  = 20; //标题长度,按字节SupeSite/X-Space官方站w'h%a1Y0v
$discuz_table = $tablepre."threads";   //discuz表名
,jy}Ev_0 $new          = $HTTP_GET_VARS['new']; //最新发表显示标题数
a!Mk k `H0 $post         = $HTTP_GET_VARS['post'];//最新回复显示标题数
+X*n4`5tJ0 $hot          = $HTTP_GET_VARS['hot']; //回复最多显示标题数
\`/W `'NW)X!{Q0 //===========================字符截取函数(防乱码)=================SupeSite/X-Space官方站vq$Y"Q;B"p
function m_substr($str,$start=0,$strlen) {SupeSite/X-Space官方站4}f*t%efHd5H(yg
    for($i=0;$i<$strlen;$i++)
:m9~:fk*t }0           if(ord(substr($str,$i,1))>0xa0) $j++;SupeSite/X-Space官方站(z.c!Lvs'Qn
        if($j%2!=0) $strlen++;
BBdn*d!Z'n0         $str=substr($str,0,$strlen);
-~2W%[#a@,D0         return $str;
%F,H;y3m{2\-J0bT#_0 }SupeSite/X-Space官方站+jaN;MP
//===========================调用Discuz帖===========================SupeSite/X-Space官方站v_ p/Ps0rS
@mysql_pconnect($dbhost,$dbuser,$dbpw);
Sx.Knk2{i dI0 @mysql_select_db($dbname);
3nXlCZ;k0 //论坛最新发表
)uu&wu] H\2F0 $result=@mysql_query("SELECT * FROM `$discuz_table` ORDER BY `dateline` DESC LIMIT 0,$new");
'Q5t*iWd3Bo$H1Q0 while ($row = mysql_fetch_array($result)) {
e(kboh] r(n5Fu0     $subject=(strlen($row[subject])<=$titlelength)?$row[subject]:(m_substr($row[subject],0,$titlelength)."..");SupeSite/X-Space官方站0I4UnL:O0~`
    $date=date("y-m-d",$row[dateline]);
s#["H b @%_U0     $linedate=date("Y-m-d H:i:s",$row[dateline]);SupeSite/X-Space官方站S,R0J2M/f [W6M]5o6r
    $postdate=date("Y-m-d H:i:s",$row[lastpost]);SupeSite/X-Space官方站Y#DT-S`t
    $replies=$row[replies];SupeSite/X-Space官方站)]*i"AFEO"w pF
    $title="$row[subject] 发表:$row[author] $linedate";SupeSite/X-Space官方站Z;}%Iq-S s"WS;x
    //用户可以修改下行自定义输出格式
%V*i a(I]6jnO/L z0     $discuz_lastline.="<TR><TD>◇<a href=bbs/viewthread.php?tid=$row[tid] title='$title'>$subject</a></TD><TD>$date</TD></TR>";
\g unA k hNF0 }SupeSite/X-Space官方站K+m-nf T
//论坛最后回复SupeSite/X-Space官方站Q9iN0H{1R
$result=@mysql_query("SELECT * FROM `$discuz_table` ORDER BY `lastpost` DESC LIMIT 0,$post");SupeSite/X-Space官方站fS/R R9`,N"zL$I7m
while ($row = mysql_fetch_array($result)) {
#~AL.b f0     $subject=(strlen($row[subject])<=$titlelength)?$row[subject]:(m_substr($row[subject],0,$titlelength)."..");SupeSite/X-Space官方站So4q#T'p/J(`[
    $date=date("y-m-d",$row[dateline]);
Xg2HXqwJP$`0     $linedate=date("Y-m-d H:i:s",$row[dateline]);
6gb7u/l {xd,_\^T0     $postdate=date("Y-m-d H:i:s",$row[lastpost]);
T{,U O;Jj0     $replies=$row[replies];
.Olkhy H FG D0     $title="$row[subject] 发表:$row[author] $linedate 回复:$row[lastposter] $postdate";SupeSite/X-Space官方站&sk)y-ALJyIBM
    //用户可以修改下行自定义输出格式
|j Ad aLT6W7l'`0     $discuz_lastpost.="<TR><TD>◇<a href=bbs/viewthread.php?tid=$row[tid] title='$title'>$subject</a></TD><TD>$date</TD></TR>";
:g Y \,W%El5z0 }SupeSite/X-Space官方站#FTF&k0}"z
//论坛回复最多SupeSite/X-Space官方站S(fA9U:hb
$result=@mysql_query("SELECT * FROM `$discuz_table` ORDER BY `replies` DESC LIMIT 0,$hot");
d!W/Qz0G8~0 while ($row = mysql_fetch_array($result)) {
(\&^,t"]J"my6^0     $subject=(strlen($row[subject])<=$titlelength)?$row[subject]:(m_substr($row[subject],0,$titlelength)."..");SupeSite/X-Space官方站#Vj(y4tfU5i
    $date=date("y-m-d",$row[dateline]);SupeSite/X-Space官方站#rU(T3k}g%y!g@T[
    $linedate=date("Y-m-d H:i:s",$row[dateline]);SupeSite/X-Space官方站fQIH'G OO[-t[
    $postdate=date("Y-m-d H:i:s",$row[lastpost]);SupeSite/X-Space官方站"]0| rE*d9ob*t
    $replies=$row[replies];
,EL~?(? Z&A0     $title="$row[subject] 发表:$row[author] $linedate 回复数:$replies";
nZ"d qZ)? A{0     //用户可以修改下行自定义输出格式
xJ/h Gd3Y{0     $discuz_replies.="<TR><TD>◇<a href=bbs/viewthread.php?tid=$row[tid] title='$title'>$subject</a></TD><TD>$date</TD></TR>";
c l;e{-ce,m;?0 }
0zYZi1z0 //===========================输出调用帖==========================
\ u t:l|nZ@o0 if(!empty($new)) $list  .= "◆ 论坛最新发表<TABLE width=98% cellSpacing=3 cellPadding=0 border=1>$discuz_lastline</TABLE>";SupeSite/X-Space官方站h2uqH]4^:R#Y
if(!empty($post)) $list .= "◆ 论坛最后回复<TABLE width=98% cellSpacing=3 cellPadding=0 border=1>$discuz_lastpost</TABLE>";SupeSite/X-Space官方站R)Cl7d-Ef)Fs-L
if(!empty($hot)) $list  .= "◆ 论坛回复最多<TABLE width=98% cellSpacing=3 cellPadding=0 border=1>$discuz_replies</TABLE>";SupeSite/X-Space官方站E8D ]&R@
echo "document.write(\"$list\");";
9T| S/X7\(_S(P0 ?>
也可以点击下载http://www.mephp.com/data/upfile/discuz_js.rar
@j} @*x4~'Bi0OF0 查看演示:  http://www.mephp.com/bbs.htm
a3M8F` I1A@0 参考:http://www.mephp.com/view.php?id=26SupeSite/X-Space官方站iv9DN7N#Q{

I0{U2n!\K!O0 [ 本帖最后由 waterxp 于 2005-10-18 09:20 编辑 ]
:d1~{J3p2M,r:a0

.i K'pWV8Q8U(v&U&]%I0discuz_js.rar
*d.AB9B(F `0(2005-10-17 09:07:32, 大小: 1.31 kB, 下载次数: 137)

%O1~[G0n!t0

TAG:

我来说两句

(可选)

我的存档

数据统计

  • 访问量: 1219
  • 日志数: 2
  • 建立时间: 2006-04-06
  • 更新时间: 2006-04-06

RSS订阅

Open Toolbar