好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

无限极添加php 无限极应用

很多站长朋友们都不太清楚无限极添加php,今天小编就来给大家整理无限极添加php,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 php无限极分类实现的方法? 2、 如何使用PHP实现无限级分类 3、 php递归无限极分类怎么弄 4、 PHP无限极分类,不使用递归怎么转换数据?数据信息如下图所示 5、 请大家发我一个PHP无限级分类增,删,改,查的方法,谢谢了! 6、 thinkphp前台怎么输出无限极分类 php无限极分类实现的方法?

初始化的数据

//初始化原始数据(id=>编号,name=>显示名称,pid=>父级目录id,sort=>排序顺序)$data[1] = array('id'=>'1','name'=>'一级目录A','pid'=>'0','sort'=>'1');

$data[2] = array('id'=>'2','name'=>'一级目录B','pid'=>'0','sort'=>'2');

$data[3] = array('id'=>'3','name'=>'一级目录C','pid'=>'0','sort'=>'3');

$data[4] = array('id'=>'4','name'=>'一级目录D','pid'=>'0','sort'=>'4');

$data[5] = array('id'=>'5','name'=>'二级目录A-1','pid'=>'1','sort'=>'1');

$data[6] = array('id'=>'6','name'=>'二级目录A-2','pid'=>'1','sort'=>'2');

$data[7] = array('id'=>'7','name'=>'二级目录A-3','pid'=>'1','sort'=>'3');

$data[8] = array('id'=>'8','name'=>'二级目录B-1','pid'=>'2','sort'=>'1');

$data[9] = array('id'=>'9','name'=>'二级目录B-2','pid'=>'2','sort'=>'2');

$data[10] = array('id'=>'10','name'=>'二级目录B-3','pid'=>'2','sort'=>'3');

$data[11] = array('id'=>'11','name'=>'二级目录C-1','pid'=>'3','sort'=>'2');

$data[12] = array('id'=>'12','name'=>'二级目录D-1','pid'=>'4','sort'=>'1');

$data[13] = array('id'=>'13','name'=>'二级目录D-2','pid'=>'4','sort'=>'2');

$data[14] = array('id'=>'14','name'=>'三级目录A-2-1','pid'=>'6','sort'=>'1');

$data[15] = array('id'=>'15','name'=>'三级目录A-2-2','pid'=>'6','sort'=>'2');

$data[16] = array('id'=>'16','name'=>'三级目录C-1-1','pid'=>'11','sort'=>'1');

$data[17] = array('id'=>'17','name'=>'三级目录B-2-1','pid'=>'9','sort'=>'2');

显示树结构

function printTree($data,$level=0){    foreach($data as $key=>$value){        for($i=0;$i<=$level;$i++){            echo 'emsp;emsp;';

        }        echo $value['name'];        echo '<br>';        if(!empty($value['children'])){

            printTree($value['children'],$level+1);

        }

    }

}

使用递归的方式获取无限极分类数组

function getNodeTree($list,$tree,$pid=0){    foreach($list as $key=>$value){        if($pid == $value['pid']){

            $tree[$value['id']]=$value;            unset($list[$key]);

            getNodeTree($list,$tree[$value['id']]['children'],$value['id']);

        }

    }

}

使用引用-无限极分类

function createNodeTree($list,$tree){    foreach($list as $key=>$node){        if(isset($list[$node['pid']])){

            $list[$node['pid']]['children'][] = $list[$key];

        }else{

            $tree[] = $list[$node['id']];

        }

    }

}

调用

//递归-无限极分类调用getNodeTree($data,$tree);

printTree($tree);//使用引用-无限极分类调用createNodeTree($data,$tree);

printTree($tree);

如何使用PHP实现无限级分类

你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了。

这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了。

复制代码代码如下:

function generateTree($items){

$tree = array();

foreach($items as $item){

if(isset($items[$item['pid']])){

$items[$item['pid']]['son'][] = $items[$item['id']];

}else{

$tree[] = $items[$item['id']];

}

}

return $tree;

}

$items = array(

1 => array('id' => 1, 'pid' => 0, 'name' => '安徽省'),

2 => array('id' => 2, 'pid' => 0, 'name' => '浙江省'),

3 => array('id' => 3, 'pid' => 1, 'name' => '合肥市'),

4 => array('id' => 4, 'pid' => 3, 'name' => '长丰县'),

5 => array('id' => 5, 'pid' => 1, 'name' => '安庆市'),

);

print_r(generateTree($items));

可以看到下面打印的结果:

复制代码代码如下:

Array

(

[0] => Array

(

[id] => 1

[pid] => 0

[name] => 安徽省

[son] => Array

(

[0] => Array

(

[id] => 3

[pid] => 1

[name] => 合肥市

[son] => Array

(

[0] => Array

(

[id] => 4

[pid] => 3

[name] => 长丰县

)

)

)

[1] => Array

(

[id] => 5

[pid] => 1

[name] => 安庆市

)

)

)

[1] => Array

(

[id] => 2

[pid] => 0

[name] => 浙江省

)

)

上面生成树方法还可以精简到5行:

复制代码代码如下:

function generateTree($items){

foreach($items as $item)

$items[$item['pid']]['son'][$item['id']] = $items[$item['id']];

return isset($items[0]['son']) ? $items[0]['son'] : array();

}

上面这种无限极分类数据树形结构化的方法值得借鉴。但是我觉得这段代码实际用途并不明显啊,你想取出格式化的树形数据还是要递归啊:

复制代码代码如下:

/**

* 如何取数据格式化的树形数据

*/

$tree = generateTree($items);

function getTreeData($tree){

foreach($tree as $t){

echo $t['name'].'<br>';

if(isset($t['son'])){

getTreeData($t['son']);

}

}

}

getTreeData($tree);

php递归无限极分类怎么弄

给个函数你,调用get_category()就是一个数组格式的结果

function get_category($parent_id=0){

$arr=array();

$sql = "select * from category where parent_id=$parent_id";//查询子级数据

$result = array(a_object,b_object,,,)=sql_query($sql);//查询结果一个数组或列表格式,自己完善。

if($result){

foreach($result as $re){//循环数组

if(get_category($re.id))//如果子级不为空

$re['child'] = get_category($re.id);

$arr[] = $re;

}

return $arr;

}

PHP无限极分类,不使用递归怎么转换数据?数据信息如下图所示

你这个数据是从数据库里取出来的吗?一般的添加分类的时候就计算好level,写在数据库里,直接读取就好了。

请大家发我一个PHP无限级分类增,删,改,查的方法,谢谢了!

<?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 "<script>location.href='ok.php?act=list'</script>";

}else{

echo "<script>alert('添加失败');</script>";

}

}//如果不等于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 "<script>location.href='ok.php?act=list'</script>";

}else{

echo "<script>alert('添加失败');</script>";

}

}

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

?>

<form method="post" action="?ac=addok">

新分类名称: <input type="text" name="type_name"><br/>

当前分类:<select name="type_id" >

<option value="0">顶级分类</option>

<?php

//循环遍历分类

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 = "";

}

?>

<option value="<?php echo $res['type_id']?>"><?php echo $strpad.$res['type_name']?></option>

<?php

}

?>

</select><br />

<input type="submit" value="添加"/>

</form>

<?php

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

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

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

$res = mysql_query($sql);

?>

<table width="50%" style="font-size:12px;margin-left:20%;">

<tr><td>id</td><td>分类名</td><td>path路径</td><td>操作</td></tr>

<?php

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

<tr>

<td><?php echo $arr['type_id']?></td>

<td><?php echo $arr['type_name']?></td>

<td><?php echo $arr['type_p_id']?></td>

<td ><a href="?ac=edittype_id=<?php echo $arr['type_id'];?>">编辑</a> |

<a href="?ac=deltype_id=<?php echo $arr['type_id'];?>">删除</a></td>

</tr>

<?php

}

?>

</table>

<input type="button" value="添加" onclick="(location.href='?ac=add')">

<?php

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

$id = $_GET['type_id'];

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

$res = mysql_query($sql);

echo "<form method='post' action='?ac=edit_ok'>";

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

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

echo "新名称:<input type='text' name='n_type_name' >"."<br />";

echo "<input type='hidden' value={$arr['type_id']} name='id'/>";

}

echo "<input type='submit' value='更新'>";

echo "</form>";

}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 "<script>location.href('ok.php?act=list')</script>";

}else{

echo "<script>location.href('ok.php?act=list')</script>";

}

}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 "<script>location.href('ok.php?act=list')</script>";

}else{

echo "<script>alert('删除失败');</script>";

}

}

?>

thinkphp前台怎么输出无限极分类

最主要的是要掌握无限极分类的逻辑,那么写起来就很容易的多了

首先看数据库表:xp_cate

控制器: CateAction.class.php

<?php

class CateAction extends Action{

function index(){

$cate=M('Cate');

$list=$cate->field("id,name,pid,path,concat(path,'-',id) as bpath")->order('bpath')->select();

foreach($list as $key=>$value){

$list[$key]['count']=count(explode('-',$value['bpath']));

}

$this->assign('alist',$list);

$this->display();

}//添加栏目

function add(){

$cate=new CateModel();if($vo=$cate->create()){

if($cate->add()){

$this->success('添加栏目成功');

}else{

$this->error('添加栏目失败');

}

}else{

$this->error($cate->getError());

}

}}

?>

模型:CateModel.class.php

<?php

class CateModel extends Model{//对应数据库中的表xp_cate

protected $_auto=array(

array('path','tclm',3,'callback'),

);function tclm(){

$pid=isset($_POST['pid'])?(int)$_POST['pid']:0;

echo ($pid);

if($pid==0){

$data=0;

}else{

$list=$this->where("id=$pid")->find();

$data=$list['path'].'-'.$list['id'];//子类的path为父类的path加上父类的id

}

return $data;

}

}

?>

模板:index.html

<form action="!-URL-!/add" method="post">

请选择父级栏目:<select name="pid" size="20">

<option value="0">根栏目</option>

<volist name="alist" id="vo">

<option value="{$vo['id']}">

<for start="0" end="$vo['count']">

</for>

{$vo['name']}

</option>

</volist>

</select><br />

新的栏目名称:<input type="text" name="name" /><br />

<input type="submit" value="添加栏目" />

</form>

关于无限极添加php的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于无限极添加php 无限极应用的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did209631
更新时间:2023-05-03   阅读:20次

上一篇: php本月最后一天 python 当月最后一天

下一篇:php模拟网页点击 php网页制作实例

最新资料更新

  • 1.nginx隐藏.php nginx隐藏ip
  • 2.php手机端开发框架 php app开发框架
  • 3.php判断多个数字 php判断字符串是否为数字
  • 4.PHP网站防止挂马 php防止直接访问
  • 5.phpsql添加记录 php数据表里怎么添加数据
  • 6.php设备判断在线 php判断用户在线状态
  • 7.PHP画饼图动态 python 动态饼图
  • 8.php获取数组坐标 php获取数组的值
  • 9.php在线直播详解 php直播用的什么技术
  • 10.php可代替js吗 php可以代替js吗
  • 11.php编程实验总结 php简单实训项目
  • 12.php实例上传txt代码的简单介绍
  • 13.php变量获取图片 php调用图片
  • 14.php显示json php显示客户端ip和服务器ip
  • 15.php网站后台demo php后端模板
  • 16.zendphp环境包 win环境包
  • 17.php交叉报表 ureport 交叉报表
  • 18.数组对象转为数组php 对象数组转string
  • 19.php获取服务器环境 php获取服务器状态
  • 20.php提取数组转map php 数组转xml

CopyRight:2016-{hedonghua:year}{hedonghua:sitegs} 备案ICP:湘ICP备09009000号-16 {hedonghua:sitejym}
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]