以下是优惠壁纸代码的一部分:
...
$profile = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE id = $id"));
}
if ($profile['favourites'] != '') {
$from = (($page * $template['fav_wallpaper_limit']) - $template['fav_wallpaper_limit']);
$favourites = substr($profile['favourites'], 2);
/// Tried to join 2 tables, but favourites still displayed by wallpaper id
$sql = mysql_query("
SELECT
*
FROM
wallpapers AS w
JOIN favourites AS f on f.wallpaper_id = w.id
WHERE
w.id IN ($favourites) AND w.published = 1
ORDER BY
f.wallpaper_id LIMIT $from, $template[fav_wallpaper_limit]");
");
问题是,它通过存储在壁纸表中的 id 列显示壁纸。虽然我需要按照他们喜欢的方式展示它们。数据存储在用户表格中,并为每个用户提供收藏夹列,其中包含优惠壁纸的ID列表。
实施例: ,90,2031,1,34,460,432,...,2013;
有没有办法抓住这个tada并从中订购收藏?
答案 0 :(得分:0)
我认为您需要在PHP代码中执行此操作:
执行此类操作的常用方法是创建一个单独的表,例如user_favourites
,每个用户的每个fovourite都有一行,其中包含用户ID和收藏ID - 在这种情况下,订单因素也是如此。通过这种方式设置数据库,您可以在新的user_favourites
表上执行查询,其中user_id是用户ID,按“订购因子”排序,以一次性获得正确顺序的收藏夹。
您使用的是哪个数据库?您可能能够执行类似
的操作SELECT _whatever_
FROM favourites
WHERE favourite_id IN (SELECT favourites FROM users)
并且可能以正确的顺序返回收藏夹。我认为额外的表格方法是优越的,如果你能这样做的话。