当前位置:首页 > 日记 > 正文

基于PHP无限分类的深层理解

基于PHP无限分类的深层理解
无限分类是实际发展中经常用到的一种数据结构,一般称为树型结构。
问题:类似于淘宝的商品分类,你可以在任何范畴建立自己的子类。

1。创建类型数据表
自我成长
int(11)缺省(0),父节点ID
`名字` varchar(50),分类名称
复制代码代码如下所示:
创建表(类型)
` ID ` int(11)不为空auto_increment,
` FID ` int(11)不为空的默认'0',
`名字` varchar(50)不为空,
主键(id)


两。添加
让我们先添加几个顶级分类
复制代码代码如下所示:
插入`型`(` ID `,` FID `,`名字`)值(null,'0 ','手机');
插入`型`(` ID `,` FID `,`名字`)值(null,'0 ','计算机');
插入`型`(` ID `,` FID `,`名字`)值(null,0、鞋子);
插入`型`(` ID `,` FID `,`名字`)值(null,0、衣服);

这里的FID = 0是顶级分类。

然后我们添加一些类别的{机}
复制代码代码如下所示:
插入`型`(` ID `,` FID `,`名字`)值(null,2、桌面),(空的,2、笔记本);

在这里,FID = 2, 2,这个ID是一个ID分类{电脑},如果它是一个亚纲的{鞋},FID = 3
以同样的方式,我们添加{笔记本} FID = 6分型
复制代码代码如下所示:
插入`型`(` ID `,` FID `,`名字`)值(null,'6 ','ausu '),(null,6');

三。删除
如果我们想删除这个类别,它非常简单。
复制代码代码如下所示:
从'类型'中删除id = 6

{笔记本}的子类也要记得做相应的处理
复制代码代码如下所示:
函数del($ FID){
从类型中选择*;
RS = mysql_query美元($ SQL);

($ i = 0;$ i <计数($ RS);$ + +){
为SQL =删除`型`哪里` ID ` = { {我} { RS美元美元'id' } };
mysql_query($ SQL);

德尔($ RS { 'id' }); / /递归
}
}
del(6); /操作

在这里,您可能想知道为什么使用递归这么麻烦,而不是直接删除它。
复制代码代码如下所示:
从类型中删除6

所以我们不能直接删除{ ausu },{惠普}但假设{ }有ausu亚纲{ }和{ } A1,A1 A2 } {有次范畴化,我们不能够删除数据完全没有递归。

三。仰望
1。{ }的计算机分型
复制代码代码如下所示:
从类型中选择*= 2

2。找到所有的子{机}
复制代码代码如下所示:
函数SEL($ FID){
从类型中选择*;
RS = mysql_query美元($ SQL);

($ i = 0;$ i <计数($ RS);$ + +){
echo RS { $我} { 'name' };

SEL(RS {我} {美元美元'id' }); / /递归
}
}
Sel(2);

四。实际数据的应用
一场` TID `添加到数据表的ID记录分类`型`表字段值。它必须是身份证不可的名字,因为名字的改变值。
例如,查询属于类别{计算机}的商品
复制代码代码如下所示:
SELECT * FROM `货物`哪里` TID ` = 2

注意:代码可能没有运行就错了,但是思路是正确的,主要的是要了解树形结构,不要记住代码。

相关文章

防止本地用户使用fsockopenDDoS攻

防止本地用户使用fsockopenDDoS攻

用户,对策,电脑软件,fsockopenDDoS,原因 PHP脚本部分源代码: 复制代码代码如下所示: $ FP = fsockopen(UDP: / / 美元的IP 如果($ FP){ fwrite(FP美元,美元); Fclose($ FP); 在PHP脚本的fsockopen函数,到外部地址,发送大量的数据包通过UDP互相攻击。 回…

mysql数据库优化汇总

mysql数据库优化汇总

数据库优化,电脑软件,mysql,1。优化MySQL查询缓存 高速查询缓存可以通过MySQL服务器上的查询来实现,后台数据库引擎是提高性能的最有效的方法之一,当同一个查询执行多次时,如果从缓存中提取结果,则速度非常快。 但是主要的问题是它很容易隐藏,以…

在Win8的服务程序打开Win8服务窗口

在Win8的服务程序打开Win8服务窗口

服务程序,服务,溶液,窗口,电脑软件,对于新手使用Win8系统,如果你想打开或关闭一个服务,你需要打开服务,在建立进一步的程序列表,找到相应的服务。你找不到Win8;运行;程序不能输入services.msc程序,本文分享的方法运行程序,降级,盒子,打开服务窗口。 W…

MySQL取出随机数据

MySQL取出随机数据

数据,电脑软件,MySQL,他们都想使用PHP使其随机,但它似乎需要两次以上取出多个。 把手册翻过来,找到下面的语句来完成任务。 选择table_name兰德为*(5)限制; 这就是伦德在手册中所说的: (兰德) 兰德(N) 返回0到1范围内的随机浮点值。如果指定了整数…

IE8浏览器的网页在新窗口打开/打开

IE8浏览器的网页在新窗口打开/打开

浏览器,网页,开新,新窗口,标签,默认情况下,微软的IE7浏览器版本的使用,网页在新窗口打开,感觉不方便。这篇文章,网页总是在同一窗口的新标签打开方式。 在IE8的情况下,操作方法:在桌面上右键单击IE浏览器的图标,选择弹出的窗口中打开属性;互联网选…

neodvdstd是neodvdstd.exe-使用

neodvdstd是neodvdstd.exe-使用

电脑软件,neodvdstd,exe,点评:neodvdstd.exe是neoDVD录音软件相关程序,用于记录和备份您最喜爱的镜子或权力的DVD 进程文件:neodvdstd或neodvdstd.exe 进程名称:NeoDVD Module 过程类别:安全风险的过程 英文描述: neodvdstd.exeexe是一个过程,属…

玩鬼泣5的游戏会突然死机,可以听到

玩鬼泣5的游戏会突然死机,可以听到

声卡,解决方案,死机,鬼泣,游戏,问题: 玩电脑游戏,5玩鬼泣;何时会发生堵塞现象,然后,可以听到游戏的声音,只是用Ctrl + Alt + Del键切出任务管理器,然后切换回游戏,和恢复正常。我不知道怎么了玩其他游戏没有这种现象。 答案uff1a 鬼泣5游戏的上述…

深入分析了POSIX函数和过程测试PHP

深入分析了POSIX函数和过程测试PHP

函数,过程,测试,电脑软件,POSIX,复制代码代码如下所示: 回声posix_getpid(); / / 8805 睡眠(10); > 然后 # PS斧 如果此时打开浏览器请求,您会发现Apache会自动添加一些新进程 我们发现我们并不总是要求相同的过程。 重新启动Apache # / usr / /…

如果账户投诉未通过,如何要求复审

如果账户投诉未通过,如何要求复审

投诉,账户,电脑软件,如果账户投诉未通过,如何要求复审 你可以打电话给0755-86013515语音自助行和审视它根据语音提示。请参照以下图表进行操作。…

解析区别何在SQL语句中的left_join

解析区别何在SQL语句中的left_join

语句,区别,电脑软件,SQL,left_join,表A(id,type): 身份证件类型 ---------------------------------- 十一 二十一 三十二 表B(id,类): 标识类 --------------------------------- 十一 二十二 SQL语句1:选择A *,B *加入B = = 1张数据左; SQL语句2:选择…

对电子邮件附件的WinXP系统下不显

对电子邮件附件的WinXP系统下不显

文件名,系统,显示,解决方案,邮件附件,注释:在WindowsXP与SP2系统中,电子邮件附件的一部分不能显示文件名。应该怎么做这里有个好办法。有兴趣的朋友可以参考一下。 问题:在WindowsXP与SP2系统中,每次启动计算机后都显示,通用Win32进程的Win32主…

打开最后编辑的文档直接在Word2003

打开最后编辑的文档直接在Word2003

文档,编辑,电脑软件,当一个文档与Word一起工作时,它是不可能完成的,它可能需要多次编辑。但是每次重复重复最后一个文档时,它是否乏味教你一个窍门,当你打开word时,你可以直接启动最后一个编辑的文档,这样就更方便了,不需要重复上次的文档。 要启…