我的朋友创建了一个网站,可以将页面添加到用户最喜爱的列表中。但是最近我收到很多关于从最喜欢的列表中删除一页的投诉…代码似乎有错误,有时会添加页面而不是删除页面。
更多说明:每一页都有一个特定的id,所以当添加到收藏夹时,它会添加id号,然后用逗号分隔其他号码。从收藏夹中删除页面也是一样。它搜索号码并删除…但有时不是!我不知道为什么…它告诉我“页面被成功删除”,但我没有看到它被删除,有时它会返回一些我以前删除的旧页面!请检查一下代码好吗?
这是密码

if($_REQUEST['do'] == 'delfav')
{
    $mn_Id = safe($_REQUEST['mn_Id'],true);
    $page  = 'favorite';
    if(isset($mn_Id))
    {
        $fav = explode(',' , $_SESSION['user']['Favorites']);
        if(in_array($mn_Id,$fav))
        {
            echo $ind = array_search($mn_Id , $fav);
            unset($fav[$ind]);
            $new = implode(',' , $fav);
            $ss = $db->query("UPDATE users SET Favorites = '".$new."' WHERE Id = '".$_SESSION['user']['Id']."' ");
            if($ss)
            {
                $msg = 'the page was successfully deleted';
            }
            else
            {
                $msg = 'error occurred please try again later';
            }
        }
        else
        {
            $msg = 'This page is not in your favorite list';
        }
    }
}

最佳答案

如果无法更改与数据库相关的代码,则可以使用以下代码进行测试:
(…)

if(isset($mn_Id))
{
    $fav = explode(',' , $_SESSION['user']['Favorites']);
    if(in_array($mn_Id,$fav))
    {
        $fav = array_diff($fav, array($mn_Id));
        $new = implode(',' , $fav);
        $ss = $db->query("UPDATE users SET Favorites = '".$new."' WHERE Id = '".$_SESSION['user']['Id']."' ");

(…)
这种改变正在取代:
echo $ind = array_search($mn_Id , $fav);
unset($fav[$ind]);

为此:
$fav = array_diff($fav, array($mn_Id));

10-01 06:00
查看更多