PHP实现无限极分类图文教程

  一般来说实现无限极分类都是使用递归或者迭代的方式,小伙伴们看下本文的实现方式吧。

  1,数据库设计:

PHP实现无限极分类图文教程

PHP实现无限极分类图文教程

  2,代码:

复制代码 代码如下:
/**

  * @author koma

  * @todo   PHP无限极分类

  */ $cn = mysql_connect('localhost', 'root', '') or die(mysql_error());

  mysql_select_db('t', $cn) or die(mysql_error());

  mysql_query('set names utf8');

  /**

  * 从顶层逐级向下获取子类

  * @param number $pid

  * @param array $lists

  * @param number $deep

  * @return array

  */ function getLists($pid = 0, &$lists = array(), $deep = 1) {

  $sql = 'SELECT * FROM category WHERE pid='.$pid;

  $res = mysql_query($sql);

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

  $row['catename'] = str_repeat('   ', $deep).'|---'.$row['catename'];

  $lists[] = $row;

  getLists($row['id'], $lists, ++$deep); //进入子类之前深度+1         --$deep; //从子类退出之后深度-1     }

  return $lists;

  }

  function displayLists($pid = 0, $selectid = 1) {

  $result = getLists($pid);

  $str = '<select>';

  foreach ( $result as $item ) {

  $selected = "";

  if ( $selectid == $item['id'] ) {

  $selected = 'selected';

  }

  $str .= '<option '.$selected.'>'.$item['catename'].'</option>';

  }

  return $str .= '</select>';

  } /**

  * 从子类开始逐级向上获取其父类

  * @param number $cid

  * @param array $category

  * @return array:

  */ function getCategory($cid, &$category = array()) {

  $sql = 'SELECT * FROM category WHERE id='.$cid.' LIMIT 1';

  $result = mysql_query($sql);

  $row = mysql_fetch_assoc($result);

  if ( $row ) {

  $category[] = $row;

  getCategory($row['pid'], $category);

  }

  krsort($category); //逆序,达到从父类到子类的效果     return $category;

  }

  function displayCategory($cid) {

  $result = getCategory($cid);

  $str = "";

  foreach ( $result as $item ) {

  $str .= '<a href="'.$item['id'].'">'.$item['catename'].'</a>>';

  }

  return substr($str, 0, strlen($str) - 1);

  }

  echo displayLists(0, 3);

  echo displayCategory(13);

  3,效果图:

PHP实现无限极分类图文教程

  是不是很简单呢,小伙伴们可以直接拿去用哈,不收版权费^_^