数据库建两个表,一个是分类的,另一个是放文章的,文章表里面有个字段关联分类表
创新互联建站致力于互联网品牌建设与网络营销,包括成都做网站、成都网站制作、成都外贸网站建设、SEO优化、网络推广、整站优化营销策划推广、电子商务、移动互联网营销等。创新互联建站为不同类型的客户提供良好的互联网应用定制及解决方案,创新互联建站核心团队十年专注互联网开发,积累了丰富的网站经验,为广大企业客户提供一站式企业网站建设服务,在网站建设行业内树立了良好口碑。
你这个是在做无线栏目分类,现在方法很多,比较实用的用递归调用 ,左右直调用
简单的解决方案:
数据库结构
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);
}
}
}
/**
*-------------------------数据库操作类-----------------------------*
*/
class mySql_Class
{
function __construct($host, $user, $pass)
{
@mysql_connect($host,$user,$pass) or die("数据库连接失败!");
mysql_query("SET NAMES 'gbk'");
}
function select_db($db)//连接表
{
return @mysql_select_db($db);
}
function query($sql)//执行SQL语句
{
return @mysql_query($sql);
}
function fetch_array($fetch_array)
{
return @mysql_fetch_array($fetch_array, MYSQL_ASSOC);
}
function close() //关闭数据库
{
return @mysql_close();
}
function insert($table,$arr) //添加记录
{
$sql = $this - query("INSERT INTO `$table` (`".implode('`,`', array_keys($arr))."`) VALUES('".implode("','", $arr)."')");
return $sql;
}
}
?
首先数据库名和表明不要重复。没有特别的原因,有的时候这样会出问题,而且是很难发现的问题。
首先需要一个树形的表,你的表不是树形的。
树形的表需要id和pid(parentID)。你这样2张表是什么意思?
一个二级的树形?
如果是三级呢,四级呢?你的ln是上级的意思?
表的结构应该是这样的。
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,'文学类',0);
insert into book_type values (2,'科幻类',0;
insert into book_type values (3,'世界名著',0);
insert into book_type values (4,'中国文学类',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)
数据库连接的语句一般单独放到一个文件中。
首先你需要引用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;
分类名称和分类路径,如果你使用系统默认的模板就可以看到了。
相当于文章的一个子分类,就是一个栏目;不过是在专题下面的一个栏目,分类路径就是保存这个栏目的目录
我刚加了一个,你看下就明白了