我有一个漫画网站,并实现了一个类似于 StackOverflow 的标记系统。
我想通过引入 SO 风格的标记系统为用户提供更多排序选项——每个用户可以选择和删除 1 个或多个标签……每个漫画 id 都与 1 个或多个标签相关联。
目标是:
- 如果没有选择类别和标签,函数将显示所有漫画
- 如果选择类别 x,将仅显示该类别的漫画
- 如果选择类别 x 和标签 x,将显示类别 x 和标签 x 中的所有漫画
- 如果选择了 NO 类别,但选择了标签 x、y、z,则函数将仅显示与这些标签关联的漫画
我正在使用关系表来检查是否有与所选 tagid 匹配的 imgid。
所以在数据库中,为了使图像与多个标签相关联(它应该能够),我必须再次添加相同的 imgid,但使用不同的 tagid。
这是查询:
$sql =
"SELECT tbl.*, t.*
FROM $table tbl
LEFT JOIN $assocTable a ON (tbl.id = a.imgID)
LEFT JOIN $tagsTable t ON (t.tagid = a.tagID)
WHERE ";
$sql .= !empty($_SESSION[$sessiontagIDs]) ? "a.tagID IN (" . implode(', ', $_SESSION[$sessiontagIDs]). ") " : "1 = 1";
$sql .= $catquery ." " . $order;
不幸的是,这意味着漫画现在从查询中显示两次:
我的表或查询设置不正确吗?
谢谢!