フォーラムツリー構造を実現するための具体的なアルゴリズム


フォーラムツリー型の構造を実現するためのアルゴリズムが多く、具体的には検索中に検索できます。私は今のJSPフォーラムで採用しているのもその一つです。再帰的に樹型構造を実現するアルゴリズムは使わないです。今はフォーラムツリー型構造の具体的なアルゴリズムを紹介します。皆さんと一緒に交流します。 1です。プレゼンテーションの構造: 表名:mybbslist フィールド データの種類 説明 BBSID 自動番号付け  ロトID Int 本帖IDは、自身が根帖でRootIDです。 = ID FID Int 父の帖ID、前の階の招待状のID、もし根帖ならばFID = 0 DEPTH Int 根帖Level=0、その他は回復の深さによって増加します。 BBSSbject Char テーマ 2です。テーブルを作成: create テーブル mybbslist ( フォームID int(20) not null bbbs ID 要点 autoincrement プリマル キー、 ロフト int(20) not null fid int(20) not null depth int(20) not null userID int(20) not null bbbs User varrhar(24) not null bbs Subject varrhar(100) not null bs Conttent text bbbs Time varrhar(30)、 bbs Read int(20) bbs Reply int(20) インデックス フォームID (フォームID) 3です。MYSQLデータベースに接続するBEAN package netzero import java.sql.*; public クラス mydb { String driver Name = "org.gjt.mm.mysql.Driver"; Connection コンサート = null Sttement stmt = null Result Set rs = null String conn URL= "jdbc:mysql://localhost/mybbs?user=root&password=how&useUnicode=true&characterEncode=8859_1"; //String conn URL= "jdbc:mysql://localhost/netzerobbs?user=root&password=how"; public mydb() { try { Class.forName(driver Name); } catch (java.lang.lassNotFoundException e) { System.err.println(「netzero(String)」: " + e.getMessage() } } public Result Set executeQuery(String) sql ローソン SQLException { コンサート = Driver Manager.get Connection(conn URL); stmt = conn.createment(); rs = stmt.executeQuery(sql) return rs; } public bollan close Con() { try { if (rsnull s.close(); if (stmt!=null stmt.close() if (conn!=null conn.close() return true; } catch ( SQLException ex ) { System.err.println("close Conn: " + ex.getMessage(); return false; } } } 4です。フォーラムのJSPプログラムを表示します。  <%@ page contentType="text/htmlcharset=gb 2312" %> <%@ page import=「java.io.*」 %> <%@ page import=「java.sql.*」 %> <% 要点 intRowCount out.print(「フォーラムツリー構造を表示する」) out.print(<

 try { String sql=「select」 * from mybbslist order by ロフト desc,depth,fid,bsid" Result Set rs = mybs.executeQuery; if (RS.next() { RS.last() intRowCount=s.getRow() out.print(「フォーラムツリーにあります」); out.print(intRowCount); out.print(「葉っぱノード」) s.first() 要点 j=0; 要点 Depth = 0; out.print('
    ) while(j>Depth) { out.print('
      ) } out.print(「li」) String bbbssbject=rs.get String(「bbbssuject」); out.print; out.print('/li') Depth = RS.get Int(「Depth」) j=j+1; RS.next(); } out.print('/ul') } else { out.print(「データベースには記録がない」) } }catch (SQLException E) { out.println("SQLException: " + E.getMessage() out.println("SQLState: " + E.get SQLState() out.println("VendorErr: " + E.getError Code() } %> <% //mysql接続をオフにします try { if(mbbs.closeCon(); } catch (Exception ex) { System.err.println("close Conn: " + ex.getMessage(); } %> アルゴリズムの参照:http://www.chinaasp.com/sqlbbs/showEssence.asp?id=4783