好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

完整的新闻无限级分类代码,可添加,删除,移动,修改 <?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 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="javascript">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 empty ( $_post [ 'op' ]) ?  $_post [ 'op' ] :  $_get [ 'op' ];   if (! empty 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;   --->   

查看更多关于完整的新闻无限级分类代码,可添加,删除,移动,修的详细内容...

  阅读:34次