stuktura bazy danych:
`greetings`
id | from | to | timestamp
1. wpisujemy nick osoby, którą chcemy pozdrowić, wysyłamy formularz
2. jeśli wpisany nick jest poprawny wykonuje zapytanie do bazy, rekord zostaje dodany3. w div#greets wyswietlaja sie pozdrowienia, stosuje jQuery, w skrypcie JS mam
Stosując takie rozwiązanie, pozdrowienie jednej z 2++ osób, które wyślą je jednocześnie lub w ciągu 5 sekund nie zostanie wyświetlone
jedyne co mi przychodzi na myśl to użycie Cron do odpalenia skryptu kasującego najstarszy rekord z bazy ale co 5s to raczej niemożliwe
Kod
$(document).ready(function() {
$("div#greets span").html('Trwa ładowanie...');
setInterval('greets()', 5000);
});
function greets()
{
$.post("ajax.greets.php", function(data){
if(data && data !== $("div#last_greet").html()){
$("div#greets span").css("display","none");
$("div#greets span").html(data);
$("div#greets span").fadeIn();
$("div#last_greet").html(data);
}
else
{
$("div#greets span").html("Brak pozdrowień");
}
});
}
w pliku ajax.greets.php : $("div#greets span").html('Trwa ładowanie...');
setInterval('greets()', 5000);
});
function greets()
{
$.post("ajax.greets.php", function(data){
if(data && data !== $("div#last_greet").html()){
$("div#greets span").css("display","none");
$("div#greets span").html(data);
$("div#greets span").fadeIn();
$("div#last_greet").html(data);
}
else
{
$("div#greets span").html("Brak pozdrowień");
}
});
}
<?php $pdo = new PDO('mysql:host='.$config['db_host'].';dbname='.$config['db_name'], $config['db_user'], $config['db_password']); $stmt = $pdo->query('select * from `greetings` order by `timestamp` asc limit 1'); $stmt->execute(); $fetch = $stmt->fetch(PDO::FETCH_OBJ); { } $stmt = $pdo->query('delete from `greetings` where `timestamp` < 5 limit 1'); //$stmt = $pdo->query('delete from `greetings` order by `timestamp` asc limit 1'); $stmt->execute(); ?>
Stosując takie rozwiązanie, pozdrowienie jednej z 2++ osób, które wyślą je jednocześnie lub w ciągu 5 sekund nie zostanie wyświetlone

