引子
作为菜鸟的我面试过程中总是会被虐的体无完肤,即使知道是怎么一回事,但由于没有彻底掌握住,还是在关键时刻无法及时运用。所以多总结应该是我现在时常要做的事。
遇到的这个机试题就是关于无限级分类的知识。无限级分类在项目中运用是比较平常的,逻辑也不会太难理解:一个父级下面包含多个子级。
题目是这样的:点击下拉框选择,输入名称,添加,到对应的层级中。然后还要可以删除。
实现大概效果图如下:
图1
图2
实现
1、数据库
数据库
添加的逻辑:当某行数据的pid等于另一行数据中的id时,如id为54的广州市,其pid=53,即对应的是广东省,所以广州市是在广东省下面的。以此类推。
删除的逻辑:删除某个父类,其下所有子类都需删除。
2、代码
为了效果稍微好点,采取了jq\ajax,并用了mvc框架。
Controller:
public function index()
{
$data = DB::name('user')->order('id asc')->select();
//调用树
$li = new PersonModel;
$tree = $li->getTree($data);
$html = $li->html($tree);
$this->assign('tree',$tree);
$this->assign('data',$data);
$this->assign('html',$html);
return $this->fetch();
}
public function add()
{
$data = $_POST;
$pid = $_POST['pid'];
if($data) {
if($pid == 0) {
$resu