數(shù)據(jù)庫建兩個表,一個是分類的,另一個是放文章的,文章表里面有個字段關(guān)聯(lián)分類表
創(chuàng)新互聯(lián)建站致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,包括成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營銷策劃推廣、電子商務(wù)、移動互聯(lián)網(wǎng)營銷等。創(chuàng)新互聯(lián)建站為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,創(chuàng)新互聯(lián)建站核心團(tuán)隊十年專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗,為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹立了良好口碑。
你這個是在做無線欄目分類,現(xiàn)在方法很多,比較實用的用遞歸調(diào)用 ,左右直調(diào)用
簡單的解決方案:
數(shù)據(jù)庫結(jié)構(gòu)
CREATE TABLE `class` (
`id` int(10) NOT NULL auto_increment,
`name` varchar(250) character set gbk default NULL,
`classid` int(10) default NULL,
`sort` int(10) default '10',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312 AUTO_INCREMENT=11 ;
php處理文件
div id="main" a href="?action="分類列表/a a href="?action=add"添加分類/a
?php
$mysql = new mysql_Class('localhost','root','');
$mysql - select_db('myde520');
switch($_GET['action']){
case 'add':
$class_arr=array();
$sql = "select * from `class` order by sort asc, id Desc";
$query = $mysql - query($sql);
while($row = $mysql - fetch_array($query)){
$class_arr[] = array($row['id'],$row['name'],$row['classid'],$row['sort']);
}
?
form action="?action=act_add" method="post"
table border="0" cellpadding="0" cellspacing="0" class="table02"
thead
tr
td colspan="2"div align="center"添加分類/div/td
/tr
/thead
tr
tddiv align="right"分類名稱:/div/td
tdinput name="name" type="text" class="input" id="name" value="" size="40" //td
/tr
tr
tddiv align="right"所屬分類ID:/div/td
tdselect name="classid" id="classid"
option value="0"-----頂級分類-----/option
?php
dafenglei_select(0,0,0);
?
/select
/td
/tr
tr
tddiv align="right"排序:/div/td
tdinput name="sort" type="text" class="input" id="sort" value="10" size="25" //td
/tr
tr
td colspan="2"div align="center"
input type="submit" name="button" id="button" value="添加分類" /
input type="reset" name="button2" id="button2" value="重置" /
/div/td
/tr
/table
/form
?php
break;
case 'act_add':
$sql = "INSERT INTO `class` (`name`,`classid`,`sort`) VALUES('".$_POST['name'];
$sql .= "',".$_POST['classid'].",".$_POST['sort'].")";
$mysql - query($sql);
msg('添加成功!','?action=');
break;
case 'edit':
$class_arr=array();
$sql = "select * from `class` order by sort asc, id Desc";
$query = $mysql - query($sql);
while($row = $mysql - fetch_array($query)){
$class_arr[] = array($row['id'],$row['name'],$row['classid'],$row['sort']);
}
$sql = "select * from `class` where id=".$_GET['id'];
$query = $mysql - query($sql);
$row = $mysql - fetch_array($query);
if($row){
?
form action="?action=act_edit" method="post"
table border="0" cellpadding="0" cellspacing="0" class="table02"
thead
tr
td colspan="2"div align="center"修改分類/div/td
/tr
/thead
tr
tddiv align="right"分類名稱:/div/td
tdinput name="name" type="text" class="input" id="name" value="?php echo $row['name'];?" size="40" //td
/tr
tr
tddiv align="right"所屬分類ID:/div/td
tdselect name="classid" id="classid"
option value="0"-----頂級分類-----/option
?php
dafenglei_select(0,0,$row['classid']);
?
/select
/td
/tr
tr
tddiv align="right"排序:/div/td
tdinput name="sort" type="text" class="input" id="sort" value="?php echo $row['sort'];?" size="25" //td
/tr
tr
td colspan="2"div align="center"
input type="submit" name="button" id="button" value="修改分類" /
input type="hidden" id="id" name="id" value="?php echo $_GET['id'];?" /
input type="reset" name="button2" id="button2" value="重置" /
/div/td
/tr
/table
/form
?php
}else{
msg('要修改的記錄不存在!','?action=');
}
break;
case 'act_edit':
$sql = "select id from `class` where id=".$_POST['id'];
$query = $mysql - query($sql);
$row = $mysql - fetch_array($query);
if($row){
if($row['id']==$_POST['classid']){
msg('修改失敗,不能自己是自己的子分類!','?action=');
}else{
$sql = "update `class` set `name`='".$_POST['name']."',`classid`=".$_POST['classid'];
$sql .= ",`sort`=".$_POST['classid']." where `id`=".$_POST['id'];
$mysql - query($sql);
msg('修改成功!','?action=');
}
}
break;
case 'del':
$sql = "select * from `class` where id=".$_GET['id'];
$query = $mysql - query($sql);
$row = $mysql - fetch_array($query);
if($row){
$mysql - query("delete `id` from `class` where id=".$_GET['id']);
msg('刪除成功!','?action=');
}else{
msg('記錄不存在!','?action=');
}
break;
case '':
$class_arr=array();
$sql = "select * from `class` order by sort asc, id Desc";
$query = $mysql - query($sql);
while($row = $mysql - fetch_array($query)){
$class_arr[] = array($row['id'],$row['name'],$row['classid'],$row['sort']);
}
?
table class="table"
thead
tr
td 分類名稱/td
td width="60"div align="center"排序/div/td
td width="80"div align="center"操作/div/td
/tr
/thead
?php dafenglei_arr(0,0);?
/table
?php
break;
}
?
/div
?php
function msg($msg,$url)
{
echo "script type=\"text/javascript\"alert('$msg');window.location.href='$url';/script";
}
function dafenglei_arr($m,$id)
{
global $class_arr;
global $classid;
global $mysql;
if($id=="") $id=0;
$n = str_pad('',$m,'-',STR_PAD_RIGHT);
$n = str_replace("-","??",$n);
for($i=0;$icount($class_arr);$i++){
if($class_arr[$i][2]==$id){
echo "tr\n";
echo " td".$n."|--a href=\"?action=editid=".$class_arr[$i][0]."\"".$class_arr[$i][1]."/a/td\n";
echo " tddiv align=\"center\"".$class_arr[$i][3]."/div/td\n";
echo " tddiv align=\"center\"a href=\"?action=editid=".$class_arr[$i][0]."\"修改/a";
echo " a href=\"?action=delid=".$class_arr[$i][0]."\"刪除/a";
echo "/div/td\n";
echo " /tr\n";
dafenglei_arr($m+1,$class_arr[$i][0]);
}
}
}
function dafenglei_select($m,$id,$index)
{
global $class_arr;
$n = str_pad('',$m,'-',STR_PAD_RIGHT);
$n = str_replace("-","??",$n);
for($i=0;$icount($class_arr);$i++){
if($class_arr[$i][2]==$id){
if($class_arr[$i][0]==$index){
echo " option value=\"".$class_arr[$i][0]."\" selected=\"selected\"".$n."|--".$class_arr[$i][1]."/option\n";
}else{
echo " option value=\"".$class_arr[$i][0]."\"".$n."|--".$class_arr[$i][1]."/option\n";
}
dafenglei_select($m+1,$class_arr[$i][0],$index);
}
}
}
/**
*-------------------------數(shù)據(jù)庫操作類-----------------------------*
*/
class mySql_Class
{
function __construct($host, $user, $pass)
{
@mysql_connect($host,$user,$pass) or die("數(shù)據(jù)庫連接失敗!");
mysql_query("SET NAMES 'gbk'");
}
function select_db($db)//連接表
{
return @mysql_select_db($db);
}
function query($sql)//執(zhí)行SQL語句
{
return @mysql_query($sql);
}
function fetch_array($fetch_array)
{
return @mysql_fetch_array($fetch_array, MYSQL_ASSOC);
}
function close() //關(guān)閉數(shù)據(jù)庫
{
return @mysql_close();
}
function insert($table,$arr) //添加記錄
{
$sql = $this - query("INSERT INTO `$table` (`".implode('`,`', array_keys($arr))."`) VALUES('".implode("','", $arr)."')");
return $sql;
}
}
?
首先數(shù)據(jù)庫名和表明不要重復(fù)。沒有特別的原因,有的時候這樣會出問題,而且是很難發(fā)現(xiàn)的問題。
首先需要一個樹形的表,你的表不是樹形的。
樹形的表需要id和pid(parentID)。你這樣2張表是什么意思?
一個二級的樹形?
如果是三級呢,四級呢?你的ln是上級的意思?
表的結(jié)構(gòu)應(yīng)該是這樣的。
create table book_type
(
book_type_id int primary key auto_increment,
book_type_name varchar(255),
pid int
);
insert into book_type values (1,'文學(xué)類',0);
insert into book_type values (2,'科幻類',0;
insert into book_type values (3,'世界名著',0);
insert into book_type values (4,'中國文學(xué)類',1);
create table book
(
book_id int primary key auto_increment,
name varchar(255),
book_type_id int
);
insert into book values (null,'康熙大帝',4);
insert into book values (null,'黑雨',4);
insert into book values (null,'紫日',4)
數(shù)據(jù)庫連接的語句一般單獨(dú)放到一個文件中。
首先你需要引用dtree的javascript文件。例如這樣script type="text/javascript" src="dtree.js"/script
script type="text/javascript"
var d = new dTree('d');
%String str="";Statement stmt =null;ResultSet rs=null;String name=null;int ln=0;Class.forName("com.mysql.jdbc.Driver");String url ="jdbc:mysql://localhost/lib?user=rootpassword=1230";Connection conn= DriverManager.getConnection(url);String preStr ="";for(int i=0;i1;i++){ preStr+="|---";}stmt =conn.createStatement
();rs= stmt.executeQuery("select * from book_type");while(rs.next()){
%
d.add(%=rs.getString("book_type_id")%,%=rs.getString("pid")%,'%=rs.getString("book_type_name")%','#');
%
}
rs.close();
rs = null;
conn.close();
conn = null;
}catch(Exception ex){
out.println(ex.toString());
}
%
document.write(d);
/script
這個是查詢圖書類型的,如果加上圖書的信息需要把sql改一下。
改成select * from book_type union select book_id as book_type_id,book_name as book_type_name,book_type_id as pid from book;
分類名稱和分類路徑,如果你使用系統(tǒng)默認(rèn)的模板就可以看到了。
相當(dāng)于文章的一個子分類,就是一個欄目;不過是在專題下面的一個欄目,分類路徑就是保存這個欄目的目錄
我剛加了一個,你看下就明白了