9赞
691
当前位置:  开发笔记 > 后端 > 正文

实现论坛树型结构的具体算法

实现论坛树型结构的具体算法

实现论坛树型结构的算法很多,具体你可以去www.chinaasp.com的全文搜索中查询。我现在的JSP论坛采用的也是当中的一种:不用递归实现树型结构的算法,现在我将论坛树型结构的具体算法和大家介绍一下,和大家一起交流。 
;
>>>
1。演示表的结构: 
表名:mybbslist 

;
字段 
数据类型 

;
说明 
BBSID 自动编号  

;
RootID Int 根帖ID,本身为根帖则RootID = ID 
FID Int 父帖ID,上一层帖子的ID,如是根帖则FID = 0 

;
DEPTH Int 根帖Level=0,其他依据回复的深度递增 
BBSSubject Char 主题 




;



2。创建表: 
create table mybbslist ( 

;
forumID int(20) not null, 
bbsID int auto_increment primary key, 

;
rootid int(20) not null, 
fid int(20) not null, 

;
depth int(20) not null, 
userID int(20) not null, 

;
bbsUser varchar(24) not null, 
bbsSubject varchar(100) not null, 

;
bbsContent text, 
bbsTime varchar(30), 

;
bbsRead int(20), 
bbsReply int(20), 

;
INDEX forumID (forumID)) 
>
>


3。连接MYSQL数据库的BEAN 
package netzero; 

;
import java.sql.*; 
public class mydb 
>
;

String driverName = "org.gjt.mm.mysql.Driver"; 
Connection conn = null; 
Statement stmt = null; 

;
ResultSet rs = null; 
String cOnnURL= "jdbc:mysql://localhost/mybbs?user=root&password=how&useUnicode=true&characterEncode=8859_1"; 

;
//String cOnnURL= "jdbc:mysql://localhost/netzerobbs?user=root&password=how"; 
public mydb() 


;


;
try 

Class.forName(driverName); 
}&nbs
p
;
catch (java.lang.ClassNotFoundException e) 
{&nbs
p
;
System.err.println("netzero(String): " + e.getMessage()); 
}&nbs
>
>
p
;




public ResultSet executeQuery(String sql) throws SQLException 
{&nbs
p
;
conn = DriverManager.getConnection(connURL); 
stmt = conn.createStatement(); 

;
rs = stmt.executeQuery(sql); 
return rs; 

>
>
;


>
public boolean closeConn() 
{&nb
s
p
;
try 

;
if (rs!=null) rs.close(); 
if (stmt!=null) stmt.close(); 

;
if (conn!=null) conn.close(); 
return true;&nbs
p
;

catch ( SQLException ex ) 
{&nbs
p
;
System.err.println("closeConn: " + ex.getMessage()); 
return false; 

>


>
>
;

>






4。显示论坛的JSP程序 
&nbs
p
;
<%@ page cOntentType="text/html;charset=gb2312" %>&nb
s
p;
<%@ page import="java.io.*" %> 
;
<%@ page import="java.sql.*" %> 

;
<% 
int intRowCount; 
;
out.print("显示论坛树形结构"); 
out.print("
>
"); 
try { 
;
String sql="select * from mybbslist order by rootid desc,depth,fid,bbsid"; 
ResultSet rs = mybbs.executeQuery(sql); 
;
if (rs.next()) 

;
rs.last(); 
intRowCount=rs.getRow(); 

;
out.print("论坛树中有"); 
out.print(intRowCount); 
out.print("个叶子节点"); 
;
rs.first(); 
;
int j=0; 
int Depth = 0; 

;
out.print("
    ");&
    n
    b
    s
    p

    ;
    while(j
    ;
    int rsDepth=rs.getInt("Depth"); 
    if (rsDep


    t
    h
    ;
    for(int i=1;i{&nbs
    p

    ;
    out.print(
    "
"); 
}&nb

s
p
;

rsDepth=rs.getInt("Depth"); 
if (rsDepth>Depth) 

;

out.print("
    "); 

    ;
    out.print("
  • "); 
    ;>


    String bbssubject=rs.getString("bbssubject"); 
    out.print(bbssubject);&nbs

    p
    ;
    out.print(

    "
  • "); 
    Depth = rs.getInt("Depth"); 


    ;
    j=j+1; 
    rs.next(); 

    out.print("
"); 
;

else 

out.print("数据库中无记录"); 

}catch (SQLException E) { 
out.println("SQLException: " + E.getMessage()); 
;
out.println("SQLState: " + E.getSQLState()); 
out.println("VendorError: " + E.getErrorCode());&nbs
>

p
;

%> 
;
<% //关闭mysql连接 
try { 
if(!mybbs.closeConn()); 
;
} catch (Exception ex) { 
System.err.println("closeConn: " + ex.getMessage()); 

>
;

%> 

>

算法参考:http://www.chinaasp.com/sqlbbs/showEssence.asp?id=4783 




推荐阅读
devbox
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有 京ICP备19059560号-4