2012-04-04 127 views
0

看起來很簡單。我正在創建一個搜索引擎,以分頁的方式將結果返回給用戶。每個結果都顯示在一個列表中,如果用戶點擊任何特定的結果,它將展開手風琴風格並向他們顯示更多信息。PHP/jQuery:通過分頁結果計算總點擊次數

我想在我的搜索排名中實現一些學習,所以我會跟蹤用戶點擊的結果以及點擊的順序。

我已經可以跟蹤一個頁面上的點擊。每次用戶點擊一個結果時,它都會存儲在一個包含我需要的所有信息的數據庫中。

這是我的問題:如果用戶轉到下一頁的結果,我失去了當前的點擊數。我使用jQuery計算點擊次數 - 每次用戶單擊結果時,點擊次數都會增加,結果,結果在列表中的實際排名以及當前點擊次數將作爲一行添加到數據庫中。

那麼我怎麼能堅持點擊計數?

這是我的點擊功能,其中JS/clicklog.php是在查詢發送到數據庫:

var order = 0; 
$(document).ready(function() { 
    alert(order); 
    $('.accordionButton').click(function(e) { 
     if($(this).next().is(':hidden') == true) { 
      $(this).addClass('on'); 
      $(this).next().slideDown('normal'); 
      $(this).next().slideDown(test_accordion); 

      order++; 
      var actualOrder = $(this).find("h3").eq(0).text(); 
      var major = $(this).find("h3").eq(2).text(); 
      var sessionID = $("#sessionID").text(); 

      $.post("js/clicklog.php", {sessionID:sessionID, major:major, actualOrder:actualOrder, order:order}); 
    } 

的SessionID正在從頁,這是從$設置一個隱藏的div拉_SESSION [ 'ID']。我想我可能會爲點擊次數做類似的事情?

我明白爲什麼它不工作,但我只是想不出一個解決方案,因爲我對jQuery,PHP和AJAX還很陌生。

如果有必要,請讓我知道是否有任何其他代碼,你希望我發佈。

回答

1

你可以把它變成一個PHP會話變量

<?php 
session_start(); 

if(isset($_SESSION['views'])) 
{ 
$_SESSION['views']=$_SESSION['views']+1; 
} 
else 
{ 
$_SESSION['views']=1; 
echo "Views=". $_SESSION['views']; 
} 
?> 

你也許可以發送到clicklog.php文件,你將有會話變量,並增加它,然後返回它,你是怎麼回來的sessionID

從評論

更新,你需要做的是在你的jQuery發送Ajax請求

var count = 2; 
    $.ajax({ 
    type: "GET", 
    url: "some.php", 
    data: ({'count' : count}), 
    success: function(msg){ 
    alert("Data Saved: " + msg); 
    } 
}); 

然後通過接收它post方法或者如果你選擇這種方式,然後處理將1加入變量並返回它。提示任何PHP回聲成爲味精。

+0

這是一個單獨的PHP文件,從results.php和clicklog.php? – Jon 2012-04-04 21:48:22

+0

這將如何與我發佈的jQuery一起工作? – Jon 2012-04-04 21:55:17

+0

好吧,sessionID來自results.php,而不是clicklog.php。但是,我仍然可以按照你所說的去做同樣的事情嗎?我將如何改變它? – Jon 2012-04-04 22:05:22