我的问题是:当我点击一级分类名后面的‘增加分类’链接时,会显示一个下拉列表,并默认显示当前的这个一级分类名。
但当我点击二级分类名后面的“新增分类”链接时,也会显示一个下拉列表,但却默认显示的还是一级分类名,如何修正!!
大家知道我要的效果了吧。
全部代码如下:<?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('&nbsp;&nbsp;&nbsp;',$x).'├─&nbsp;';
         echo $repeat.$arr[$i][2].str_repeat('&nbsp;',10);
         echo "<a href='b.php?catid={$arr[$i][0]}&type=add'>增加分类</a>&nbsp;<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('&nbsp;',$x) : str_repeat('&nbsp;',$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);
}
?>