主頁(yè) > 知識(shí)庫(kù) > php+mysql實(shí)現(xiàn)的無(wú)限分類方法類定義與使用示例

php+mysql實(shí)現(xiàn)的無(wú)限分類方法類定義與使用示例

熱門標(biāo)簽:地圖標(biāo)注符號(hào)樣式有 廈門400電話辦理選易號(hào)網(wǎng) 公司外呼系統(tǒng)中心 天客通地圖標(biāo)注 菏澤語(yǔ)音外呼系統(tǒng)運(yùn)營(yíng)商 臨沂crm外呼系統(tǒng)平臺(tái) 如何在世界地圖標(biāo)注 電子地圖標(biāo)注怎么修改 梧州市機(jī)器人外呼系統(tǒng)怎么樣

本文實(shí)例講述了php+mysql實(shí)現(xiàn)的無(wú)限分類方法類定義與使用。分享給大家供大家參考,具體如下:

創(chuàng)建數(shù)據(jù)庫(kù)以及表

 CREATE DATABASE `sortclass`DEFAULT CHARSET utf8;
 CREATE TABLE IF NOT EXISTS `class` (
 `cid` mediumint(8) unsigned NOT NULL auto_increment,
 `pid` mediumint(8) unsigned NOT NULL,
 `cname` varchar(50) NOT NULL,
 PRIMARY KEY (`cid`),
 KEY `pid` (`pid`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

header("Content-type: text/html; charset=utf-8");
//連接數(shù)據(jù)庫(kù)
$link = mysql_connect('localhost','root','eric') or die(mysql_error());
mysql_select_db('sortclass',$link);
//無(wú)限分類類庫(kù)
class SortClass{
 var $data = array();
 var $child = array(-1=>array());
 var $layer = array(-1=>-1);
 var $parent = array();
 var $link;
 var $table;
 function SortClass($link, $table){
  $this->setNode(0, -1, '頂極節(jié)點(diǎn)');
  $this->link = $link;
  $this->table = $table;
  $node = array();
  $results = mysql_query('select * from '.$this->table.'',$this->link);
  while($node = mysql_fetch_assoc($results)){
   $this->setNode($node['cid'],$node['pid'],$node['cname']);
  }
 }
 function setNode ($id, $parent, $value){
  $parent = $parent?$parent:0;
  $this->data[$id] = $value;
  $this->child[$id] = array();
  $this->child[$parent][] = $id;
  $this->parent[$id] = $parent;
  $this->layer[$id] = !isset($this->layer[$parent])? 0 : $this->layer[$parent] + 1;
 }
 function getList ($tree, $root= 0){
  foreach ($this->child[$root] as $key=>$id){
   $tree[] = $id;
   if ($this->child[$id]) $this->getList($tree, $id);
  }
 }
 function getValue ($id){return $this->data[$id];}
 function getLayer ($id, $space = false){
  return $space?str_repeat($space, $this->layer[$id]):$this->layer[$id];
 }
 function getParent ($id){return $this->parent[$id];}
 function getParents ($id){
  while ($this->parent[$id] != -1){
   $id = $parent[$this->layer[$id]] = $this->parent[$id];
  }
  ksort($parent);
  reset($parent);
  return $parent;
 }
 function getChild ($id){return $this->child[$id];}
 function getChilds ($id = 0){
  $child = array($id);
  $this->getList($child, $id);
  return $child;
 }
 function addNode($name,$pid){
  mysql_query("insert into $this->table (`pid`,`cname`) values ('$pid','$name')",$this->link);
 }
 function modNode($cid, $newName){
  mysql_query("update $this->table set `cname`='$newName' where `cid` = $cid",$this->link);
 }
 function delNode($cid){
  $allChilds = $this->getChilds($cid);
  $sql ='';
  if(empty($allChilds)){
   $sql = "delete from $this->table where `cid` = $cid";
  }else{
   $sql = 'delete from '.$this->table.' where `cid` in ('.implode(',',$allChilds).','.$cid.')';
  }
  mysql_query($sql,$this->link);
 }
 function moveNode($cid, $topid){
  mysql_query("update $this->table set `pid`=$topid where `cid` = $cid", $this->link);
 }
}
//函數(shù)
function back(){
 echo 'script language="JavaScript">window.location.href="test.php?" rel="external nofollow" +new Date().getTime();/script>';
 exit;
}
//聲成select
function makeSelect($array,$formName){
 global $tree;
 $select = 'select name="'.$formName.'">';
 foreach ($array as $id){
  $select.='option value="'.$id.'">'.$tree->getLayer($id, '|-').$tree->getValue($id)."/option>";
 }
 return $select.'/select>';
}
$tree = new SortClass($link,'`class`');
$op = !empty($_POST['op']) ? $_POST['op'] : $_GET['op'];
if(!empty($op)){

 if($op=='add'){
  $tree->addNode($_POST['cname'],$_POST['pid']);
  back();
 }

 if($op=='mod'){
  $tree->modNode($_POST['cid'],$_POST['cname']);
  back();
 }

 if($op=='del'){
  $tree->delNode($_GET['cid']);
  back();
 }

 if($op=='move'){
  $tree->moveNode($_POST['who'],$_POST['to']);
  back();
 }
}
$category = $tree->getChilds();
?>
 style type="text/css">
  body{font-size:12px;}
  ul{list-style:none;}
  a{cursor:pointer;}
 /style>
 script language="javascript">
  function $(e){return document.getElementById(e);}
  function mod(cid){
   $('cid').value=cid;
   $('op').value='mod';
   $('name').style.border='1px solid red';
  }
 /script>
 form action="test.php" method="post">
  名稱:input type="text" id="name" name="cname" /> 添加到:?=makeSelect($category,'pid')?>br />
  input type="hidden" id="op" name="op" value="add" />
  input type="hidden" id="cid" name="cid" />
  input type="submit" value="Submit" />
 /form>
 h3>移動(dòng)分類/h3>
 form action="test.php" method="post">
  ?=makeSelect($category,'who')?>移動(dòng)到:?=makeSelect($category,'to')?>
  input type="hidden" id="op" name="op" value="move" />
  input type="submit" value="Submit" />
 /form>
 ul>
?php
foreach ($category as $id){
 echo 'li>'.$tree->getLayer($id, '|- ').$tree->getValue($id).' a href="test.php?op=delcid='.$id.'" rel="external nofollow" >Del/a> a onclick="mod('.$id.')">Edit/a> /li>';
}
?>
/ul>

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php+mysql數(shù)據(jù)庫(kù)操作入門教程》、《php+mysqli數(shù)據(jù)庫(kù)程序設(shè)計(jì)技巧總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • PHP+Mysql樹(shù)型結(jié)構(gòu)(無(wú)限分類)數(shù)據(jù)庫(kù)設(shè)計(jì)的2種方式實(shí)例
  • php+mysql實(shí)現(xiàn)無(wú)限分類實(shí)例詳解
  • 實(shí)現(xiàn)PHP+Mysql無(wú)限分類的方法匯總
  • php+mysql數(shù)據(jù)庫(kù)實(shí)現(xiàn)無(wú)限分類的方法
  • php+mysql實(shí)現(xiàn)無(wú)限級(jí)分類 | 樹(shù)型顯示分類關(guān)系
  • php+mysql查詢實(shí)現(xiàn)無(wú)限下級(jí)分類樹(shù)輸出示例
  • php+mysql不用遞歸實(shí)現(xiàn)的無(wú)限級(jí)分類實(shí)例(非遞歸)
  • php+mysql實(shí)現(xiàn)無(wú)限級(jí)分類
  • PHP遞歸寫入MySQL實(shí)現(xiàn)無(wú)限級(jí)分類數(shù)據(jù)操作示例

標(biāo)簽:白城 貴陽(yáng) 黃石 迪慶 瀘州 綿陽(yáng) 郴州 雞西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php+mysql實(shí)現(xiàn)的無(wú)限分類方法類定義與使用示例》,本文關(guān)鍵詞  php+mysql,實(shí)現(xiàn),的,無(wú)限,分類,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php+mysql實(shí)現(xiàn)的無(wú)限分類方法類定義與使用示例》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于php+mysql實(shí)現(xiàn)的無(wú)限分類方法類定義與使用示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章