Jeg kan prøve.
Du skal have en iframe, som refresher hvert et eller andet sekund:
<?
$max_rows=20;
$sql = "select * from messages order by dato desc";
$res = mysql_query( $sql ) or die (mysql_error());
$num_rows = mysql_num_rows( $res );
if ($num_rows>$max_rows) {
$num_rows=$max_rows;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"
http://www.w3.org/TR/html4/loose.dtd"><html>
<script type="text/JavaScript">
var a = new Array();
<?
if ($num_rows>0) {
while ( $row=mysql_fetch_array($res) ) {
$arr_str .= "a[a.length] = \"".stripslashes($row["user"])."\";\n"; //Brugernavn
$arr_str .= "a[a.length] = \"".date( "H:i:s", $row["dato"] )."\";\n"; //dato
$arr_str .= "a[a.length] = \"".stripslashes($row["msg"])."\";\n"; //besked
$s = $row["dato"];
}
print $arr_str;
}
?>
parent.writeChat( a );
setTimeout( "location.href='chat.php?s=<?=$s?>'", 5000 );
</script>
</html>
I siden med selve chatten (hvor chatten skal vises), skal du have et script der henter indlægene, og viser dem:
<script type="text/JavaScript">
var maxNumMsgs = <?=$maxNumMsgs?>; //max antal beskeder
var hiCol = "<?=$hiCol?>"; //farver til hver anden linie
var loCol = "<?=$loCol?>";
var d=document;
function gE(id){return d.getElementById(id)}
function gA(o,tN){return o.getElementsByTagName(tN)}
function writeChat( a ) {
var tbl = gE("chat");
for (i=0; i<a.length; i+=3) {
var bgCol = ( gA(tbl, "TR")[0].style.backgroundColor=="#ffffff" )? loCol : hiCol;
var newRow = tbl.insertRow(0);
var newCell = newRow.insertCell(0);
newCell.innerHTML = "<b>" + a[i] + "</b><div class=\"time\">[" + a[i+1] + "]</div>";
newCell.className = "u";
var newCell = newRow.insertCell(1);
newCell.innerHTML = a[i+2];
newCell.className = "m";
newRow.style.backgroundColor = bgCol;
}
var numMsgs = gA(tbl, "TR").length;
while ( numMsgs>maxNumMsgs ) {
tbl.deleteRow(numMsgs-1);
numMsgs--;
}
}
</script>
<table id="chat" cellspacing="0" cellpadding="0" border="0">
<tr>
<td colspan="2"> </td>
</tr>
</table>
- Morten