0

十分に単純に思えます。ページ分割された方法でユーザーに結果を返す検索エンジンを作成しています。各結果はリストに表示され、ユーザーが特定の結果をクリックすると、アコーディオン スタイルで展開され、詳細情報が表示されます。

検索ランキングに何らかの学習を実装したいので、ユーザーがクリックした結果と、クリックされた順序を追跡します。

1 つのページのクリック数を既に追跡できます。ユーザーが結果をクリックするたびに、必要なすべての情報とともにデータベースに保存されます。

これが私の問題です。ユーザーが結果の次のページに移動すると、現在のクリック数が失われます。jQuery を使用してクリック数をカウントしています。ユーザーが結果をクリックするたびに、クリック数が増加し、結果、リスト内の結果の実際のランク、および現在のクリック数が 1 つの行としてデータベースに追加されます。

では、どうすればクリック数を保持できますか?

これが私のクリック関数です。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 は、$_SESSION['id'] から設定された、ページ上の非表示の div から取得されています。クリック数についても同様のことができると思いますか?

機能しない理由は理解していますが、jQuery、PHP、および AJAX にはまだ慣れていないため、修正方法が思い浮かびません。

必要に応じて、他に掲載してほしいコードがあればお知らせください。

4

1 に答える 1

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 メソッドで受け取るか、代わりにその方法を選択した場合は get し、変数に 1 を追加して返す処理を行います。PHPがエコーするものは何でもmsgになります。

于 2012-04-04T21:45:57.427 に答える