2016-12-31 65 views
0

我有一个循环来回显从数据库中拉出的链接列表,但我想跟踪列出的每个链接点击的次数。跟踪一个页面上每个链接被点击的次数

形式

link1 
link2 
link3 
link4 
link5 

link1 (2) 
link2 (7) 
link3 (3) 
link4 (4) 
link5 (1) 

因此,每个链节1被点击时,次点击的链接1应记录和旁边的链接显示的量。

这是我到目前为止的代码。

echo "<table>"; 
while($row = mysql_fetch_array($result)){ 
//echo "<tr><td>" . $row['title'] . "</td><td>" . $row['url'] . "</td></tr>"; 
echo "<tr><td> <a href='" . $row['url'] . "' ' target='_blank'>" . $row['title'] . "</a> </td></tr>"; 
} 
echo "</table>"; 
+0

首先,您必须跟踪链接点击次数。你是怎样做的?如果你不跟踪它们,那么试图展示它们是没有意义的。 –

+0

你没有任何代码,甚至试图做你想做的。你所拥有的只是一些呈现链接的代码。根据你的描述,目前还不清楚,你想如何坚持点击信息,什么时候你想显示它(相同的用户,不同的用户等) –

+0

我只是希望每次点击链接时更新这个数字。它应该与任何用户一样。没有什么花哨。我希望它会直线前进。我只需要代码的逻辑。 –

回答

0

您可以使用JavaScript函数,用于管理所有CLICS

var counter = {}; 
 

 
function manageClicks(url) { 
 
\t if (! counter[url]) counter[url] = 0; 
 
\t counter[url] ++; 
 
\t alert('you clicked '+counter[url]+' '+url); 
 
    
 
    // return location.href = url; 
 
\t return false; 
 
}
<p> 
 
Click some link: 
 
</p> 
 
<a href="#" onclick='manageClicks("url1")'> url1 </a><br> 
 
<a href="#" onclick="manageClicks('url2')"> url2 </a><br> 
 
<a href="#" onclick="manageClicks('url3')"> url3 </a><br>

+0

但是,一旦客户端重新加载或重定向,没有记录保存。所以这并不是真的保持记录,它只是在该页面上保留一个临时日志记录该客户端点击的内容。这是一个非常糟糕的解决方案。 – NewToJS

+0

我该如何将它从该对话框移动到页面上。我想我会用这个。 –

+0

另外,我需要将它存储到数据库。有什么提示? –

0

你可以做这样的事情持续地保存它。这只是一小段代码的基本思想。我做了不是测试它。

此外,您还需要映射到您的链接和唯一ID以获取数据库中正确的单元格。

的前端的东西:

<a href="http://yoururl.com/" onclick="handleLinkClick(this, 'a-unique-id')"> 
    Your link <span class="counter">(<?php echo getLogCount('a-unique-id') ?></span>) 
</a> 

现在,如果用户点击该链接,你可以这样做:

function handleLinkClick(element, urlId) { 
    $.ajax({ 
     url: '/logurl.php', 
     method: 'POST', 
     data: { 
      id: urlId 
     } 
    }); 

    // Count up immediately. You could also wait for a valid response. 
    var counterEl = element.querySelector('.counter'); 
    var currentCount = parseInt(counterElement.innerHTML); 

    counterEl.innerHTML = (currentCount + 1).toString(); 
} 

后端的东西:

对于“getLogCount”你可以定义一个函数,它从数据库返回的点击次数(与PHP):

function getLogCount($urlId) { 
    $result = 0; 

    // @todo: Request to the database and get the count of the "$urlId". 
    // And save the result it in "$result" 

    return $result; 
} 

现在登录的用户的点击您在数据库“logurl.php”文件看起来是这样的:

$urlId = intval($_POST['id']); 

// @todo: Update/Create a new entry in the database for the urlId. 
// Maybe the columns could look something like: urlId (unique), clicks 

我希望这会帮助你一点点的解决你的问题。

相关问题