如何让用户使用PHP和MySQL添加多个标记?

如何让用户使用PHP和MySQL添加多个标记?,php,mysql,Php,Mysql,好的,我已经有一个脚本可以让用户输入标记,但是我想让用户输入多个标记,这些标记用逗号分隔,例如,(html,css,php),并将每个标记存储在数据库中 有没有一个教程可以告诉我如何做到这一点,或者有人可以给我一些例子,我可以从中工作 谢谢对于标记后映射,您通常要做的是,有一个表用于标记,一个表用于帖子,然后有第三个表用于存储它们之间的配对: tagid tagname ------------- 1 foo 2 bar postid posttitle -----------

好的,我已经有一个脚本可以让用户输入标记,但是我想让用户输入多个标记,这些标记用逗号分隔,例如,
(html,css,php)
,并将每个标记存储在数据库中

有没有一个教程可以告诉我如何做到这一点,或者有人可以给我一些例子,我可以从中工作


谢谢

对于标记后映射,您通常要做的是,有一个表用于标记,一个表用于帖子,然后有第三个表用于存储它们之间的配对:

tagid tagname
-------------
1     foo
2     bar

postid posttitle
-------------
1      test
2      beep

tagid postid
-------------
1     2
2     1
2     2

将有两个贴子,其中第一个贴子标记为“bar”,第二个贴子标记为“foo,bar”

通常,对于标记贴子映射,您要做的是有一个表用于标记,一个表用于贴子,然后是第三个表用于存储它们之间的配对:

tagid tagname
-------------
1     foo
2     bar

postid posttitle
-------------
1      test
2      beep

tagid postid
-------------
1     2
2     1
2     2

将有两个贴子,其中第一个贴子标记为“bar”,第二个贴子标记为“foo,bar”

假设模式如下:

  • 帖子(id、作者id、帖子日期、帖子文本)
  • 标签(id、标签名称)
  • Post标签(id、Post\U id、Tag\U id)
Post标记表是Post-to-Tag的多对多关系的连接表(因为一篇文章可以有多个标记,一个标记可以用于多篇文章)

用户在输入字段中输入由逗号分隔的标签列表:

$tags = array_unique(array_map(explode(',', $POST['tags']), 'trim'));
用户输入了一组标签。您可能需要进一步清理它们,比如只允许某些字符和/或将它们转换为小写

然后您的代码变成:

$post_id = ...
foreach ($tats as $tag) {
  $tag = mysql_real_escape_string($tag);
  $sql = <<<END
INSERT INTO PostTag (post_id, tag_id)
VALUES ($post_id, (SELECT id FROM Tag WHERE tag_name = '$tag'))
END;
  mysql_query($sql);
}
$post\u id=。。。
foreach($tats作为$tag){
$tag=mysql\u real\u escape\u字符串($tag);

$sql=假设模式如下:

  • 帖子(id、作者id、帖子日期、帖子文本)
  • 标签(id、标签名称)
  • Post标签(id、Post\U id、Tag\U id)
Post标记表是Post-to-Tag的多对多关系的连接表(因为一篇文章可以有多个标记,一个标记可以用于多篇文章)

用户在输入字段中输入由逗号分隔的标签列表:

$tags = array_unique(array_map(explode(',', $POST['tags']), 'trim'));
您有一个用户输入的标签数组。您可能需要进一步清理它们,比如只允许某些字符和/或将它们转换为小写

然后您的代码变成:

$post_id = ...
foreach ($tats as $tag) {
  $tag = mysql_real_escape_string($tag);
  $sql = <<<END
INSERT INTO PostTag (post_id, tag_id)
VALUES ($post_id, (SELECT id FROM Tag WHERE tag_name = '$tag'))
END;
  mysql_query($sql);
}
$post\u id=。。。
foreach($tats作为$tag){
$tag=mysql\u real\u escape\u字符串($tag);

$sql=您可以使用PHP命令拆分多个标记的字符串,然后像现在一样将每个标记保存到数据库中

下面的代码将字符串“html,css,php”拆分为一个数组[“html”,“css”,“php”]:


您可以使用PHP命令拆分多个标记的字符串,然后像现在一样将每个标记保存到数据库中

下面的代码将字符串“html,css,php”拆分为一个数组[“html”,“css”,“php”]:


问题不是关于规范化,而是如何使用CSV输入进行规范化?我想了解更多如何让用户添加多个标记并将它们分开并存储。我已经设计了数据库。啊。在这种情况下,
explode()
可能是解析字符串的最简单方法。问题不是关于规范化,而是如何使用CSV输入进行规范化?我想了解更多如何让用户添加多个标记并将它们分开并存储。我已经设计了数据库。啊。在这种情况下,
explode()
可能是解析字符串的最简单方法。