PHP/MySQL - 简单的标签系统 - 更新文章标签链接?

发布于 2024-11-07 18:33:47 字数 527 浏览 1 评论 0原文

我想为我的新闻部分

数据库设置构建一个简单的标记系统(img 借自上一篇文章)

DB 设置类似

在我的“编辑文章”屏幕上,输入字段中现在有标签,用户可以删除或键入新标签。一切都好。

但是,当提交页面并且我得到这个标签值数组时,我想我必须根据“标签”表检查每个标签值,看看它是否存在。

有没有任何快捷方式可以做到这一点,或者是否可以通过 tag_id=>tag_value 传递?到目前为止,似乎没有一个首选 jQuery 库提供以下功能:一个两个

I want to build a simple tagging system for my news section

DB setup (img borrowed from a previous post)

DB Setup something like

On my "Edit Article" screen, there are now tags sitting in an input field and the user can delete or type new tags. All good.

But when the page is submitted and I get this array of tag values, I'm thinking that I have to check each one against the 'Tag' table to see if it exists or not.

Is there any shortcut way of doing this or is it somehow possible to pass through tag_id=>tag_value? So far none of the preferred jQuery libraries seem to offer that: one, two

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

娇女薄笑 2024-11-14 18:33:47

您还应该始终在服务器端检查提交的数据。
如果您使用 MYSQL,您可以尝试以下操作:

$sql = "SELECT a.* FROM (";
$first = true;
foreach( $submitted_tag_array as $v ) {
    $v = mysql_real_escape_string($v);
    $sql .= $first
        ? "\n\tSELECT '$v' AS tag"
        : "\n\tUNION ALL SELECT '$v'";
    $first = false;
}

$sql .= "\n) AS a"
    ."\nLEFT JOIN [tag] t ON t.tag_id = a.tag"
    ."\nWHERE t.tag_id IS NULL";

$result = mysql_query($sql);

if( $row = mysql_fetch_assoc($result) ) {
    // We found atleast one tag that doesn't exist in the database! Do something about it!
}

上面的代码假设您在提交中获得了一个 tag_id 数组。如果您改为获取标签名称,则只需更改

."\nLEFT JOIN [tag] t ON t.tag_name = a.tag"

You should always check the submitted data on the server side as well.
If you are using MYSQL, you can try this:

$sql = "SELECT a.* FROM (";
$first = true;
foreach( $submitted_tag_array as $v ) {
    $v = mysql_real_escape_string($v);
    $sql .= $first
        ? "\n\tSELECT '$v' AS tag"
        : "\n\tUNION ALL SELECT '$v'";
    $first = false;
}

$sql .= "\n) AS a"
    ."\nLEFT JOIN [tag] t ON t.tag_id = a.tag"
    ."\nWHERE t.tag_id IS NULL";

$result = mysql_query($sql);

if( $row = mysql_fetch_assoc($result) ) {
    // We found atleast one tag that doesn't exist in the database! Do something about it!
}

The above code assumes you get an array of tag_id's in the submit. If you instead get tag names, you just have to change

."\nLEFT JOIN [tag] t ON t.tag_name = a.tag"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文