我有我的自定义论坛的几个链接表:categories
,sub_categories
和posts
链接表和SQL SELECT查询
基本上,我已经能够添加三个类别和五个子类别的人,当他们做出最新帖子。
我还可以让人们'听'某些类别和子类别,并让他们在页面的一侧方便访问栏。
我的表被设置从而(仅示出了用于便于relavent字段):
帖子:
id INT
category_id VARCHAR(12)
sub_category_id VARCHAR(35)
类:
id INT
name VARCHAR(20)
- 行业标准:
id INT
name VARCHAR(20)
我
posts
表
,我店通过他们的ID设置的类别和子类的格式如下:
category_id [2][4][8]
sub_category_id [1][2][3][4][5]
从而使我能够执行在PHP下面的查询和获取基于岗位在类别和子类别:
SELECT * FROM posts WHERE category_id LIKE '%[{$id}]%' AND sub_category_id LIKE '%[{$id2}]%'
我是选择sub_categories
的人“听”到访问栏问题...
$sql = "SELECT title, id FROM categories";
$query = mysql_query($sql);
$list = array();
while ($row = mysql_fetch_assoc($query)){
$list[$row['title']] = array();
$sql = "SELECT sub_categories.title FROM sub_categories, posts WHERE (category_id LIKE '%[{$row['id']}]%') AND (????) LIMIT 0,100";
$query = mysql_query($sql);
while($result = mysql_fetch_assoc($query)){
$list[$row['title']][] = $result['title'];
}
}
print_r($list);
显然你可以看到我卡在哪里(????)
,但在我解释我在做什么之前,我会解释我正在寻找的输出是什么。
当我打印$list
数组时,我希望它打印一个以类别作为第一个键的多维数组,它们的值是在主类别中已标记的子类别数组。
我遇到的问题是在邮政表的sub_category_id
字段中,请记住这些值的格式为[1][2][3]
,我需要检查该值与子类别字段id
的值。
我曾尝试以下:
"SELECT sub_categories.title FROM sub_categories, posts WHERE (category_id LIKE '%[{$row['id']}]%') AND (sub_category_id LIKE '%[sub_categories.id]%') LIMIT 0,100"
但没有奏效。我不知道我的查询中是否有错误,或者它是否应该工作,但如果有人能告诉我该怎么做,或者我的代码出错了,我将不胜感激!
注:我试图找到哪个sub_categories
出现在哪个categories
基于人们在帖子中标记他们在一起。
......我简直不敢相信。我实际上使用这个确切的解决方案来存储用户最喜欢的类别和子类别......出于某种原因,我完全忘记了它,因为我专注于问题,而不是解决方案! – 2012-03-08 14:34:11
还有一个提示:您可以为类别和子类别设置一个表格,其中包含“id”,“parent_id”(NULLABLE)和“name”列。这样,您还可以强制执行每个子类别与其父类别之间的关系。 – bfavaretto 2012-03-08 14:34:17
由于我正在建设的论坛的性质,子类别可以属于多个类别。这是漫画,动漫和日本文化,包括粉丝小说和粉丝艺术,所以基本上,有人可能喜欢漫画(即火影忍者)并写下“粉丝小说”。火影忍者也是动画片!我非常松散地使用术语“子类别”! – 2012-03-08 14:42:14