本篇文章介绍了,在php中无限极分类实现的两种解决方法。需要的朋友参考下

method of classify one<?php

/*

reader: 这是自己写的无限极分类实现方法 里面的编辑方法只是对分类名进行了编辑

没有进行移动操作 小弟能力有限忘大家多多包涵啊

第一种方法:CREATE TABLE `types` (

`type_id` int(11) NOT NULL AUTO_INCREMENT,

`type_name` varchar(20) NOT NULL,

`type_p_id` varchar(64) NOT NULL DEFAULT '-',

PRIMARY KEY (`type_id`),

KEY `type_name` (`type_name`),

KEY `tname` (`type_name`)

) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=utf8

注:

这里没做字段有效验证;

type_id 表示主键自增

type_name 表示分类名

type_p_id 表示分类路径 这里的分类路径是 上层父类的分类路径加上此类的主键id 用逗号隔开

*/

error_reporting(7);

header("Content:text/html;charset=utf-8");

//这里先进行操作的判断

$arr = array('list','add','del','edit','addok','edit_ok');

$act= in_array($_GET['ac'],$arr)?$_GET['ac']:$arr[0];

//连接数据库

$conn = mysql_connect("localhost","root","root")or die('数据库连接失败');

mysql_select_db("study",$conn);

mysql_query("set names utf8");

//根据分类层进行排序

$sql = "select * from types order by type_p_id";

$sql1 = mysql_query($sql);

//添加分类

if($act == "addok"){

$type_id = $_POST['type_id'];

$type_name = $_POST['type_name'];

//如果等于0表示是跟目录

if($type_id=="0"){

$sql = "insert into types set type_name = '{$type_name}'";

$res = mysql_query($sql);

$id = mysql_insert_id();

$sql = "update types set type_p_id = '$id,' where type_id=$id";

$res = mysql_query($sql);

if( mysql_affected_rows ()>0){

echo "";

}else{

echo "";

}

}//如果不等于0

else{

//根据typeid 找到 该id下的type_p_id

$sql = "select type_p_id from `types` where type_id = $type_id";

$res = mysql_query($sql);

$res = mysql_fetch_assoc($res);

$type_id = $res['type_p_id'];

//先将名称插入进去

$sql = "insert into types set type_name = '{$type_name}'";

$res = mysql_query($sql);

//获取最后执行的id 然后进行数据更新 主要更新 type_p_id

$id = mysql_insert_id();

$sql = "update types set type_p_id = '$type_id$id,' where type_id=$id";

$res = mysql_query($sql);

if($res){

echo "";

}else{

echo "";

}

}

}elseif($act=="add"){

?>

新分类名称:

当前分类:

顶级分类

//循环遍历分类

while($res = mysql_fetch_assoc($sql1)){

//查找 ","号出现的次数

$m=substr_count($res['type_p_id'],",");

//使用空格替换 "空格"

$strpad = str_pad("",$m*8*2," ");

if($m==1){

$sele = "disabled";

}else{

$sele = "";

}

?>

}

?>

}elseif($act == "list"){

//获取列表根据 分类层进行排序

$sql = "select * from types order by type_p_id";

$res = mysql_query($sql);

?>

id 分类名 path路径 操作

while($arr = mysql_fetch_assoc($res)){?>

<?php echo $arr['type_id']?><?php echo $arr['type_name']?><?php echo $arr['type_p_id']?>编辑 |

删除

}

?>

}elseif($act == "edit"){

$id = $_GET['type_id'];

$sql = "select *from `types` where type_id=$id ";

$res = mysql_query($sql);

echo "

";

while($arr = mysql_fetch_assoc($res)){

echo "当前名称:{$arr['type_name']}"."
";

echo "新名称:"."
";

echo "";

}

echo "";

echo "

";

}elseif($act == "edit_ok"){

$name = trim($_POST['n_type_name']);

$id = $_POST['id'];

if(!empty($name)){

$sql = "update `types` set type_name='$name' where type_id=$id";

mysql_query($sql);

echo "";

}else{

echo "";

}

}elseif($act == 'del'){

//这里的删除是要把当前分类 和当前的子分类都要删除 所以用到$id%

$id = $_GET['type_id'];

$sql ="delete from `types` where type_p_id like '$id%' ";

$res = mysql_query($sql);

if($res){

echo "";

}else{

echo "";

}

}

?>

types表:

下面是效果图:

method of classify two<?php

/*

reader:

这是自己写的无限极分类实现方法 里面的编辑很简单的(你们懂得。) 就没写了

没有进行移动操作 小弟能力有限忘大家多多包涵啊

第二种方法:

CREATE TABLE `types` (

`type_id` int(11) NOT NULL AUTO_INCREMENT,

`type_name` varchar(20) NOT NULL,

`type_p_id` varchar(64) NOT NULL,

PRIMARY KEY (`type_id`),

KEY `type_name` (`type_name`),

KEY `tname` (`type_name`)

) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=utf8

注:

这里没做字段有效验证;

type_id 表示主键自增

type_name 表示分类名

type_p_id 表示分类路径 这里的分类路径是 上层的分类id 如果是当前分类 这个值为 0

*/

error_reporting(7);

header("Content-type:text/html;charset=utf-8");

//这里先进行操作的判断

$arr = array('list','add','del','edit','addok','edit_ok');

$act= in_array($_GET['ac'],$arr)?$_GET['ac']:$arr[0];

//连接数据库

$conn = mysql_connect("localhost","root","root")or die('数据库连接失败');

mysql_select_db("study",$conn);

mysql_query("set names utf8");

if($act=="add"){

/**

* @access public

* @param array $types 数组 这里的数组要传引用&

* @param interal $pid 所属的分类上层分类id

* @param int $path 分类层 默认从0开始每次循环加一

* @return array();

*/

function getTypes(&$types=array(),$pid=0,$path=0){

$sql = "select * from `type` where type_p_id = $pid";

$res = mysql_query($sql);

while($row = mysql_fetch_assoc($res)){

$str = "";

for($i=0;$i

$str.=" ";

}

$row['new_type_name'] = $str.$row['type_name'];

$types[] = $row;

getTypes($types,$row['type_id'],($path+1));

}

return $types;

}

//获取分类 调用函数

getTypes($types);

//获取列表根据 分类层进行排序

$sql1 = "select * from type order by type_id";

$sqll = mysql_query($sql1);

?>

新分类名称:

当前分类:

顶级分类

//循环这个数组将分类正确输出

for($i=0;$i

?>

}

?>

}elseif($act == "addok"){

$type_name = $_POST['type_name'];

$type_id = $_POST['type_id'];

$sql = "insert into `type`(type_name,type_p_id) values ('$type_name','$type_id')";

$res = mysql_query($sql);

if(mysql_insert_id()>0){

echo "";

}else{

echo "";

}

}elseif($act == "list"){

//获取列表根据 分类层进行排序

$sql = "select * from type order by concat(type_id,type_p_id)";

$res = mysql_query($sql);

?>

id 分类名 path路径 操作

while($arr = mysql_fetch_assoc($res)){?>

<?php echo $arr['type_id']?><?php echo $arr['type_name']?><?php echo $arr['type_p_id']?>编辑 |

删除

}

?>

}elseif($act == "del"){

/***

这里要删除大分类的时候必须要删除该大分类下的子分类

所以这里开始mysql事务 mysql 事务开启的方式 事务详细说明请参考

*/

mysql_query("SET AUTOCOMMIT=1");//开启事务

$type_id = $_GET['type_id'];

//删除该分类

$sqlone = "delete from `type` where type_id=$type_id";

//删除该分类下的子分类

$sqltwo = "delete from `type`where type_p_id=$type_id";

$res1 = mysql_query($sqlone);

$res2 = mysql_query($sqltwo);

if($res1 && $res2)

{

mysql_query("COMMIT");

echo "";

}else{

mysql_query("ROLLBACK");

echo "";

}

}

?>

type表:

下面是效果图

写的确实不怎么样啊 还望大家见谅。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php无限极 left right,php无限极分类实现的两种解决方法相关推荐

  1. 无限法则无法更新服务器,无限法则不支持32为客户端怎么办_无限法则不支持32为客户端解决办法_玩游戏网...

    <无限法则>登录服务器不在国家地区开放解决办法 如果你在玩<无限法则>时遇到了提示"登录服务器不在国家地区开放"的问题,你自己应该如何把这个问题处理了呢?如 ...

  2. php 递归实现无限极分类和排序_无限极分类的两种方式,递归和引用

    说到无限极分类,比较常见的做法是在建表的时候,增加一个parnet_id字段用来区别自己所属的分类(是顶级分类还是子分类) 由于展示数据的时候,需要表达出这种所属关系,所以必然要在读取数据的时候进行一 ...

  3. 无限极分类php简单,创建无限极分类树型结构的简单方法

    先上效果图 顶级分类其实就是一级分类,二级分类也叫作一级分类的子分类,在这个基础上,子分类还可以拥有子分类,这样就构成了无限极分类. 接下来看具体实现的代码: 一.在控制器中按字段查询,查询出所有分类 ...

  4. php 无限极分销,PHP实现无限极分类的两种方式

    无限极分类说简单点就是一个类可以分成一个分子类,然后一个子类又可以分另一个子类这样无限分下去,就是好象windows可以新建一个文件夹,然后在这个文件夹里又可以建一个文件夹,PHP要实现无限极分类有两 ...

  5. php无限极递归概念,php无限极分类递归与普通

    1. 递归 public function getInfo(){ $data=$this->select(); $arr=$this->noLimit($data,$f_id=0,$lev ...

  6. 两种实现php无限极分类

    一.两种实现php无限极分类 设置原始数据 public function index(){$items = array(1 => array('id' => 1, 'pid' => ...

  7. php easyui tree 结构,EasyUI Tree树组件无限循环的解决方法

    在学习jquery easyui的tree组件的时候,在url为链接地址的时,发现如果最后一个节点的state为closed时,未节点显示为文件夹,单击会重新加载动态(Url:链接地址)形成无限循环. ...

  8. cf两边黑屏怎么解决win10_win10开机无限黑屏转圈重启解决方法

    今天同事小梦的电脑又双叒叕出问题了.她来到公司后,打开电脑,发现进不去系统,一直是开机黑屏转圈重启,看到小编到公司后立马拉着我去当"维修工"了.一般人们遇到这个问题都是送去维修,但 ...

  9. dnf无限重连服务器,dnf无限连接服务器失败解决方法

    dnf无限连接服务器失败怎么解决?相信很多小伙伴们都会遇到类似的问题,下面小编给小伙伴们带来了dnf无限连接服务器失败的临时解决办法,一起来看看把! 除了重启怎么办 几天好几次了 刚刚忍不了了 重启烦 ...

最新文章

  1. linux系统开机过程描述
  2. 80. 删除排序数组中的重复项 II golang
  3. Centos安装NFS服务器配置及挂载教程
  4. 新书正式定名《互联网运营智慧》
  5. sql server数据库文件的迁移(mdfldf文件)
  6. 只要一页纸,就能管好所有项目
  7. 特殊IP地址分类:私有地址、保留地址
  8. 关于先有鸡还是先有蛋,终于有正确答案了
  9. v-show会预先渲染_预先进行Big Design的利弊-我该怎么做
  10. org.eclipse.jdt版本更新导致包引入问题
  11. win10照片文件夹里面图片,突然不显示缩略图
  12. 英伟达RTX 4070 Ti显卡正式发布!你会买吗?
  13. jmeter压测学习11-模拟浏览器访问web页面
  14. 研究生图像处理该怎的自学_我的研究生这三年
  15. 微信小程序|小程序开发进阶
  16. 基于python的数据爬取与分析_基于Python的网站数据爬取与分析的技术实现策略
  17. 迅为嵌入式Linux学习笔记5——进程间通信
  18. 迷你电脑主机的优缺点及应用分析
  19. Windows存储管理
  20. TensorFlow及model的安装

热门文章

  1. 电商促销海报BANNER设计要点,万能套用PSD分层模板,先收好!
  2. java排错_java排错之CPU高
  3. VisualStudio2019 DLL生成并使用教程(C++)最详细Demo教程
  4. c9, Performance Monitor Control Register
  5. APIC ID 的通用七级解释与概念性六级拓扑:APICID
  6. OSI参考模型和TCP/IP参考模型-详解
  7. 几个简单的Linux驱动程序
  8. Just For Fun:闲来无事,C语言+GTK生成mnist数据集的图形用户界面GUI
  9. android 手势类的封装,Android手势识别简单封装类
  10. 闭包 python_根据面试题谈谈 Python 闭包