什么是 无限极分类???(PHP。数据库)

什么是 无限极分类???(PHP。数据库),第1张

字面理解无限分类:

一级分类 ->二级分类 ->三级分类...........

1级下面有多个2级.

2级下面有多个3级.

........

数据库的设计:

表名:table_categories

字段:

cid [主键]

name 分类名

parentid:上一级cid.如果是一级分类.该字段数据等于0

最主要的是要掌握无限极分类的逻辑,那么写起来就很容易的多了

首先看数据库表:xp_cate

控制器: CateAction.class.php

<?php

class CateAction extends Action{

function index(){

$cate=M('Cate')

$list=$cate->field("id,name,pid,path,concat(path,'-',id) as bpath")->order('bpath')->select()

foreach($list as $key=>$value){

$list[$key]['count']=count(explode('-',$value['bpath']))

}

$this->assign('alist',$list)

$this->display()

}//添加栏目

function add(){

$cate=new CateModel()if($vo=$cate->create()){

if($cate->add()){

$this->success('添加栏目成功')

}else{

$this->error('添加栏目失败')

}

}else{

$this->error($cate->getError())

}

}}

?>

模型:CateModel.class.php

<?php

class CateModel extends Model{//对应数据库中的表xp_cate

protected $_auto=array(

array('path','tclm',3,'callback'),

)function tclm(){

$pid=isset($_POST['pid'])?(int)$_POST['pid']:0

echo ($pid)

if($pid==0){

$data=0

}else{

$list=$this->where("id=$pid")->find()

$data=$list['path'].'-'.$list['id']//子类的path为父类的path加上父类的id

}

return $data

}

}

?>

模板:index.html

<form action="!-URL-!/add" method="post">

请选择父级栏目:<select name="pid" size="20">

<option value="0">根栏目</option>

<volist name="alist" id="vo">

<option value="{$vo['id']}">

<for start="0" end="$vo['count']">

</for>

{$vo['name']}

</option>

</volist>

</select><br />

新的栏目名称:<input type="text" name="name" /><br />

<input type="submit" value="添加栏目" />

</form>

这问题很有趣哦!很多公司面试经常提到!有三种办法:

1.父类子类都各自建表(不推荐)

2.子类父类同在一张表(推介)

3.还有一种做法记不清了。

下面说说第二种做法吧!

你可以在数据库中建一张表都拥有以上的字段,然后在hibernate配置文件里配置一对多的关系,自己类对自己类做一对多的关联,具体配置你可以在一些论坛网站上搜到的。然后查询时你只要按id=父类的那个id去查一遍就全出来了.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9995205.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存