选择和浏览存储在不同表中的类别和子类别

3
我正在寻找一种解决方案,可以在将类别级别存储在单独的表中时列出和浏览类别和子类别及其记录(分类广告)。过去我使用过邻接模型,但现在我必须坚持这个数据库设置,并且对我来说是新的。我正在使用php和mysql。 该网站是按常规方式构建的分类广告网站:它在主页上有主类别列表,当您单击其中一个类别链接时,仅列出其子类别以及属于此类别的广告,以此类推,在每个级别上。 以下是我有点困惑的地方: 1.在浏览类别时,如何构造类别链接,以便脚本知道如果我考虑下面的mysql结构,则应从哪个表中选择类别?当我访问每个类别级别时,是否需要单独的参数,例如“mysite.com/?cat2=4”访问cat2表中的类别“4”,“mysite.com/?cat3=9”访问cat3表中的类别“9”以识别类别级别?如果不需要单独的参数,那么php和mysql如何知道您必须从哪个表中选择类别? 2.在这种情况下,最重要的是,构建SEO友好链接的最佳方法是什么?mysql如何知道应从哪个表中选择类别?我想使用最简单的解决方案,例如:mysite.com/electronics/television/sony。据我所知,我必须在链接中至少包含cat_id...我要放在哪里?我还需要包括级别数量吗?为了使问题更加复杂,类别名称是带有重音字符的外语(尽管我创建了一个函数,在生成类别链接时可以即时更改重音字符为拉丁字符),因此我认为最好按其ID选择它们。 3.选择某个类别的子类别的示例mysql select是什么样子? 4.如何构建面包屑导航? MYSQL结构: - 表“cat1”(主类别): cat1_id | cat1_name - 表“cat2”(子类别): cat2_id | cat1_id | cat2_name - 表“cat3”(子子类别): cat3_id | cat2_id | cat3_name - 表“ads”: ad_id | cat1_id | cat2_id | cat3_id | ad_title | ad_description 感谢您,对于这篇长篇文章,我很抱歉。
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
1

我最喜欢的类别(和标签)URL模式:

http://mysite.com/articles/brains+zombies+legs+frogs

+符号对于标签非常友好,也有利于蜘蛛(和SEO)。使用类别的文本对于蜘蛛和人类来说都很重要,因为它具有意义。

至于SQL,我建议对于任何带有类别或标签的内容使用2个表:

Categories (id, name, description)

CategoryRelationships (catID, thingID)

对于任何给定的事物,您可以通过CategoryRelationships将类别与事物连接起来。例如:

SELECT * FROM Things t
JOIN CategoryRelationships ON thingID = t.ID
JOIN Categories c ON catID = c.CatID
结果将是一个Things及其类别的列表,其中每个类别只有一个定义,并通过关系表提供一堆类别链接。 至于面包屑导航,它们是稍微不同的问题。面包屑导航可以: - 提供站点层次结构的导航 - 帮助用户重新跟踪他们的步骤 根据你所针对的面包屑类型,你需要采取不同的方法。对于简单的站点层次结构面包屑,您可以简单地解析URL并foreach遍历一组段:
http://mysite.com/people/zombies/brains/brains
解析URI将会得到以下结果:
people, zombies, brains, brains

为每个部分生成链接。


谢谢,但正如我所写的,我必须使用上述的mysql结构。 - komlos
只是举个例子:您可以根据自己的需求进行调整。您只需要为每个类别列加入一次即可。 - Bruce Alderson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,