作者anawak (...)
看板PHP
标题Re: [请益] 该怎麽设计目录的资料表呢!?
时间Tue Oct 22 00:30:18 2013
※ 引述《kingoface (桑原)》之铭言:
: 类似的东西,代表须要在php中想办法包html进去...
如果节点阵列都有了,html码多用几个巢状回圈就可以了。
我来讲一下更新。
假设原本是这样
1A
16
┌──┴────┐
2B
9 10C
15
┌──┼──┐ ┌─┴─┐
3D
4 5E
6 7F
8 11G
12 13H
14
要新增一个节点 K
1A
18
┌───┴───┐
2B
11 12C
17
┌──┼──┐ ┌─┴─┐
3D
4 5E
8 9F
10 13G
14 15H
16
│
6K
7
可以看出来:
1. K 的左侧号码往前推,不变。 ( 1 到 5 不变)
2. K 的右侧号码往後推,通通加 2 。 ( 原本 6 以後的数字通通加 2)
第1点因为不变动,可以不管它。第2点又可以归纳成下面新两点
1. 旁系血亲的两侧号码都加 2,例如 F, G, H, C
2. 直系血亲的右侧号码加 2,例如 E, B, A
最後再新增。
SQL:
UPDATE menu SET left = left+2, right = right+2 WHERE left > 5; //F, G, H, C
UPDATE menu SET right = right+2 WHERE left<=5 AND right > 5; //E, B, A
INSERT INTO menu SET node='K', left = 6, right = 7;
(5 这个数字可以代换成变数)
不知道是否有更好的写法?
或许那两句 UPDATE 可以用 case 或 if 合并成一句?
就算可以,阅读上应该比较不容易?
效率又会是如何呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.231.7.114
※ 编辑: anawak 来自: 61.231.7.114 (10/22 01:20)
1F:推 kingoface:好详细的介绍,感恩大大分享! 10/22 14:28