Mit PHP und MySQL versuche ich Live-Daten auf einer Webseite anzuzeigen.Serverseitige Ereignisse ohne Duplikate
Bis jetzt kann ich Datensätze aus der Datenbank abrufen und sie alle 3 Sekunden anzeigen. Derselbe Datensatz wird jedoch alle 3 Sekunden angezeigt, bis ein neuer Datensatz eingefügt wurde (d. H. Es gibt Duplikate).
Ich glaube, ich brauche noch weitere Überprüfungen innerhalb meiner while
Schleife?
Ich kann nicht nach einem eindeutigen TimeStamp
suchen, da es mehrere Datensätze mit demselben Zeitstempel geben wird, das ist vollkommen gültig. Das SeriallNo
Feld ist primär, einzigartig und wird nach jedem Einfügen um 1 erhöht - vielleicht kann ich das irgendwie benutzen?
Mein PHP;
$query = "SELECT TimeStamp, CardNo, SerialNo FROM transactions WHERE TimeStamp < ? ORDER BY TimeStamp DESC LIMIT 1";
$time = date('Y-m-d H:i:s');
$stmt = $conn->prepare($query);
$stmt->bind_param("s", $time);
$stmt->execute();
$result = $stmt->get_result();
while($row = $result->fetch_assoc()) {
$cardNo = $row['CardNo'];
echo "retry: 3000\n\n"; // every 3 seconds
echo "data: ".$cardNo. ' '.$row['TimeStamp']. "\n\n"; // card no & timestamp
}
Mein HTML;
Ein Beispiel der Datenausgabe auf der HTML-Seite (wie Sie sehen können, werden Duplikate ausgegeben);
New transaction: 12916064 2017-08-10 10:52:03
New transaction: 12916064 2017-08-10 10:52:03
New transaction: 12916064 2017-08-10 10:52:03
New transaction: 12916064 2017-08-10 10:52:03
New transaction: 12916064 2017-08-10 10:52:03
New transaction: 12916064 2017-08-10 10:52:03
New transaction: 02723884 2017-08-10 10:54:39
New transaction: 02723884 2017-08-10 10:54:39
New transaction: 02723884 2017-08-10 10:54:39
New transaction: 02723419 2017-08-10 10:54:49
New transaction: 02723419 2017-08-10 10:54:49
New transaction: 02723419 2017-08-10 10:54:49
New transaction: 02723419 2017-08-10 10:54:49
New transaction: 02730552 2017-08-10 10:55:01
New transaction: 02730552 2017-08-10 10:55:01
Ich möchte, dass es so aussieht (keine Duplikate);
New transaction: 12916064 2017-08-10 10:52:03
New transaction: 02723884 2017-08-10 10:54:39
New transaction: 02723419 2017-08-10 10:54:49
New transaction: 02730552 2017-08-10 10:55:01
Jede Hilfe wird geschätzt.
Ihre Client-Seite Code könnte Spur der letzten ID halten es angezeigt, und es nicht wieder angezeigt werden, wenn die Daten vom Server die ID in der Sitzung ist. Letzteres ist wahrscheinlich etwas "korrekter", da es den Server daran hindert, doppelte Daten an einen bestimmten Benutzer zu senden. –
ADyson
Warum gruppieren Sie sie nicht nach Zeitstempel? – Sand
@Sand die Abfrage gibt nur jeweils 1 Zeile zurück. Und auf jeden Fall gab OP an, dass mehrere Zeilen mit demselben Zeitstempel perfekt gültig sind. – ADyson