2016-04-07 24 views
0
<?php 
    require_once("class/goldendata.php"); 

    $res = json_encode($GCaller->select("calls", "*")); 
    $oldVal = $res; 
    $res; 

    echo $res . " - " . $oldVal; 

    /* What I want to happen */ 
    if ($res != $oldVal) { 
     //Code Here 
    } 
?> 

So habe ich aktuellen PHP-Code. Problem ist, dass ich den alten Wert nicht bekomme.Speichern Variable für die spätere Verwendung

WAS MACHEN SIE DENKEN?
Nun, es ist ziemlich offensichtlich, dass, wenn dies aufgerufen wird, $ oldData durch den neuen Wert überschrieben wird und sich daher nie voneinander unterscheiden wird.


WAS MÖCHTEN SIE HABEN?
Ich möchte den alten Wert speichern, der von $GCaller->select("calls", "*") zurückgegeben wird. Aber ich kann mir keinen Weg vorstellen, dies zu tun. Selbst wenn ich es mit Sitzungen mache, würde ich einfach die $ _SESSION genau wie mit der Variable überschreiben.

Zusätzliche Informationen
Das Skript in der JavaScript alle 5 Sekunden ausgeführt wird.

setInterval(function(){ 
       $.ajax({ 
        url: "assets/lifespan.php", 
        success: function(data) { 
         if (data) { 
          $("#pendingCall" + data.split(":")[1] + " button[data-uid='" + data.split(":")[0] + "']").remove(); 
         } 
        } 
       }); 

       /*$.ajax({ 
        url: "assets/refresh.php", 
        dataType: 'json', 
        success: function(json) { 
         console.log(JSON.stringify(json)); 
         $.each(json, function(idx, topic){ 
         $("#nav").html('<a href="' + json[0] + '">' + topic.link_text + "</a>"); 
         }); 
        } 
       });*/ 

       $.getJSON("assets/refresh.php", function(data){ 
        for(var i = 0; i < 30; i++) { 
         $("#pendingCall" + i).empty(); 
        } 

        $.each(data, function (index, info) { 
         $("#pendingCall" + info.callNum).append("<button onclick=\"loadPlayer('" + info.playerTag+ "', "+ info.callNum +")\"class='btn btn-primary'>" + info.username + "</button>"); 
        }); 
       }); 
      }, 5000); 

Wenn ich das auch hier tun kann. Vergleichen Sie den neuen Wert mit dem alten Wert und führen Sie dann einen bestimmten Code aus, der ebenfalls funktioniert. :)

LÖSUNGEN, DIE SIE DACHTEN?
Legen Sie Daten in eine Datei, wo ich die 'PREVIOUS LINE' lesen kann, und das werden meine alten Daten sein. Aber ich würde etwas effizienteres bevorzugen.

Verwirrt?
Ja, ich bin sicher, die meisten von euch sind verwirrt, weil ich das nicht wirklich gut erklären kann. Aber ich werde versuchen, so viel wie möglich zu klären, und Sie kommentieren unten, worüber Sie verwirrt sind.

+1

_ "Selbst wenn ich es mit Sitzungen mache, würde ich einfach die $ _SESSION genau wie mit der Variable" _ überschreiben - Sie müssen es natürlich richtig machen - vergleichen Sie den neuen Wert mit dem alten aus der Sitzung Bevor du das Neue in die Ses brachtest sion. – CBroe

+0

@CBroe Oh! Ich denke, ich bekomme es, lass es mich versuchen und in der Zwischenzeit, wenn du eine Antwort erstellen willst, damit ich das akzeptieren kann. – RepeaterCreeper

+0

speichern Sie einfach den alten Wert in der Sitzung. Vergleichen Sie den Unterschied zwischen altem und neuem Wert und ersetzen Sie dann den alten Wert in der Sitzung durch den neuen Wert und die neue Wertvariable. Wenn Sie den Unterschied auch für die spätere Verwendung speichern möchten, müssen Sie dies in einer neuen Variablen tun – kanchan

Antwort

1

Auch wenn ich es mit Sitzungen tun würde ich die $ _SESSION nur werden überschrieben wird wie bei der variablen

Natürlich müssen Sie es richtig machen - vergleichen Sie den neuen Wert mit dem alten aus der Sitzung, bevor Sie ihn in die Sitzung einfügen.

Etwas wie folgt aus:

<?php 
session_start(); 

if(isset($_SESSION['foo'])) { 
    $old_value = $_SESSION['foo']; 
} 
else { 
    $old_value = null; 
} 

$new_value = … 

if($old_value != $new_value) { 
    do_something(); 
} 

$_SESSION['foo'] = $new_value; 

Natürlich kann man nicht Notwendigkeit die $ old_value Variable, können Sie auch den Sitzungswert verwenden - wenn gesetzt - im Vergleich direkt,

if(isset($_SESSION['foo']) && $_SESSION['foo'] != $new_value) { … 
+0

Ich sehe ... also am Ende einstellen. Okay, ich werde beim nächsten Mal diese sehr einfache Logik im Hinterkopf behalten. Sollte das Schreiben bekannt sein, kommt es zuletzt. Vielen Dank! – RepeaterCreeper

0

Sie können einen lokalen Speicher verwenden, mit dem Webanwendungen Daten lokal im Browser des Benutzers speichern können.

Vor HTML5 mussten Anwendungsdaten in Cookies gespeichert werden, die in jeder Serveranfrage enthalten waren. Der lokale Speicher ist sicherer und große Datenmengen können lokal gespeichert werden, ohne dass die Leistung der Website beeinträchtigt wird.

Im Gegensatz zu Cookies ist das Speicherlimit weitaus größer (mindestens 5 MB) und Informationen werden niemals auf den Server übertragen.

Lokaler Speicher ist pro Ursprung (pro Domäne und Protokoll). Alle Seiten eines Ursprungs können dieselben Daten speichern und darauf zugreifen.

// Store 
localStorage.setItem("lastname", "Smith"); 
// Retrieve 
document.getElementById("result").innerHTML = localStorage.getItem("lastname"); 

Für weitere Informationen klicken Sie bitte auf diese Seite: http://www.w3schools.com/html/html5_webstorage.asp

Verwandte Themen