【问题标题】:PHP & MySQL - how to display categories and sub categories logicPHP & MySQL - 如何显示分类和子分类逻辑
【发布时间】:2011-04-27 07:02:54
【问题描述】:

我想知道使用 PHP 和 MySQL 显示所有类别以及子类别和子类别等的逻辑是什么?

一个简短的例子会很有帮助,谢谢。

这是我的 MySQL 数据库结构。

id  parent_id   category                            url                                             depth
2   0           Arts & Ent                      ?cat=arts-and-entertainment                0
4   0           Automotive & Trans              ?cat=automotive-and-transportation         0
6   0           Business & Finance              ?cat=business-and-finance                  0

【问题讨论】:

  • 嗨,首先请详细描述您的问题..以及您想在哪里显示此类别和子类别..?在组合框或其他地方..?
  • 组合框是<select></select>
  • 不,我根本没有使用组合框
  • @prodigitalson 好的,我在找什么?

标签: php mysql


【解决方案1】:

请参阅managing hierarchical data in MySQL 以获取获取类别的查询示例。不过,您不会对这个平面表走得太远,您必须运行多个查询才能获得未知深度的完整列表。我链接的文章中有很好的选择,所以如果可以更改数据库结构 - 我真的建议你这样做。

【讨论】:

  • 我的表结构怎么不好,到底有什么问题?
  • 阅读我链接的文章。这个最简单的Adjacency List Model 在它的最顶部描述了它的所有限制。我只提到了最大的问题:如果树的深度是动态的,则无法通过单个查询获得完整的类别树。还有其他问题。
【解决方案2】:

Storing Hierarchical Data in a Database 是对我发现的在数据库中存储分层数据的最有效方法的最佳解释。

另外,考虑使用与 ORM 集成的嵌套集合库,例如 Propel。 (请参阅 Propel 中的 NestedSet Behavior。)

【讨论】:

  • 我的表结构怎么不好,到底有什么问题?
  • 它与查找速度有关。当你去写你的库时,像“获取所有祖先”和“计算祖先”这样的调用是低效的,只需要一个父 ID。我很欣赏你的问题。我已经实现了两种方式。左/右解决方案更容易。
  • 那么最佳结构是什么?
  • 左/右模式最适合查找。写入成本很高(因为您必须重新索引整个表)。什么是最佳的实际上取决于您将在它们上运行的特定操作。他们主要是阅读吗?
  • 另外,您预计会有多少关卡? 3? 4? 10?如果它只有 2,你可以摆脱父 id。它更容易实现,并且使用选择框,您可以使用选择组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-09
  • 1970-01-01
  • 2014-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多