[英]Can someone show me how I can let a member add their own tags to a question using PHP?
[英]How to let users add multiple tags using PHP and MySQL?
好的,因此我已经有了一个脚本,可以让用户输入标签,但是我想让用户输入多个用逗号分隔的标签,例如(html, css, php)
,并将每个标签存储在数据库中。
有没有可以向我展示如何执行此操作的教程,或者有人可以给我几个可以使用的示例。
谢谢
假设这样的模式:
Post Tag表是所谓的联接表,用于从Post到Tag的多对多关系(因为一个Post可以有多个Tag,并且一个Tag可以用于多个Post)。
用户在输入字段中输入用逗号分隔的标签列表:
$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);
}
通常,您对tag <-> post映射所要做的是有1个表用于标签,1个表用于帖子,然后是第三个表,用于存储它们之间的配对:
tagid tagname
-------------
1 foo
2 bar
postid posttitle
-------------
1 test
2 beep
tagid postid
-------------
1 2
2 1
2 2
将有两个帖子,其中第一个被标记为“ bar”,第二个被标记为“ foo,bar”
您可以使用PHP preg_split命令分割多个标签的字符串,然后像现在一样将每个标签保存到数据库中。
以下代码会将字符串“ html,css,php”拆分为数组[“ html”,“ css”,“ php”]:
$tag_string = "html, css, php";
$tags = preg_split("/[\s,]+/", $tag_string);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.