2012-04-04 84 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