mozda ovako neshto moze da ti pomogne (ako sam dobro razumeo sta ti treba):
semafor.js:
Code:
var semafor_interval = 5; // na koliko sekundi ce se apdejtovati poruka
var semafor_msgid = -1;
var semafor_div = null;
var semafor_xhr = null;
onDOMLoaded(function()
{
semafor_div = document.getElementById('semafor');
try
{
semafor_xhr = new ActiveXObject('Msxml2.XMLHTTP');
}
catch (a)
{
try
{
semafor_xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
catch (b)
{
try
{
semafor_xhr = new XMLHttpRequest();
}
catch (c)
{
alert('Browser ne podrzava AJAX!');
return;
}
}
}
if (semafor_div != null)
{
semafor_refresh();
setInterval('semafor_refresh()', semafor_interval * 1000);
}
});
var semafor_refresh = function()
{
semafor_xhr.open('POST', 'semafor.php');
semafor_xhr.onreadystatechange = semafor_onreceive;
semafor_xhr.send('msgid=' + semafor_msgid);
};
var semafor_onreceive = function()
{
if ((semafor_xhr.readyState == 4) && (semafor_xhr.status == 200))
{
var response = semafor_xhr.responseText;
if (response.substr(response.length - 3, 2) == '|!')
{
var data = response.split('|');
if (data[0] == '1')
{
semafor_msgid = data[1];
semafor_div.innerHTML = data[2];
}
}
}
};
a ovako bi ti izgledao semafor.php:
Code:
<?PHP
if (isset($_POST['msgid']))
{
$msgid = $_POST['msgid'];
$last = getLastMessage();
if ($last[0] > $msgid)
{
echo '1|' . $last[0] . '|' . $last[1] . '|!';
}
else
{
echo '0|!';
}
}
function getLastMessage()
{
// ovde bi trebao da se konektujes na bazu i procitas poslednji dogadjaj
// id poruke sacuvaj u $message_id, a poruku u $message promenljivu
// ...
return Array($message_id, $message);
}
?>
i samo dodaj ovo u <head>:
Code:
<script type="text/javascript" src="handler.js"></script>
<script type="text/javascript" src="semafor.js"></script>
(handler.js je za onDOMLoaded funkciju)
i naravno, dodaj semafor tamo gde ti treba na stranici:
Code:
<div id="semafor"></div>
i ovo ti je potrebni handler.js:
Code:
var nullFunction = function(){return 0;};
var addHandler = function(object, event, handler)
{
var prevHandler = nullFunction;
if (typeof(object[event]) == 'function')
{
prevHandler = object[event];
}
object[event] = function()
{
prevHandler();
try
{
handler(object);
}
catch (e){}
};
};
var onDOMLoaded = function(eventHandler)
{
addHandler(window, 'onload', eventHandler);
};
ja ovo nisam testirao (nesto me zeza apache na lokalu, moracu da ga reinstaliram cim nadjem malo vremena) ali bi trebalo da radi bez problema.
message id koji se pominje treba da bude index iz tabele u kojoj ti se nalaze poruke (naravno index treba da bude unique i veci za svaku noviju poruku, tj treba polje da ima
auto_increment atribut)...