Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MySQL博客标签_Php_Mysql_Tags - Fatal编程技术网

PHP MySQL博客标签

PHP MySQL博客标签,php,mysql,tags,Php,Mysql,Tags,我希望这里有人能帮助我 我目前在处理PHP和MySQL中的标记时遇到了一个小问题。到目前为止,我能够在创建新帖子时添加标签。如果实际使用特定帖子中的标记重新填充复选框列表,我面临的唯一问题是 这是我的桌子结构 帖子: 身份证| 头衔| 内容| 创建日期| 修改日期 标签: 身份证| 标签名称 张贴标签: 邮政编码| 标签号 我有一个单一的界面,可以同时管理帖子和标签。我本可以使用2个接口,但这并不高效。提交表单时,我可以很容易地将帖子和相关标签添加到相应的表中。我只想在某篇文章即将编辑时选中相关

我希望这里有人能帮助我

我目前在处理PHP和MySQL中的标记时遇到了一个小问题。到目前为止,我能够在创建新帖子时添加标签。如果实际使用特定帖子中的标记重新填充复选框列表,我面临的唯一问题是

这是我的桌子结构

帖子: 身份证| 头衔| 内容| 创建日期| 修改日期

标签: 身份证| 标签名称

张贴标签: 邮政编码| 标签号

我有一个单一的界面,可以同时管理帖子和标签。我本可以使用2个接口,但这并不高效。提交表单时,我可以很容易地将帖子和相关标签添加到相应的表中。我只想在某篇文章即将编辑时选中相关复选框

使用此SQL代码检索帖子及其所有标记,但它返回的只是一个标记,但有4个标记与此帖子关联:

SELECT * FROM (`posts`) LEFT JOIN `post_tags` ON `post_tags`.`post_id` = `posts`.`id` LEFT JOIN `tags` ON `post_tags`.`tag_id` = `blog_tags`.`id` WHERE `id` LIKE '%104%' GROUP BY `blog_posts`.`id_art` 挑选* FROM(`posts`) 在“post\u tags”上左键连接“post\u tags”。“post\u id”=`posts`.`id` 左连接“post\u tags”上的“tags”。'tag\u id`='blog\u tags`.'id` 其中'id'类似于“%104%” 按“blog\u posts”分组。“id\u艺术”` 由于这不起作用,我决定创建两个查询。一个将列出所有可用标记,另一个将列出属于post的标记,基本上执行嵌套的foreach循环。我已经取得了一些成功,这里唯一的问题是复选框被重复了4次。也就是说,同样,帖子也有一些标签,比如书籍、电影、视频和游戏,结果如下:

书 书 书 书 电影 电影 电影 电影 等等

所有列出的10个标签都是如此

<div style="overflow-y:auto; width: 350px; height: 200px;">
     <?php foreach ($blog_tags as $tag) : ?>
     <?php foreach($post_tags as $t) : ?>
          <?php echo form_checkbox('tags[]',$tag->id_tag,(!empty($blog_article) && $t->tag_id == $tag->id_tag) ? TRUE : FALSE); ?> <?php echo $tag->name_tag; ?><br />
      <?php endforeach; ?>
      <?php endforeach; ?>
</div>


有人能指出为什么代码的行为是这样的吗?谢谢

萨姆


另外,如果这太长了,很抱歉……

听起来像是SQL问题。我认为你的第二种方法最容易使用。您只需
从标记中选择*FROM tags
即可获取所有标记信息。然后
从帖子左侧选择*加入帖子上的帖子标记\u id=post\u tags.post\u id
。这将获取与此帖子关联的所有标记ID。然后,您可以将这些ID与已检索到的标记列表进行匹配。

应该:

LEFT JOIN `tags` ON `post_tags`.`tag_id` = `blog_tags`.`id`
。。。也许会改成

LEFT JOIN `tags` ON `post_tags`.`tag_id` = `tags`.`id`

我不确定什么是
blog\u标签。

为什么只有一个
就有多个
?代码将更加清晰。