帝国CMS模板大全
www.admin99.cn
www.92cms.cn 帝国CMS模板下载站!,情怀,养站,二次开发!源码需求比较大的一站式会员下载,价更省!!!

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.com  

$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://www.phpfensi.com  

—  

— 主机: 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 */;

 

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《php+mysql数据库无限分类代码》
文章链接:https://www.admin99.cn/8407
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
QQ站长交流群:953950264

登录

找回密码

注册