我的问题是:当我点击一级分类名后面的‘增加分类’链接时,会显示一个下拉列表,并默认显示当前的这个一级分类名。
但当我点击二级分类名后面的“新增分类”链接时,也会显示一个下拉列表,但却默认显示的还是一级分类名,如何修正!!
大家知道我要的效果了吧。
全部代码如下:<?php
/*
数据表说明:很简单,就三个字段。一个是分类id catid。一个是父id parentid。一个是分类名 catname
*/class category
{
private $pdo;
private $arr;
/******************************************
函数一的作用:定义一个构造函数,创建一个用来连接数据库的pdo实例
******************************************/
function __construct()//
{
try
{
$this->pdo = new PDO('mysql:host=localhost;dbname=test','root','123456');
$this->pdo->exec("set names 'gbk'");//设置gbk字符集。
}
catch (PDOException $e)//如果发生错误,则抛出异常并捕获。
{
echo '数据库连接失败:'.$e->getMessage();//输出异常信息。
exit();//退出程序。
}
//以下代码是取得所有分类名,放入一个二维数组$arr中。
$result = $this->pdo->query("select * from zy_category");
while($row = $result->fetch(PDO::FETCH_ASSOC))
{
$arr[] = array($row['catid'],$row['parentid'],$row['catname']);//取得一个含有分类信息的二维数组
}
$this->arr = $arr;
} /******************************************
函数二的作用:
利用递归函数将以上的数组$arr中的分类信息分层显示出来。
******************************************/
function fenlei($parentid,$x = 0)
{
$arr = $this->arr;
for($i = 0; $i < count($arr); $i++)//二维数组中有几个元素,就循环几次。
{
if($arr[$i][1] == $parentid)
{
$repeat = $x==0 ? '' : str_repeat(' ',$x).'├─ ';
echo $repeat.$arr[$i][2].str_repeat(' ',10);
echo "<a href='b.php?catid={$arr[$i][0]}&type=add'>增加分类</a> <br />";
$this->fenlei($arr[$i][0],$x+1);
}
}
}
/******************************************
本函数作用:
将数组$arr中的分类信息以下拉列表的形式全部显示出来。
******************************************/
function tree($parentid,$x,$catid)
{
$arr = $this->arr;
for($i = 0; $i < count($arr); $i++)
{
if($arr[$i][1] == $parentid)
{
$repeat = ($x==0) ? str_repeat(' ',$x) : str_repeat(' ',$x).'├';
if ($arr[$i][0] == $catid)
{
echo "<option selected='selected'>".$repeat.$arr[$i][2].'</option><br>';
}
else
{
echo '<option>'.$repeat.$arr[$i][2].'</option><br>';
}
$this->tree($arr[$i][0],$x+1,$arr[$i][0]);
}
}
}
}//真正的代码是由此开始执行的
$category = new category();//创建一个实例
switch ($_GET['type'])
{
case 'add':
echo '<select>';
$category->tree(0,0,$_GET['catid']);
echo '</select>';
break;
default:
$category->fenlei(0);
}
?>
但当我点击二级分类名后面的“新增分类”链接时,也会显示一个下拉列表,但却默认显示的还是一级分类名,如何修正!!
大家知道我要的效果了吧。
全部代码如下:<?php
/*
数据表说明:很简单,就三个字段。一个是分类id catid。一个是父id parentid。一个是分类名 catname
*/class category
{
private $pdo;
private $arr;
/******************************************
函数一的作用:定义一个构造函数,创建一个用来连接数据库的pdo实例
******************************************/
function __construct()//
{
try
{
$this->pdo = new PDO('mysql:host=localhost;dbname=test','root','123456');
$this->pdo->exec("set names 'gbk'");//设置gbk字符集。
}
catch (PDOException $e)//如果发生错误,则抛出异常并捕获。
{
echo '数据库连接失败:'.$e->getMessage();//输出异常信息。
exit();//退出程序。
}
//以下代码是取得所有分类名,放入一个二维数组$arr中。
$result = $this->pdo->query("select * from zy_category");
while($row = $result->fetch(PDO::FETCH_ASSOC))
{
$arr[] = array($row['catid'],$row['parentid'],$row['catname']);//取得一个含有分类信息的二维数组
}
$this->arr = $arr;
} /******************************************
函数二的作用:
利用递归函数将以上的数组$arr中的分类信息分层显示出来。
******************************************/
function fenlei($parentid,$x = 0)
{
$arr = $this->arr;
for($i = 0; $i < count($arr); $i++)//二维数组中有几个元素,就循环几次。
{
if($arr[$i][1] == $parentid)
{
$repeat = $x==0 ? '' : str_repeat(' ',$x).'├─ ';
echo $repeat.$arr[$i][2].str_repeat(' ',10);
echo "<a href='b.php?catid={$arr[$i][0]}&type=add'>增加分类</a> <br />";
$this->fenlei($arr[$i][0],$x+1);
}
}
}
/******************************************
本函数作用:
将数组$arr中的分类信息以下拉列表的形式全部显示出来。
******************************************/
function tree($parentid,$x,$catid)
{
$arr = $this->arr;
for($i = 0; $i < count($arr); $i++)
{
if($arr[$i][1] == $parentid)
{
$repeat = ($x==0) ? str_repeat(' ',$x) : str_repeat(' ',$x).'├';
if ($arr[$i][0] == $catid)
{
echo "<option selected='selected'>".$repeat.$arr[$i][2].'</option><br>';
}
else
{
echo '<option>'.$repeat.$arr[$i][2].'</option><br>';
}
$this->tree($arr[$i][0],$x+1,$arr[$i][0]);
}
}
}
}//真正的代码是由此开始执行的
$category = new category();//创建一个实例
switch ($_GET['type'])
{
case 'add':
echo '<select>';
$category->tree(0,0,$_GET['catid']);
echo '</select>';
break;
default:
$category->fenlei(0);
}
?>
完全用php就可以实现啊。继续求助中。
新增insert into table(parent_id,name) value(本id ,'子节天')