添加一个收藏夹按钮,在PHP中使用值更新mysql数据库,而无需重新加载页面

添加一个收藏夹按钮,在PHP中使用值更新mysql数据库,而无需重新加载页面,php,jquery,Php,Jquery,我有一个页面,它将从数据库中随机选择一些图像,并在它们旁边显示一个收藏夹按钮。我想最简单的方法是在URL中发布ID,并在页面重新加载时将其插入数据库(然后再次重新加载以将其取出URL)。尽管如此,除非我在随机选择中添加某种种子,否则在重新加载时将选择全新的图像,如果您计划在页面上偏爱多个图像,这显然是不好的 我知道的另一种方法是在选项卡中打开一个新页面,将ID插入数据库,然后关闭该页面,尽管我知道这可能会更好,那么有没有人能举一个例子来说明如何在不离开该页面的情况下使链接更新mysql表 这个站

我有一个页面,它将从数据库中随机选择一些图像,并在它们旁边显示一个收藏夹按钮。我想最简单的方法是在URL中发布ID,并在页面重新加载时将其插入数据库(然后再次重新加载以将其取出URL)。尽管如此,除非我在随机选择中添加某种种子,否则在重新加载时将选择全新的图像,如果您计划在页面上偏爱多个图像,这显然是不好的

我知道的另一种方法是在选项卡中打开一个新页面,将ID插入数据库,然后关闭该页面,尽管我知道这可能会更好,那么有没有人能举一个例子来说明如何在不离开该页面的情况下使链接更新mysql表

这个站点上运行着jquery,但我只知道一点javascript代码,所以如果我有一些基本的东西可以做的话,那就太好了。我很可能会改变字体的颜色,只是需要mysql的帮助

这并不重要,但表只有FavID、UserID、ImgID和Date

另外,我已经快速查看了-,这是不是用于将ID发布到另一个页面以在不重定向用户的情况下运行?它是否也有会话变量,或者我是否也应该发布所需的变量

感谢使用AJAX

if ((isset($_POST['Action'])) && (substr($_POST['Action'], 0, 11) == "AJAX_Update")) {
    $id = substr($_POST['Action'], 11);
    // Update SQL
    $query = "...";
    @$result = mysqli_query($query);
    if ($result) { print "OK"; } else { print "Error !"; }
    die();
}

(...)

$id = 5; // Example
print "<img src='update.png' style='cursor:pointer' onClick='AJAX_Update($id);'>"; print "<span id='result'></span>";

(...)

?>

<script language='JavaScript'>

            function AJAX_Update(id) {
                xhr = new XMLHttpRequest();
                xhr.onreadystatechange = function() {
                    if (xhr.readyState == 4 && xhr.status == 200) {
                        document.all['result'].innerHTML = 'Update result : ' + xhr.responseText;
                    }
                }
                xhr.open("POST", "<?php print "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; ?>", true);
                xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                xhr.send("Action=AJAX_Update" + id);
            }

</script>
if((isset($\u POST['Action'])和&(substr($\u POST['Action'],0,11)=“AJAX\u Update”)){
$id=substr($_POST['Action'],11);
//更新SQL
$query=“…”;
@$result=mysqli\u查询($query);
if($result){print“OK”}否则{print“Error!”;}
模具();
}
(...)
$id=5;//例子
打印“”;打印“”;
(...)
?>
函数AJAX\u更新(id){
xhr=newXMLHttpRequest();
xhr.onreadystatechange=函数(){
如果(xhr.readyState==4&&xhr.status==200){
document.all['result'].innerHTML='updateresult:'+xhr.responseText;
}
}
xhr.open(“POST”、“true”);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
send(“Action=AJAX\u Update”+id);
}

是的,确实回答了您的问题。谢谢,伙计,我可以让它工作一半,但在执行顶层代码时遇到了一些麻烦。其他部分工作正常,跨度链接到图像,但即使将top语句简化为if(isset($\u POST['Action'])){,并且运行一个简单的mysql查询,实际上什么都没有发生。你知道为什么会出现这种情况吗?对不起,我的源代码中有错误。你能重试吗?我更新了它。我的substr是错误的,我添加了返回值(确定/错误)到JavaScript.Peter>你现在还好吗?;)对不起,我完全错过了电子邮件哈哈,但是是的,谢谢,它现在工作得很好,精炼部分现在应该很简单了:)