来自 计算机教程 2019-07-20 07:30 的文章
当前位置: 美洲杯冠军竞猜 > 计算机教程 > 正文

PHP递归写入MySQL实现无限级分类数据操作示例美洲

本文实例讲述了PHP递归写入MySQL实现无限级分类数据操作。分享给大家供大家参考,具体如下:

本文实例讲述了php mysql查询实现无限下级分类树输出。分享给大家供大家参考,具体如下:

PHP递归写入MySQL无限级分类数据,表结构:

这里介绍的php结合mysql查询无限下级树输出,其实就是无限分类。给各位整理了几个php无限分类的例子.

CREATE TABLE `kepler_goods_category` (
 `id` int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
 `parentid` int unsigned NOT NULL default 0 comment '父级分类ID',
 `name` varchar(255) NOT NULL default '' comment '分类名称',
 `kepler_fid` int unsigned NOT NULL default 0 comment '对应开普勒分类ID',
 `create_time` timestamp NOT NULL default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

树输出:

递归方法写入代码:

function get_array($user_id,$top=0){
global $mysql,$_G;
  $sql = "select user_id as name from `{spreads_users}`  where p1.spreads_userid='{$user_id}'";
$rows= $mysql->db_fetch_arrays($sql);
  if($top==1){
  $arr[0]['name']=$user_id;
  $arr[0]['children']=array();
  }
  $top=$top 1;
foreach ($rows as $key=>$value)
 {
     $r = get_array($value['name']); //调用函数,传入参数,继续查询下级
     $arr[0]['children'][$key]['name']= $value['username']; //组合数组
      if(is_array($r)){
      $arr[0]['children'][$key]['children']= $r[0]['children'];
      }
      $i  ;
    }
    return $arr;
  }
$list = get_array("1000",1); //调用函数1000是顶级ID
echo 'var data='.json_encode($list);
static public function addCategoryFromKepler($fid, $parentid = 0){
  $category_list = Kepler::queryGoodsCategoryList($fid); // 获取数据
  $category_list = $category_list['jd_kepler_item_querycategoriesbyfid_response'];
  if($category_list['total'] > 0){
    foreach ($category_list['categories'] as $key => $value) {
      $parentid_sub = KeplerCategory::addCategory($value['name'], $value['id'], $parentid); // 插入数据库,得到父ID
      self::addCategoryFromKepler($value['id'], $parentid_sub); // 递归
    }
  }
  return true;
}

这个是输出 Array 然后转让为 json

调用代码:

例子:

KeplerCategory::addCategoryFromKepler(0);

表结构:id字段为分类标识,name字段为分类名,father_id字段为所属父分类的id,path字段为分类路径,储存该分类祖先的集合,isdir判断是否是目录,1为是,0为否.

递归方法读取代码:

显示函数:

static public function getCategoryFormatToKepler($parentid, $format_data = array(), $parent_prefix = '', $current_prefix = ''){
  $category_list = self::getCategoryByParentid($parentid); // 根据父ID获取
  if(!empty($category_list)){
    foreach ($category_list as $key => $value) {
      $format_data = self::getCategoryFormatToKepler($value['id'], $format_data, $parent_prefix . ',' . $current_prefix, $value['kepler_fid']);
    }
  }else{
    $format_data[] = trim($parent_prefix . ',' . $current_prefix, ',');
  }
  return $format_data;
}
//$count为分类等级
sort_list($str,$fatherid,$count)
{
$rs = $this->sql->re_datas("select * from sort where father_id = fatherid");
$num = $this->sql->sql_numrows();
$i=0;
$n = 1;
while(isset($rs[$i]))
{
$name = "";
for($n = 1 ; $n < $count ; $n )
{
$name.="│ ";
}
if($i 1==$num)
{
$name.="└─".$rs[$i][name];
}
else
{
$name.="├─".$rs[$i][name];
}
if($rs[$i][isdir])
{
$str.="".$name."";
}
else
{
$str.=$name";
}
$temp = $count 1;
$str = $this->sort_list($str,$rs[$i][id],$temp);
$i ;
}
return $str;
}

调用代码:

其中$this->sql对象为sql操作类对象,re_datas()函数返回查到的数组,sql_numrows()函数返回查询到的数目.

$category_list = KeplerCategory::getCategoryFormatToKepler(0);

调用方法:

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php mysql数据库操作入门教程》、《php mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总

$sort_list = sort_list($sort_list,0,1);

希望本文所述对大家PHP程序设计有所帮助。

例子:

美洲杯冠军竞猜,您可能感兴趣的文章:

表:category

id   int   主键,自增
name    varchar    分类名称
pid    int    父类id,默认0

本文由美洲杯冠军竞猜发布于计算机教程,转载请注明出处:PHP递归写入MySQL实现无限级分类数据操作示例美洲

关键词: