PHP+mysql database method to achieve unlimited classification, mysql database_PHP tutorial
WBOY
Release: 2016-07-13 10:11:49
Original
845 people have browsed it
php+mysql database method to achieve unlimited classification, mysql database
The example in this article describes the method of realizing unlimited classification in php+mysql database. Share it with everyone for your reference. The specific analysis is as follows:
This PHP unlimited classification code is relatively complete, including that the database is MySQL, with the functions of adding, deleting, editing, and moving, and also provides the database SQL table structure. The code is as follows:
Copy the code The code is as follows:
//Connect to the database
$link = mysql_connect('localhost','root','') or die(mysql_error());
mysql_select_db('class',$link)or die(mysql_error());
mysql_query("set names gbk");
//Unlimited classification library
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, 'Top node');
$this->link = $link;
$this->table = $table;
$node = array();
$results = mysql_query("select * from $this->table",$this->link);
while($node = mysql_fetch_array($results)){
$this->setnode($node['id'],$node['f_id'],$node['name']);
}
}
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){
//echo "insert into $this->table (`f_id`,`name`) values ('$pid','$name')";exit;
mysql_query("insert into $this->table (`f_id`,`name`) values ('$pid','$name')",$this->link);
}
function modnode($cid, $newname){
mysql_query("update $this->table set `name`='$newname' where `id` = $cid",$this->link);
}
function delnode($cid){
$allchilds = $this->getchilds($cid);
$sql ='';
if(emptyempty($allchilds)){
$sql = "delete from $this->table where `id` = $cid";
}else{
$sql = 'delete from '.$this->table.' where `id` in ('.implode(',',$allchilds).','.$cid.')';
}
mysql_query($sql,$this->link);
}
function movenode($cid, $topid){
mysql_query("update $this->table set `f_id`=$topid where `id` = $cid", $this->link);
}
}
//Function
function back(){
echo '';
exit;
}
//Generate select
function makeselect($array,$formname){
global $tree;
$select = '';
}
$tree = new sortclass($link,''p_newsclass`');
$op = !emptyempty($_post['op']) ? $_post['op'] : $_get['op'];
if(!emptyempty($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();
?>
It’s OK to import this database with phpmyadmin. The example code is as follows:
Copy code The code is as follows:
-- phpmyadmin sql dump
-- version 3.2.4
--
-- Host: localhost
-- Generated date: July 2, 2010 03:02
-- Server version: 5.1.41
-- php version: 5.3.1
set sql_mode="no_auto_value_on_zero";
/*!40101 set @old_character_set_client=@@character_set_client */;
/*!40101 set @old_character_set_results=@@character_set_results */;
/*!40101 set @old_collation_connection=@@collation_connection */;
/*!40101 set names utf8 */;
--
-- Database: `class`
--
-------------------------------------------------- --------
--
-- Table structure `p_newsclass`
--
create table if not exists `p_newsclass` (
`id` int(7) not null auto_increment,
`f_id` int(7) not null,
`name` varchar(255) not null,
primary key (`id`)
) engine=innodb default charset=utf8 auto_increment=10;
--
-- Transfer data in the table `p_newsclass`
--
insert into `p_newsclass` (`id`, `f_id`, `name`) values
(3, 0, 'China'),
(4, 3, 'Fujian'),
(5, 4, 'Longyan City'),
(7, 4, 'Xiamen City'),
(9, 5, 'Zhangping City');
/*!40101 set character_set_client=@old_character_set_client */;
/*!40101 set character_set_results=@old_character_set_results */;
/*!40101 set collation_connection=@old_collation_connection */;
I hope this article will be helpful to everyone’s PHP+mysql program design.
http://www.bkjia.com/PHPjc/926871.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/926871.htmlTechArticlephp+mysql database to achieve unlimited classification, mysql database This article describes the example of php+mysql database to achieve unlimited classification method. Share it with everyone for your reference. The specific analysis is as follows...
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn