Welcome to the website navigation,本站只接受合法正规的企业网站,欢迎站长们提交你的网站获得展示和流量有任何问题请联系站长,欢迎大家加入本站。

                
提交网站
  • 网站:76083
  • 待审:5
  • APP:577
  • 文章:304416
  • 会员:56004
文字内链包年1000元 文字内链包年1000元 文字内链包年1000元 AI办公网站 AI绘画工具 AIchat

名站网址导航为大家免费提供关于网站编程方面的知识。

PhP防止刷新重复提交页面的示例具体相关代码如下9GiAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

9GiAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

  • 本篇文章的具体介绍如下请大家仔细看

项目思路分析:一个PhP项目要用到分类,但不确定分几级,所以就想做成无限级分类。
一开始想是按以前一样,数据库建4个值,如下:
id: 自增   |   pid: 父类ID   |  xid: 排序ID   |  classname: 分类名称
后来想到这种在读取数据时和修改时比较不方便,而且在产品读取时尤其不便,于时改成了以下的方案:
在Mysql的表中新增了一个字段,现数据库如下:
表名 w_faqclass:   id: 自增   |   pid: 父类ID   |  xid: 排序ID   |  classname: 分类名称  |  rank:  等级
定义:
一级分类,pid 为 0 ,rank 为"/"
二级分类,pid 为 一级分类的id,rank 为"/一级分类的id/"
三级分类,pid 为 二级分类的id,rank 为"/一级分类的id/二级分类的id/"
依此类推...
1. 基础函数    
9GiAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

/*利于递归返回已经进行了排序的无限级分类的数组不想用递归的话也可以用 like 来获取后再进行排序,我比较懒,就不写那种获取方式了,其实用 like 更好,推荐用那种方式$datatable    : 数据表名$startid    : 开始父类ID$wheretColumns  :父类列名$xColumns    : 排序列名$xtype      : 排序方式$returnArr    : 返回数组*/function ReadClass($datatable,$startid,$xtype,$returnArr){  $db    =  $datatable;  $sid  =  $startid;  $xtype  =  $xtype;  $lu    =  $returnArr;     $sql  =  "select * from `".$db."` where `pid`='".$sid."' order by xid ".$xtype.";";  $cresult=  mysql_query($sql);  if(mysql_num_rows($cresult)>0){    while($rs = mysql_fetch_array($cresult)){      $lunum = count($lu);      $lu[$lunum]['id']    =  $rs['id'];      $lu[$lunum]['pid']    =  $rs['pid'];      $lu[$lunum]['rank']    =  $rs['rank'];      $lu[$lunum]['classname']=  $rs['classname'];      $lu[$lunum]['xid']    =  $rs['xid'];             $lu            =  ReadClass($db,$rs['id'],$xtype,$lu);    }  }  return $lu;}/*查询某表中的某个值,只会返回一个值$datatable    : 数据表名$wherevalue    : 条件值$selectColumns  : 查询列名$whereColumns  : 条件列*/function SelectValue($datatable,$wherevalue,$selectColumns,$whereColumns){  $sql  =  "select `".$selectColumns."` from `".$datatable."` where `".$whereColumns."`='".$wherevalue."';";  $result  =  mysql_query($sql);  while($rs = mysql_fetch_array($result)){    return $rs[$selectColumns];  }}

2. 增加分类 (直接做到了select中用于选择 )    
9GiAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

<?php  $classArr = ReadClass('w_faqclass','0','asc',array());  $canum = count($classArr);     echo "<select name='pid'>";  echo "<option value='0'>主分类</option>";  for($i=0; $i<$canum; $i  ){    $rankArr = split("/",$classArr[$i]['rank']);    $ranknum = count($rankArr);    $t = "";    for($j=1; $j<$ranknum; $j  ){ //用于格式化显示子类      $t .= "├┄┄";    }    echo "<option value='".$classArr[$i]['id']."'>".$t.$classArr[$i]['classname']."</option>";  }  echo "</select>"?>  //保存时的操作,需要判断是否为主分类,当为主类时, rank 值设为 ///查询父类的 rank 值,用父类的 rank 加上 父类的 id 值if($pid != 0){  $pidrank = SelectValue('w_faqclass',$pid,'rank','id');   $rank = $pidrank.$pid."/";}else{  $rank = "/";  }

3. 修改分类    
9GiAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

<?php  /*  特别注意,因为是修改,在此页面加载时已将当前分类的所有值读出来了,对应是:$pid,$rank  */  $classArr = ReadClass('w_faqclass','0','asc',array());  $canum = count($classArr);  echo "<select name='pid'>";  echo "<option value='0'>主分类</option>";   for($i=0; $i<$canum; $i  ){    // 因为是修改,所以当前分类不能选择自身或自身以下的分类,多加个 rank 值的优势啊,哈哈,以前做单pid值的时候这里还得用次递归查询    while($ids == $classArr[$i]['id'] || strstr($classArr[$i]['rank'],$rank.$ids."/")){      $i  ;    }         $rankArr = split("/",$classArr[$i]['rank']);    $ranknum = count($rankArr);    $t = "";    for($j=1; $j<$ranknum; $j  ){      $t .= "├┄┄";    }    if($pid == $classArr[$i]['id']){      $selected = "selected";      }else{      $selected = "";    }    echo "<option value='".$classArr[$i]['id']."' ".$selected.">".$t.$classArr[$i]['classname']."</option>";  }  echo "</select>"?> // 保存时的操作// 要做到改动时该分类的所有子分类rank值都需要变动,选取得原来子分类通用到的 rank 值,也就是该分类的 rank值加上它的ID值// 利于 mysql 的REPLACE语句进行替换if($pid != 0){  $pidrank = SelectValue('w_faqclass',$pid,'rank','id');  $rank = $pidrank.$pid."/";}else{  $rank = "/";  }$orank = SelectValue('w_faqclass',$ids,'rank','id').$ids."/";$nrank = $rank.$ids."/";   mysql_query("UPDATE `w_faqclass` SET rank = REPLACE(rank,'".$orank."','".$nrank."');");mysql_query("UPDATE `w_faqclass` SET `classname`='".$classname."',`xid`='".$xid."',`pid`='".$pid."',`rank`='".$rank."' where `id`='".$ids."';");

4. 删除和查询就简单了,这个就不赘述了,提到一点,记得在删除前确认下该类下面是否存在子类就可以了。
9GiAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

$zid = SelectValue('w_faqclass',$ids,'id','pid'); if($zid>0){  ...}

以上就是php mysql实现无限极分类的方法,希望对大家的学习有所帮助。9GiAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

相关文章推荐:9GiAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

1.mysql查看最大连接数和修改mysql数据库最大连接数方法9GiAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

9GiAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

2.mysql group by分组取每组前几条记录加order by排序9GiAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

9GiAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

3.深入理解PhP内核(二)之SAPI探究9GiAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

9GiAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

4.在PhP中使用FastCGI解析漏洞及修复方案9GiAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

9GiAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

5.php实现处理输入转义字符的具体相关代码如下9GiAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

9GiAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

关于网站编程方面的知识就说道这里了,希望能够对大家有作用。,php mysql实现无限级分类 ,mysql

分享到:

  admin

注册时间:

网站:0 个   APP:3 个  文章:0 篇

  • 76083

    网站

  • 577

    APP

  • 304416

    文章

  • 56004

    会员

赶快注册账号,推广您的网站吧!
文章分类
热门网站
最新入驻APP小程序

宝贝市场2023-02-08

宝贝市场——买手和卖家商品展示

夺宝助手2023-02-08

夺宝助手小程序,查看每日快夺宝平

查诚信2023-02-08

查诚信是一款免费的商业查询工具

车价天天报2023-02-08

快速连接汽车销售,获知汽车最新报

考勤助理小程序2023-02-08

上班签到考勤,实时定位,后台轻松

汽车报价大全查询2023-02-08

汽车报价大全查询提供最新汽车市