phpstudy|php 无限分类

更新时间:2016-03-22    来源:php常用代码    手机版     字体:

【www.bbyears.com--php常用代码】

php 无限分类

创建数据库以及表:
复制代码

CREATE DATABASE `sortclass`DEFAULT CHARSET utf8;
CREATE TABLE IF NOT EXISTS `class` (
`cid` mediumint(8) unsigned NOT NULL auto_increment,
`pid` mediumint(8) unsigned NOT NULL,
`cname` varchar(50) NOT NULL,
PRIMARY KEY (`cid`),
KEY `pid` (`pid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 

处理文件示例:
php代码 
复制代码

header("Content-type: text/html; charset=utf-8");
//连接数据库
$link = mysql_connect("localhost","root","eric") or die(mysql_error());
mysql_select_db("sortclass",$link);
//无限分类类库
class SortClass{
var $data = array();
var $child = array(-1=>array());
var $layer = array(-1=>-1);
var $parent = array();
var $link;
var $table;
function SortClass($link, $table){
$this->setNode(0, -1, "顶极节点");
$this->link = $link;
$this->table = $table;
$node = array();
$results = mysql_query("select * from ".$this->table."",$this->link);
while($node = mysql_fetch_assoc($results)){
$this->setNode($node["cid"],$node["pid"],$node["cname"]);
}
}
function setNode ($id, $parent, $value){
$parent = $parent?$parent:0;
$this->data[$id] = $value;
$this->child[$id] = array();
$this->child[$parent][] = $id;
$this->parent[$id] = $parent;
$this->layer[$id] = !isset($this->layer[$parent])? 0 : $this->layer[$parent] + 1;
}
function getList (&$tree, $root= 0){
foreach ($this->child[$root] as $key=>$id){
$tree[] = $id;
if ($this->child[$id]) $this->getList($tree, $id);
}
}
function getValue ($id){return $this->data[$id];}
function getLayer ($id, $space = false){
return $space?str_repeat($space, $this->layer[$id]):$this->layer[$id];
}
function getParent ($id){return $this->parent[$id];}
function getParents ($id){
while ($this->parent[$id] != -1){
$id = $parent[$this->layer[$id]] = $this->parent[$id];
}
ksort($parent);
reset($parent);
return $parent;
}
function getChild ($id){return $this->child[$id];}
function getChilds ($id = 0){
$child = array($id);
$this->getList($child, $id);
return $child;
}
function addNode($name,$pid){
mysql_query("insert into $this->table (`pid`,`cname`) values ("$pid","$name")",$this->link);
}
function modNode($cid, $newName){
mysql_query("update $this->table set `cname`="$newName" where `cid` = $cid",$this->link);
}
function delNode($cid){
$allChilds = $this->getChilds($cid);
$sql ="";
if(empty($allChilds)){
$sql = "delete from $this->table where `cid` = $cid";
}else{
$sql = "delete from ".$this->table." where `cid` in (".implode(",",$allChilds).",".$cid.")";
}
mysql_query($sql,$this->link);
}
function moveNode($cid, $topid){
mysql_query("update $this->table set `pid`=$topid where `cid` = $cid", $this->link);
}
}
//函数
function back(){
echo "<script language="java script">window.location.href="test.php?"+new Date().getTime();</script>";
exit;
}
//声成select
function makeSelect($array,$formName){
global $tree;
$select = "";
}
$tree = new SortClass($link,"`class`");
$op = !empty($_POST["op"]) ? $_POST["op"] : $_GET["op"];
if(!empty($op)){
if($op=="add"){
$tree->addNode($_POST["cname"],$_POST["pid"]);
back();
}
if($op=="mod"){
$tree->modNode($_POST["cid"],$_POST["cname"]);
back();
}
if($op=="del"){
$tree->delNode($_GET["cid"]);
back();
}
if($op=="move"){
$tree->moveNode($_POST["who"],$_POST["to"]);
back();
}
}
$category = $tree->getChilds();
?>
 

css样式
复制代码

 


JS代码

复制代码
<script language="java script">
function $(e){return document.getElementById(e);}
function mod(cid){
$("cid").value=cid;
$("op").value="mod";
$("name").style.border="1px solid red";
}
</script>
 

HTML代码部分
复制代码


名称: 添加到:





移动分类



移动到:




foreach ($category as $id){
echo "".$tree->getLayer($id, "|- ").$tree->getValue($id)." Del Edit ";
}
?>

本文来源:http://www.bbyears.com/jiaocheng/22597.html

猜你感兴趣