我的朋友创建了一个网站,可以将页面添加到用户收藏列表中.但最近我有很多抱怨从收藏列表中删除一个页面...看起来代码有错误,有时添加页面而不是删除页面.
更多解释:每个页面都有一个特定的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';
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您无法更改与数据库相关的代码,则可以使用以下代码进行测试:
(......)
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']."' ");
Run Code Online (Sandbox Code Playgroud)
(......)
改变在哪里取代了这个:
echo $ind = array_search($mn_Id , $fav);
unset($fav[$ind]);
Run Code Online (Sandbox Code Playgroud)
为了这:
$fav = array_diff($fav, array($mn_Id));
Run Code Online (Sandbox Code Playgroud)