php - 递归检查数据库中 child 的 parent

标签 php mysql kohana parent-child

我正在开发一个 CMS 系统,它接收这样的 url:

/parent1/parent2/child/

现在很容易只检查 child ,但在我看来,您还应该检查 parent 是否正确以及顺序是否正确。问题是我不确定如何执行此操作。

我正在使用 mysql。这是该表的外观:

CREATE TABLE IF NOT EXISTS `pages` (
  `id` int(11) NOT NULL auto_increment,
  `parent` int(11) NOT NULL default '0',
  `title` varchar(255) NOT NULL,
  `deleted` tinyint(1) NOT NULL default '0',
  PRIMARY KEY  (`id`),
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

父字段保留其他页面 ID,这些 ID 将在父字段中用作父字段。

最佳答案

最好是在一个查询中检索完整的表并构建一个嵌套数组。有了 php 中的整个树结构,检查它们是否正确就容易多了。

在这个博客上有关于只有一个查询的多级菜单格式的信息:http://crisp.tweakblogs.net/blog/317/formatting-a-multi-level-menu-using-only-one-query.html

它背后的想法是你在 php 中递归地构建菜单。如果您能够更改数据库结构,您还可以查看 MPTT,即嵌套集。使用这种机制,可以更容易地遵循树中的父/子关系。缺点是插入或更新节点时 MPTT 速度较慢。更多信息:http://articles.sitepoint.com/article/hierarchical-data-database

关于php - 递归检查数据库中 child 的 parent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4021776/

相关文章:

php - 重复模式到 1024x768 php

javascript - 重新加载页面后喜欢喜欢简历

mysql 基于日期的结构

kohana - 如何在 Kohana 中获取当前请求的完整地址?

php - 在 Kohana 3 中,如何告诉表单助手停止插入 'index.php'

php - Mysql 使用 count() 进行连接查询以获取用户收藏的帖子

php - 如何将以逗号分隔的多个值输入到表中?

mysql - 为什么我不能通过 Express 从 mysql 查询中发送响应?

php - MySQL单个查询计算多个日期范围内的行数

validation - 如何对多个字段进行验证?