2016-12-31 59 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 

我希望這會幫助你一點點的解決你的問題。