如何将localstorage数组存储到MySQL数据库?

时间:2012-04-17 14:07:00

标签: php jquery mysql html5 local-storage

我目前正在使用localstorage来存储当前用户访问过的页面:

<?php
//start the session 
session_start();
//set $username as the current logged in user
$username=$_SESSION["Username"];
?>

JQuery的:

var journey = JSON.parse(localStorage.getItem('journey'))||[];
journey.push(location.protocol + 
'//' + location.host + location.pathname);
localStorage.setItem('journey', JSON.stringify(journey));

目前这是一个临时存储空间,但我也想让他们选择保存他们的旅程。

我如何能够将单个URL以及用户ID(已存储在数据库中)保存到MySQL数据库中?例如表名为“Journey”,列为“URL”和“UserID”。

2 个答案:

答案 0 :(得分:1)

您希望对服务器执行Ajax调用。您需要发出Ajax请求,您可以使用Jquery执行此操作。然后,您需要一个服务器端语言(如php)来处理请求并插入数据库。

有一个对php文件执行AJAX调用以插入数据库here的示例。请注意,这不是您在生产环境中执行此操作的方式。但是,理解这个过程是一个很好的教程。

修改

根据您在下面的评论,我会进一步解释。上面的例子可以做你想做的事。目前,您的数据位于“客户端”计算机上的javascript中。您想将其传输到mysql数据库。

为此,您将使用JQuery或Javascript发送数据。在示例中,他们在HTML部分中的<script> </script>标记中使用Javascript。这个javascript代码用于将数据发送到php文件,该文件在此行$q=$_GET["q"];接收它。然后php函数将此数据插入数据库。

在示例中,他们使用GET来实现此目的。您可能希望执行POST请求。查找difference between the two是值得的。

答案 1 :(得分:1)

MySQL旅程表:

CREATE TABLE journey (
    userId INT NOT NULL,
    journeyUrl VARCHAR(200) NOT NULL,
    PRIMARY KEY( userId, journeyUrl ),
    FOREIGN KEY( userId ) REFERENCES userTable( userId )        
);

插入旅程查询:

$insert_query = "INSERT INTO journey ( userId, journeyUrl ) VALUES ( {$userId} , '{$journeyUrl}' );";

更新旅程查询(如果已存在):

$update_query = "UPDATE journey SET journeyUrl = '{$journeyUrl}' WHERE userId = {$userId};";

您的php脚本会在结果为布尔值的末尾回显结果。真实意味着保存是成功的,假意味着保存是失败的:

echo json_encode($result);

你会有一个php脚本根据表中是否有引用用户的记录来执行这些查询。

像这样的jQuery AJAX函数会调用脚本并保存旅程:

$.ajax({
    type: "POST",  
    url: "savejourney.php",  
    data: { id : userid, url : journeyUrl },
    dataType: "json", 
    success: function(data) {
        if(data) {
            alert("Journey saved sucessfully!");
        }
    }  
});