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

1 php mysql

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

是否有一个教程可以告诉我如何做到这一点,或者有人可以给我一些我可以工作的例子.

谢谢

cle*_*tus 6

假设这样的架构:

  • 发布(id,author_id,post_date,post_text);
  • 标签(id,tag_name);
  • 帖子标记(id,post_id,tag_id).

Post Tag表是从Post到Tag的多对多关系的连接表(因为Post可以有多个Tag,而Tag可以用在多个帖子上).

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

$tags = array_unique(array_map(explode(',', $POST['tags']), 'trim'));
Run Code Online (Sandbox Code Playgroud)

并且您有一个用户输入的标签数组.您可能希望进一步清理它们,例如仅允许某些字符和/或将它们转换为小写字母.

然后你的代码变成:

$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);
}
Run Code Online (Sandbox Code Playgroud)