如何为博客制作多个标签系统?

时间:2013-04-18 03:59:37

标签: php mysql

我的数据库设置如下:

posts
    post_id; primary_key
    title;
    content;
    date;
tags
    tag_id; primary_key
    post_id;
    tag_name;

在这篇博客中,我让用户发布自己的标签,例如YouTube。 所以我要说,我让用户在输入框中输入标签。 例如,用户类型: 猫狗食品。

我希望PHP将输入转换为数组并将其存储在数据库中。

tags

    tag_id | post_id | tag_name
        1       1       Cat
        2       1       Dog
        3       1       Food

我认为我们可以使用explode()将该字符串转换为数组。 但是,如何构建我的查询以我想要的方式存储到数据库中?

我基本上希望PHP打破每个标记,并将每个标记存储在一个单独的行中。

我正在使用while循环将每个标签拉入post btw。

2 个答案:

答案 0 :(得分:1)

使用foreach循环。即

$string= "cat,lion";
$array= explode(",",$string);
foreach($array as $tag)
{
  mysql_query("INSERT INTO tags(tag_id,post_id,tag_name) VALUES('','$post_id','$tag')"); // run query to insert into tags table. $post_id is the corresponding post_id you have.
}

答案 1 :(得分:0)

有一个不同的tags表来存储你的标签。它基本上有两列 - tag_id | tag_name。然后有一个名为post_tags的表post_id | tag_id,其中两列都有复合主键。

然后你可以在逗号上打破标记(而不是空格,以便标记可以有空格),在数组上使用explode()foreach将它们存储在{{首先是表格,然后是tags表格。

您可以在post_tags表中的tag_name上拥有唯一索引以防止重复标记,tags表中的主要复合索引将阻止任何重复的post_tags行。