好得很程序员自学网

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

php+mysql数据库无限分类代码

本款php无限分类代码比较完整理包括了数据库是mysql的,有增加、删除、编辑、移动的功能,同时还提供数据库sql表结构.代码如下:

//连接数据库   $link  = mysql_connect( 'localhost' , 'root' , '' )  or   die (mysql_error());  mysql_select_db( 'class' , $link ) or   die (mysql_error());  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_array( $results )){  $this ->setnode( $node [ 'id' ], $node [ 'f_id' ], $node [ 'name' ]);  }  }  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 ){  //echo "insert into $this->table (`f_id`,`name`) values ('$pid','$name')";exit;   mysql_query( "insert into $this->table (`f_id`,`name`) values ('$pid','$name')" , $this ->link);  }  function  modnode( $cid ,  $newname ){  mysql_query( "update $this->table set `name`='$newname' where `id` = $cid" , $this ->link);  }  function  delnode( $cid ){  $allchilds  =  $this ->getchilds( $cid );  $sql  = '' ;  if ( empty empty ( $allchilds )){  $sql  =  "delete from $this->table where `id` = $cid" ;  } else {  $sql  =  'delete from ' . $this ->table. ' where `id` in (' .implode( ',' , $allchilds ). ',' . $cid . ')' ;  }  mysql_query( $sql , $this ->link);  }  function  movenode( $cid ,  $topid ){  mysql_query( "update $this->table set `f_id`=$topid where `id` = $cid" ,  $this ->link);  }  }  //函数   function  back(){  echo   '<script language="网页特效">window.location.href="news.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 , '`p_newsclass`' );  $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(); //开源代码phpfensi测试数据   }  }  $category  =  $tree ->getchilds();  ?> 

前台调用实例代码如下:

<style type= "text/css" >  body{font-size:12px;}  ul{list-style:none;}  a{cursor:pointer;}  </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>  <form action= ""  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= "submit"  />  </form>  <h3>移动分类</h3>  <form action= ""  method= "post" >  <?=makeselect( $category , 'who' )?> gt;移动到:<?=makeselect( $category , 'to' )?>  <input type= "hidden"  id= "op"  name= "op"  value= "move"  />  <input type= "submit"  value= "submit"  />  </form>  <ul>  <?php  foreach  ( $category   as   $id ){  echo   '<li>' . $tree ->getlayer( $id ,  '|- ' ). $tree ->getvalue( $id ). ' <a href="time.php?op=del&cid=' . $id . '">del</a> <a onclick="mod(' . $id . ')">edit</a> </li>' ;  }  ?>  </ul>  

用phpmyadmin导入此数据库就ok了,实例代码如下:

-- phpmyadmin sql dump   -- version 3.2.4   -- http://HdhCmsTestphpfensi测试数据   --   -- 主机: localhost   -- 生成日期: 2010 年 07 月 02 日 03:02   -- 服务器版本: 5.1.41   -- php 版本: 5.3.1   set  sql_mode= "no_auto_value_on_zero" ;    /*!40101  set  @old_character_set_client=@@character_set_client */;  /*!40101  set  @old_character_set_results=@@character_set_results */;  /*!40101  set  @old_collation_connection=@@collation_connection */;  /*!40101  set  names utf8 */;  --   -- 数据库: `class`   --   -- --------------------------------------------------------   --   -- 表的结构 `p_newsclass`   --   create   table  if  not  exists `p_newsclass` (    `id`  int (7)  not   null  auto_increment,    `f_id`  int (7)  not   null ,    ` name `  varchar (255)  not   null ,     primary   key  (`id`)  ) engine=innodb   default  charset=utf8 auto_increment=10 ;  --   -- 转存表中的数据 `p_newsclass`   --   insert   into  `p_newsclass` (`id`, `f_id`, ` name `)  values   (3, 0,  '中国' ),  (4, 3,  '福建' ),  (5, 4,  '龙岩市' ),  (7, 4,  '厦门市' ),  (9, 5,  '漳平市' );  /*!40101  set  character_set_client=@old_character_set_client */;  /*!40101  set  character_set_results=@old_character_set_results */;  /*!40101  set  collation_connection=@old_collation_connection */;  

查看更多关于php+mysql数据库无限分类代码的详细内容...

  阅读:41次