首页 > php基础 > 完整的新闻无限级分类代码,可添加,删除,移动,修改

完整的新闻无限级分类代码,可添加,删除,移动,修改

<?php教程

//连接数据库教程 
$link = mysql教程_connect('localhost','root','密码') or die(mysql_error()); 
mysql_select_db('sortclass',$link); 
mysql_query("set names 'gbk'"); 
//无限分类类库 
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="网页特效">window.location.href="class.php?"+new date().gettime();</script>'; 
exit; 
} 
//生成select 
function makeselect($array,$formname){ 
global $tree; 
$select = '<select name="'.$formname.'">'; 
foreach ($array as $id){ 
$select.='<option value="'.$id.'">'.$tree->getlayer($id, '|-').$tree->getvalue($id)."</option>"; 
} 
return $select.'</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(); 
 
<style type="text/css教程"> 
body{font-size:12px;} 
ul{list-style:none;} 
a{cursor:pointer;} 
input{ margin-top:8px;} 
</style> 
<script language="javascript"> 
function $(e){return document.getelementbyid(e);} 
function mod(cid){ 
$('cid').value=cid; 
$('op').value='mod'; 
$('name').style.border='1px solid red'; 
} 
</script> 
<h3>添加分类</h3> 
<form action="class.php" method="post"> 
名称:<input type="text" id="name" name="cname" /> 添加到:<?=makeselect($category,'pid')<br /> 
<input type="hidden" id="op" name="op" value="add" /> 
<input type="hidden" id="cid" name="cid" /> 
<input type="submit" value="添加分类" /> 
</form> 
<h3>移动分类</h3> 
<form action="class.php" method="post"> 
<?=makeselect($category,'who')移动到:<?=makeselect($category,'to') 
<input type="hidden" id="op" name="op" value="move" /> 
<input type="submit" value="移动" /> 
</form> 
<ul> 
<?php 
foreach ($category as $id){ 
echo '<li>'.$tree->getlayer($id, '|- ').$tree->getvalue($id).' <a href="class.php?op=del&cid='.$id.'">del</a> <a onclick="mod('.$id.')">edit</a> </li>'; 
} 
 
</ul>
完整的新闻无限级分类代码,可添加,删除,移动,修改

顶极节点 del   edit 
|- 1级分类del   edit 
|- 1级分类 del   edit 
|- 1级分类 del   edit 
|- |- 2级分类 del   edit 
|- |- |- 3级分类 del  edit 
|- |- |-|- 4级分类 del  edit 
|- 1级分类 del   edit

<!--
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;
--->

教程地址:http://www.phprm.com/base/36651.html

欢迎转载!但请带上文章地址^^

标签:none

发表留言