计数单击与mysql和javascript的链接

时间:2018-06-22 19:07:50

标签: javascript php mysql

我所拥有的:

<body>
    <a href="'.$a.'">'.$name_a.'</a>
    <a href="'.$b.'">'.$name_b.'</a>
    <a href="'.$c.'">'.$name_c.'</a>
</body>

a,b,c是外部链接,例如spotify / youtube或其他任何链接。我想检查“用户喜欢什么”。 我从mysql表中获取链接。我的想法是在mysql表中添加列以获得此方案

|   links   |   counters for each links     |
|           |                               |
|           |                               |
|           |                               |

但是似乎没有那么优化。 此外,当单击链接时,我不知道如何调用php函数将+1添加到计数器。有任何想法吗?其他更有效的策略?谢谢!

2 个答案:

答案 0 :(得分:3)

这是2个部分:代码和数据

代码

您有两种流行的选择:AJAX或重定向。

使用AJAX,您基本上可以拦截用户的点击并将数据(单击了链接,用户会话等)发送到您的服务器,然后在收到服务器的响应或超时(以防服务器出现故障)后让用户继续继续太慢或失败)。

使用重定向跟踪器,您基本上在链接的前面有一个url /文件,因此您可以在重定向到实际URL之前运行一些服务器代码。像这样:

https://<your-website>.com/tracker.php?url=<original-url>

数据库

如果要使其非常简单,可以只增加数据库中访问时被跟踪的每个链接的列。
如果您想要有关用户访问的更多数据(例如IP,会话等),则上述内容非常有限,因此另一种选择是使用相关表来存储链接的ID和其他用户数据/时间戳。

提琴:https://www.db-fiddle.com/f/o8nRKZtzhq8cTpQvknhq3S/0

答案 1 :(得分:1)

首先,您应该像这样设置表

+---------------+  +-------------------------+
|     CLICKS    |  |       LINKS             |
+------+--------+  +------+------------------+ 
|  ID  | LINKID |  |  ID  |       LINK       |
+------+--------+  +------+------------------+
|  1   |   12   |  |  12  +  http://link.com |
+ -----+--------+  + -----+------------------+

然后,您可以执行count(*),其中ID = linkid以获得点击计数。如果需要的话,它更容易检查用户是否已经单击等。只需添加另一列并跟踪ip等。在添加点击时,您可以通过一个简单的ajax请求来完成。像下面这样。

<body>
    <a href="'.$a.'" onclick='addClick(12);'>'.$name_a.'</a>
    <a href="'.$b.'" onclick='addClick(13);'>'.$name_b.'</a>
    <a href="'.$c.'" onclick='addClick(14);'>'.$name_c.'</a>
</body> 


function addClick(id) {
    let linkId = id;
    $.ajax({
        method: "POST",
        url: "addClick.php",
        data: {
            "linkId": linkId,
        },
        success() {
            // Update your page count here
        },
    });
}

<?php
    if(isset($_POST['linkId']) {
          // Mysql query
    } 
?>