计数和显示按钮单击页面

时间:2013-12-04 15:42:22

标签: javascript php mysql counter

我正在寻找一种非常简单的解决方案来跟踪和显示网页上按钮的点击次数。我搜索了谷歌,我找到的所有解决方案都比我想要的复杂得多。

基本上我需要它做的是每次单击一个按钮时跟踪,存储数据库中的总点击值,然后在同一页面上显示该值。我猜我需要用PHP / MySQL来完成这个,有人能指出我正确的方向吗?

谢谢!

3 个答案:

答案 0 :(得分:4)

这可以通过PHP / MySQL / jQuery完成。我没有测试过任何此类代码,它在跟踪快速点击的爆发方面效果不是很好,但它应该让你开始:

将此代码包含在文档底部。它为增量脚本提供一个用户ID(假设您有一个方便的用户ID作为变量):

<script>
    $(function () {

      // Event handler for the click
      $(document).click(function(e){

        // Feed the increment function the user's ID
        increment(<?= $user_id ?>);

      });
    })
</script>

在您希望显示总计数的任何地方加入计数器div,并在其中加入get_count.php

<div id="counter">
    <?php include("get_count.php?user_id=".$user_id); ?>
</div>

click.js - jQuery函数通过AJAX调用下面的增量脚本

$(function () {

  // Define an increment function to accept a user_id
  function increment(user_id){

      // Create a data object
      data = {
        user_id = user_id
      }

      // Deliver the payload
      $.ajax({
        type: "POST", 
        url: "increment.php",
        dataType:"JSON", 
        data: data, 
        success:function(response){
          $("#counter").empty().load("get_count.php?user_id="+user_id);
        }
      });

  }
}

increment.php - 从AJAX请求中注册数据库中的点击的PHP脚本

<?php

  // Set the header to accept JSON
  header("Content-type: application/json");

  // Insert your database connection here (should probably use mysqli)
  $host     =  "localhost"; // or IP or whatever
  $db_user  =  "admin";
  $db_pass  =  "password";
  $db_name  =  "your_db";
  mysql_connect($servername, $db_user, $db_pass) or mysql_error();
  mysql_select_db($db_name) or db_name();

  // Grab user id from post data
  $user_id = $_POST["user_id"];

  // Write the query
  $sql = "INSERT INTO click_log (user_id, time) VALUES ('".$user_id."', CURRENT_DATE());"

  // Encode a JSON response if the query is successful
  if(mysql_query($sql)){
    echo json_encode("Success");
  }


?>

get_count.php - 要在您的计数器div中加载的文件,用于显示用户的总点击次数

<?php 

  // Get the user id from the URL ($_GET)
  $user_id = $_GET["user_id"];

  // Write the SQL to count the number of rows ('clicks') with that user
  $sql = "SELECT count(*) FROM click_log WHERE user_id = '".$user_id."';";

  // Run the query
  $result = mysql_query($count_sql);

  // Format the result and set it a variable
  $total_clicks = mysql_result($result, 0);

  // Print the total clicks by that user
  echo $total_clicks;

?>

希望这有助于您入门! :)

答案 1 :(得分:0)

这就像在服务器上保存数字一样简单。 http://www.w3schools.com/php/php_ajax_poll.asp或者换句话说,并非那么简单。尝试一些代码,然后提出更具体的问题。

注意w3schools不是最好的html资源,但确实提供了

答案 2 :(得分:0)

我找到了一个完全符合我需求的文本文档解决方案。我已实现它,但问题是在最初单击按钮后该操作仍保留在URL中,因此您需要做的就是刷新页面。什么是防止这种情况的最简单方法?

<强> PHP:     

if ( ! file_exists('./count.txt'))
{
    file_put_contents('./count.txt','0');
}

if (trim($_GET['action']) == 'increment')
{
    counter('increment');
}

function counter($action)
{
    if ($action == 'count')
    {
        return file_get_contents('./count.txt');
    }
    else
    {
        file_put_contents('./count.txt', (string) (((int) file_get_contents('./count.txt')) + 1));
    }
    return true;
}
?>

<强> HTML:

<span id="button"><a href="index.php?action=increment#page5">Click Here</a></span>