Witam wszystkich. Napisałem sobie mały system pozdrowień i problem leży w logice działania. Może odrazu napiszę jak ja to mam zaprojektowane i Wy napiszecie jak wy to widzicie..

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 dodany
3. w div#greets wyswietlaja sie pozdrowienia, stosuje jQuery, w skrypcie JS mam
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 :
  1. <?php
  2. $pdo = new PDO('mysql:host='.$config['db_host'].';dbname='.$config['db_name'], $config['db_user'], $config['db_password']);
  3.  
  4.    $stmt = $pdo->query('select * from `greetings` order by `timestamp` asc limit 1');
  5.    $stmt->execute();
  6.    $fetch = $stmt->fetch(PDO::FETCH_OBJ);
  7.  
  8.    if(is_object($fetch))
  9.    {
  10.        echo 'Pozdrowienia dla '.$fetch->to.' od '.$fetch->from;
  11.    }
  12.    
  13.        $stmt = $pdo->query('delete from `greetings` where `timestamp` < 5 limit 1');
  14.       //$stmt  = $pdo->query('delete from `greetings` order by `timestamp` asc limit 1');
  15.        $stmt->execute();
  16. ?>


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 dry.gif 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 tongue.gif