我正在使用此脚本在第一次点击按钮时将用户添加到收藏夹,然后在第二次点击时将用户从收藏夹中删除。
将用户添加到收藏夹/当查询运行“插入”时,它将在完成后重定向回上一页,但如果您再次单击以从联系人中取消添加用户,则不会重定向,你只是在一个显示数字1的空白页面上。
有人可以建议我如何将其重定向回上一页,就像将用户添加到收藏夹一样?
另外,我怎么能让它重定向回上一页并显示一条回显的消息,说添加到收藏夹或从收藏夹中删除?
我是php和mysql的新手,还在学习,所以我很感激任何帮助。谢谢。
<?php
require_once('includes/session.php');
require_once('includes/functions.php');
require('includes/_config/connection.php');
session_start();
confirm_logged_in();
if (isset ($_GET['to'])) {
$user_to_id = $_GET['to'];
}
if (!isset($_GET['to']))
exit('No user specified.');
$user_id = $_GET['to'];
mysql_query("INSERT INTO ptb_favorites (user_id, favorite_id) VALUES (".$_SESSION['user_id'].", ".$user_to_id.")")
or die(mysql_query("DELETE FROM ptb_favorites WHERE user_id = ".$_SESSION['user_id']." AND favorite_id = ".$user_to_id."")); header("Location: {$_SERVER['HTTP_REFERER']}");
#Method to go to previous page
function goback()
{
header("Location: {$_SERVER['HTTP_REFERER']}");
exit;
}
goback();
?>
答案 0 :(得分:0)
我建议不要使用die()
。您应该创建一个函数来检查用户收藏是否已经存在,并相应地创建或删除并重定向。
此外,转移到mysqli_或PDO! :)
答案 1 :(得分:0)
替换
行or die(mysql_query("DELETE FROM ptb_favorites WHERE user_id = ".$_SESSION['user_id']." AND favorite_id = ".$user_to_id."")); header("Location: {$_SERVER['HTTP_REFERER']}");
带
or mysql_query("DELETE FROM ptb_favorites WHERE user_id = ".$_SESSION['user_id']." AND favorite_id = ".$user_to_id.""); header("Location: {$_SERVER['HTTP_REFERER']}");
但是最好检查重新存在,然后插入或删除。
答案 2 :(得分:0)
您可能想要编写一个函数来检查用户是否是收藏夹,然后调用相应的MySQL查询,而不是使用die()。例如,您可以尝试使用此代码,必要时添加一些额外的检查和安全性:
function userIsFavorite($user_id, $favorite_id) {
$result = mysql_query("SELECT * FROM ptb_favorites WHERE user_id='$user_id' AND favorite_id='$favorite_id'");
return (mysql_num_rows($result) > 0);
}
if (userIsFavorite($_SESSION['user_id'], $user_to_id)) {
mysql_query("DELETE FROM ptb_favorites WHERE user_id='".$_SESSION['user_id']."' AND favorite_id='".$user_to_id."'");
} else {
mysql_query("INSERT INTO ptb_favorites (user_id, favorite_id) VALUES (".$_SESSION['user_id'].", ".$user_to_id.")");
}
header("Location: {$_SERVER['HTTP_REFERER']}");