2013-02-13 38 views
2

我有一个漫画网站目前可以让用户选择他们按类别查看哪些漫画:图表,办公,生活,杂项等PHP MySQL的标记

我想实现一个标签系统,类似到我们在这里的StackOverflow,它将描述每个漫画的更多内容而不是它的类别。例如:在图表类,我有几个业务相关的...

我简单的解决办法是处理它只是我是如何处理我categorization-

  1. 与标签识别创建一个“标签”表, tagname,tagdescription
  2. 在漫画表中添加tagid_ForeignKey字段,并为每个帖子添加一个标签。
  3. 当用户点击一个标签时,它将只显示那些带有该标签的帖子......或者如果还有指定的类别,它将显示该特定标签的特定类别。

这种方法,但是,在我看来,限制每个类别一个标签。如果我有一个漫画是商业和关系相关的......所以它需要这两个标签。

我将如何能够附加每个漫画多个标签?


编辑:

几个问题:

1)什么我插入我的新关系表...什么?

2)此外,对于while ($row = $tag->fetch_assoc()) {,如果有连接,我如何循环访问表?这不是一个关联数组吗?

3)问题是我回应标签的选择,所以一旦用户点击一个链接,你将如何允许他们然后点击另一个链接分配第二个标签?

enter image description here

function getTags() { 
include 'dbconnect.php'; 
global $site; 

$tag = $mysqli->query("SELECT tagid, tagname FROM tags"); 
//$tag = $mysqli->query("SELECT * FROM comics c INNER JOIN comictags ct ON (c.comicID = ct.comicID) WHERE ct.tag_id IN (1, 2, 3) GROUP BY c.comic_id"); 

mysqli_close($mysqli); 

while ($row = $tag->fetch_assoc()) {   
    echo "<a href='?action=homepage&site=" . $site . "&tag=" . $row['tagid'] . "&tagname=" . $row['tagname'] . "'/>" . $row['tagname'] . "</a><br />"; 
    } 

} 

回答

6

只需添加另一个表。然后你有三个:标签一个,漫画一个,关系一个。你必须有这个间接表来正确存储一个多对多的关系。这允许每个漫画具有零个或多个标签(反之亦然)。

+0

你能详细说一下“间接表”吗?这只是一张普通桌子吗?我如何设置? – Growler 2013-02-13 14:45:46

+0

@Growler耶只是一张普通的桌子。对于“间接”这个词没有什么特别的含义,它只是意味着标签和漫画不能将*直接映射到彼此,而是直接映射到这张表中。就像'CREATE TABLE ComicTags(ctID int unsigned not null auto_increment primary key,comID int unsigned not null,tagID int unsigned not null)' – 2013-02-13 14:49:53

+0

好吧,谢谢你...你有我的查询将如何看待的例子?并且,你能看到我上面的编辑吗?我有另一个问题 – Growler 2013-02-16 23:45:31

1

您可以通过多对多的关系来完成此操作。一个多一对多关系使用了关系连接表是这样的:

+---------------+---------------+ 
| comic_id |  tag_id | 
+---------------+---------------+ 
|  1  |  2  | 
+---------------+---------------+ 
|  1  |  3  | 
+---------------+---------------+ 
|  1  |  4  | 
+---------------+---------------+ 

现在,在您的查询:

SELECT * FROM comics c INNER JOIN comic_tags ct ON (c.comic_id = ct.comic_id) WHERE ct.tag_id IN (1, 2, 3) GROUP BY c.comic_id 

其中,1,2,3是用户选择的标签他们希望看到。

+0

好的,谢谢你......但你能看到我上面的编辑吗?我有一个问题 – Growler 2013-02-16 23:44:54

+0

对我更新的问题有任何想法? – Growler 2013-02-18 20:51:55