单击html类更新PHP变量

时间:2013-06-03 14:44:08

标签: php javascript jquery

我需要运行PHP,特别是PHP我无法使用任何其他语言,点击与类的链接.URL

具体来说,我需要运行的PHP是:

$list[4]+=10;

以及点击此处需要运行的链接:

<a href="http://someSite'sURLHere.com" class="URL">Some site's URL</a>

我听说过jQuery的ajax()函数及其衍生物。但是,如何在点击.URL?

时更新PHP变量的值

1 个答案:

答案 0 :(得分:1)

首先,您的大部分问题都不可能以您希望的方式完成。特别是在PHP中增加变量,使得$list[4] += 10。我这样说是因为当这个脚本运行时,它将不再存在,你必须从你正好存储数据的地方加载它(假设有一个数据库)。

因此,您尝试实现的一个简短示例需要一些文件。

  • index.php - 这是您的代码发生的地方,它会在页面上显示链接。
  • link_clicked.php - 单击链接时调用此方法。

你需要在你的代码中添加这个基本的Javascript(它使用jQuery,因为你在你的问题中提到它)。我已经将这个片段分成了许多部分,这不是你通常写的或者看到用来解释发生了什么的jQuery。

$(function() {
  // Select all elements on the page that have 'URL' class.
  var urls = $(".URL");
  // Tell the elements to perform this action when they are clicked.
  urls.click(function() {
    // Wrap the current element with jQuery.
    var $this = $(this);
    // Fetch the 'href' attribute of the current link
    var url = $this.attr("href");
    // Make an AJAX POST request to the URL '/link_clicked.php' and we're passing
    // the href of the clicked link back.
    $.post("/link_clicked.php", {url: url}, function(response) {
      if (!response.success)
        alert("Failed to log link click.");
    });
  });
});

现在,我们的PHP应该如何处理呢?

<?php

// Tell the requesting client we're responding with JSON
header("Content-Type: application/json");

// If the URL was not passed back then fail.
if (!isset($_REQUEST["url"]))
  die('{"success": false}'); 

$url = $_REQUEST["url"];

// Assume $dbHost, $dbUser, $dbPass, and $dbDefault is defined
// elsewhere. And open an connection to a MySQL database using mysqli
$conn = new mysqli($dbHost, $dbUser, $dbPass, $dbDefault);

// Escape url for security
$url = conn->real_escape_string($url);

// Try to update the click count in the database, if this returns a
// falsy value then we assume the query failed.
if ($conn->query("UPDATE `link_clicks` SET `clicks` = `clicks` + 1 WHERE url = '$url';")) 
  echo '{"success": true}';
else
  echo '{"success": false}';

// Close the connection.
$conn->close(); 

// end link_clicked.php

此示例本质上是简单的,并使用一些未经推荐的方法来执行任务。我将根据你的要求找出如何正确地做到这一点。