2012-04-04 7 views
0

Scheint einfach genug. Ich erstelle eine Suchmaschine, die Ergebnisse paginiert an den Benutzer zurückgibt. Jedes Ergebnis wird in einer Liste angezeigt, und wenn der Benutzer auf ein bestimmtes Ergebnis klickt, erweitert es den Akkordeon-Stil und zeigt ihnen weitere Informationen an.PHP/jQuery: Anzahl Klicks durch paginierte Ergebnisse zählen

Ich möchte einige Lernziele in meinen Suchrankings implementieren, also werde ich verfolgen, auf welche Ergebnisse der Nutzer klickt und in welcher Reihenfolge er angeklickt wird.

Ich kann bereits Klicks auf einer Seite verfolgen. Jedes Mal, wenn der Benutzer auf ein Ergebnis klickt, wird es in einer Datenbank mit allen benötigten Informationen gespeichert.

Hier ist mein Problem: Wenn der Benutzer auf die nächste Seite der Ergebnisse geht, verliere ich die aktuelle Anzahl Klicks. Ich zähle die Klicks mit jQuery - jedes Mal, wenn der Benutzer auf ein Ergebnis klickt, steigt die Anzahl der Klicks und das Ergebnis, der tatsächliche Rang des Ergebnisses in der Liste und die aktuelle Klickzahl werden der Datenbank als einzelne Zeile hinzugefügt.

Also, wie kann ich die Klickanzahl festhalten?

Hier ist meine Klick-Funktion, wo js/clicklog.php ist, wo die Abfrage an die Datenbank gesendet wird:

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}); 
    } 

Die sessionID gezogen wird von einem versteckten div auf der Seite, die von $ gesetzt _Session-ID']. Ich könnte mir vorstellen, dass ich vielleicht etwas Ähnliches für die Klickanzahl machen könnte?

Ich verstehe WARUM es funktioniert nicht, aber ich kann nur nicht an eine Lösung denken, wie es zu beheben, da ich noch ziemlich neu zu jQuery, PHP und AJAX bin.

Bitte teilen Sie uns bei Bedarf mit, wenn Sie einen anderen Code wünschen, den Sie mir mitteilen möchten.

Antwort

1

Man könnte es in eine PHP-Session setzen variable

<?php 
session_start(); 

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

Sie könnten wahrscheinlich auf die clicklog.php Datei senden, wo Sie die Session-Variablen es haben würde und erhöhen und es dann wieder, wie Sie kehren sessionID

Update von Kommentar Was Sie tun müssen, ist eine ajax-Anforderung in Ihrem jquery es

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

Dann erhalten senden über posten Sie die Methode oder rufen Sie ab, wenn Sie diesen Weg wählen, und bearbeiten Sie dann 1 zur Variablen und geben Sie sie zurück. Hinweis, was auch immer die Php-Echos werden msg.

+0

Wäre dies eine separate PHP-Datei aus results.php und clicklog.php? – Jon

+0

Wie funktioniert das mit der jQuery, die ich gepostet habe? – Jon

+0

Nun, Sitzungs-ID stammt aus Ergebnisse.php, nicht clicklog.php. Kann ich immer noch dasselbe tun, was du sagst? Wie würde ich es ändern? – Jon

Verwandte Themen