1

我正在从 Groupon 的 api 中提取交易,我不知道如何使用 php 获取数据并将其放入数据库中,我知道如何在 html 中显示它,但不是在数据库中,我需要将其拉入数据库,所以我可以更好地控制信息,如果有人知道如何做到这一点或知道更好的方法,我全神贯注,大声笑,谢谢

<script type='text/javascript'>

$(function () {
$.getJSON("https://api.groupon.com/v2/deals.json?callback=?", 
{
    client_id: "b252ad3634a4ab2985b79d230ccc4e49a3ea9d19",
    show: "all",
    division_id: "los-angeles"
})
.done(function (data) {
    console.log(data);
    // do whatever processing you need to do to the data
    // right here, then drop it in the div
    $.each(data.deals, function (i, v) {
        $title = $("<h2/>", {
            html: v.title,
            class: "heading"
        });
        $img = $("<img/>", {
            src: v.mediumImageUrl
        });
        $deal = $("<div/>", {
            html: v.highlightsHtml + v.pitchHtml
        });
        $("#main").append($deal);
        $deal.prepend($title, $img);
    });
});
});
</script>
4

1 回答 1

2

理论

好吧,我将开始运行整个过程...

首先,了解您正在处理的驱动程序并研究 PHP 如何与它们交互。查看此列表并开始阅读... http://www.php.net/manual/en/refs.database.php

将数据发送到 PHP 脚本以处理其余部分取决于您获取数据的方式。以下是一些基本流程...

  • 使用 jQuery 拉取它,并使用 AJAX 将其发送到 php 脚本以保存它。(需要额外的 HTTP 请求)
  • 使用 PHP 拉取它,将其保存到数据库,然后在同一页面上格式化并输出。(减慢初始页面加载时间)
  • 用 jQuery 拉取它,格式化它,并允许用户按下一个按钮,然后将该条目 ajax 到 PHP 保存脚本(更灵活,但大大增加了请求)

获得与数据库的连接后,您只需使用 SQL 查询(很可能使用 INSERT 或 UPDATE)将其保存到表中。对于 JSON 数据,我更喜欢将其保存到数据类型为 TEXT 的列中。这里唯一真正的风险是您必须确保您可以验证数据。特别是如果数据是从 JAVASCRIPT /AJAX 源提供给 PHP 的!

从该点提取数据只是使用“SELECT”sql 语句。PHP 的数据库模块将提取这些数据并将其放入一个可爱的数组中,从而使操作变得容易。

例子

现在这就是理论,这里有一些行动。我将选择第一个流程的想法。现在这个只是将它保存到数据库中。我没有做任何花哨的检查或真正的拉动。但这将向您展示 ajaxing 和保存到 php 的工作原理。

查看交易.html

<script type='text/javascript'>

$(function () {
$.getJSON("https://api.groupon.com/v2/deals.json?callback=?", 
{
    client_id: "b252ad3634a4ab2985b79d230ccc4e49a3ea9d19",
    show: "all",
    division_id: "los-angeles"
}).done(function (data) {
    console.log(data);
    // do whatever processing you need to do to the data

    $.post('save-deals.php',{dealData: data}, function(finishData) {
         //This is an optional function for when it has finished saving
    });

    // Your formatting comes next
    ....
});
</script>

现在,这将使用 AJAX Post 调用将您从 groupon 获得(完整)的所有数据发送到单独的 php 脚本。我使用 post,嗯,因为这就是它的用途。

保存交易.php

ob_start(); //I like output-buffering because if we need to change headers mid script nothing dies

$DealData = isset( $_POST['dealData'] )?$_POST['dealData']:die("Malformed form data!");

if($DealData!='') {
   $DB = new mysqli("example.com", "user", "password", "database");
   if ($DB->connect_errno) {
      echo "Failed to connect to MySQL: " . $DB->connect_error;
   }

   $DealData = $DB->real_escape_string($DealData); //Sanitize it for MySQL

   if (!$DB->query("INSERT INTO deals(data) VALUES ($DealData)") {
      echo "Insert failed: (" . $DB->errno . ") " . $DB->error;
   } else {
      //AT THIS POINT IT SHOULD HAVE BEEN INSERTED!
      //You could return a success string, or whatever you want now.
   }
} else {
   http_response_code("400");
   die("Bad Request, please check your entry and try again");
}
ob_end_flush(); //Close up the output-buffer

关于该脚本需要注意的一些重要事项是 ob_* 函数是完全可选的。设置 DealData 的方式是检查发布数据是否包含该值并正确设置它的一种非常简略的方式;如果没有,那么给出一个错误。

下一个脚本将向您展示如何从数据库中提取数据,并在需要时对其进行操作。它还将数据作为 JSON 信息返回,因此可以与 javascript$.getJSON()调用一起使用。这主要是一个片段供参考

操纵-deals.php

//First connect to the database!
$DB = new mysqli("example.com", "user", "password", "database");
if ($DB->connect_errno) die("Failed to connect to MySQL: " . $DB->connect_error);

//Get ALL the entries!
if(!$results = $DB->query("SELECT * FROM data")) die("Failed to retrieve data! ".$DB->error);

//Decode the datas!
$returnResults = [];
while($entry = $results->fetch_assoc()) {
   $JSON = json_decode($entry['data']);

   //Manipulate however you wish!
   $JSON->whatever->tags[1]->you->want = "whatever value";

   //Add it to the results!
   $returnResults[] = $JSON;
}
echo json_encode($returnResults);

最后一部分只是为了好玩。它将导出一个包含结果数组的 json 字符串。并且该数组的每个条目都将是一个有效的对象,就像 groupon 给你的一样。希望有帮助!

于 2013-08-20T01:34:05.770 回答