el-niko
Guest
PHP+JS (innerHTML) - иногда глюки... РАЗБЕРЁМСЯ !?
Какой принцип....
РНР-скрипт в обновляющемся каждые n секунд окошке смотрит таблицу и если количество строк записанное в куку при прошлой перезагрузке не совпадает с настаящим кол-вом строк то циклом при помощи JS-функции innerHTML он "дописывает" в главный фрейм моего чата нОвЫе строчки...
Так вот, в чём же, собственно, трабл...
Текст сообщения у меня предварительно обрабатывается функцией такой вот:
Итак, если сообщение вида "Бла-бла-бла =) " - то всё ок, идёт текст и вместо =) картиночка
НО ! если текст вида "=) Бла-бла-бла" то ничё не происходит никакого дописывания !!! и даже если текст вида "=) =)" тож ничё не происходит
Прилагаю код:
Помогите, ребята, очень нужна помошь !!!!
Заранее всем ОГРОМНОЕ СПАСИБО && РЕСПЕКТ !!!
Какой принцип....
РНР-скрипт в обновляющемся каждые n секунд окошке смотрит таблицу и если количество строк записанное в куку при прошлой перезагрузке не совпадает с настаящим кол-вом строк то циклом при помощи JS-функции innerHTML он "дописывает" в главный фрейм моего чата нОвЫе строчки...
Так вот, в чём же, собственно, трабл...
Текст сообщения у меня предварительно обрабатывается функцией такой вот:
PHP:
<?
function replace($string){
global $exech;
$string = " " . $string;
$string = eregi_replace('([[:space:]()[{}])([url]www.[/url][-a-zA-Z0-9@:%_\+.~#?&//=]+)', '\\1<a href="http://\\2" target="_blank">\\2</a>', $string);
$string = eregi_replace('([[:space:]()[{}])(http://.[-a-zA-Z0-9@:%_\+.~#?&//=]+)', '\\1<a href="\\2" target="_blank">\\2</a>', $string);
$string = eregi_replace("[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*","<a href=\"mailto:\\0\">\\0</a>",$string);
$autochange=file("change.dat");
$lines=count($autochange);
for($i=0;$i<$lines;$i++){
list($change1,$change2)=explode("|", $autochange[$i]);
$string = eregi_replace("$change1","$change2",$string);
}
return trim($string);
}
?>
НО ! если текст вида "=) Бла-бла-бла" то ничё не происходит никакого дописывания !!! и даже если текст вида "=) =)" тож ничё не происходит
Прилагаю код:
PHP:
....... из cfg.inc.php ........
<?
function msg_prt($m_lg, $m_ulg, $m_pr, $m_col, $m_tim, $m_msg){
if( !empty($m_pr) ){
$to=" для $m_pr";
}else{
$to="";
}
if($m_pr==$m_lg){
$col="bgcolor=\"#B8E0E8\"";
$ali="align=\"left\"";
$ttt="<font color=\"#".color($m_col)."\">[".date("H:i", $m_tim)."] ".usr_link($m_ulg)." $to > ".replace($m_msg)."<br></font>";
}elseif($row['pri']==";sys;tem;"){
$col="bgcolor=\"#7EBBC7\"";
$ali="align=\"center\"";
$ttt="<font color=\"#".color($m_col)."\">[".date("H:i", $m_tim)."] ".replace($m_msg)."<br></font>";
}else{
$col="";
$ali="align=\"left\"";
$ttt="<font color=\"#".color($m_col)."\">[".date("H:i", $m_tim)."] ".usr_link($m_ulg)." $to > ".replace($m_msg)."<br></font>";
}
$msg = "<table $col width=100%><td $ali >".$ttt."</td></table>";
return ($msg);
}
?>
.......................................
Скрипт ниже как раз и обновляется каждые n секунд
.......................................
<?
include("cfg.inc.php");
$sql="select * from $tbl";
$result=mysql_query($sql);
$cfz=mysql_num_rows($result);
setcookie("chatfilesize",$cfz);
if($cfz!=@$chatfilesize){
if ($_COOKIE['ch_chat_reg'] == "yes"){
print "<script>top.frames['main'].location.reload()</script>";
}else{
$strtq=@$chatfilesize;
$stpq=$cfz;
$query = "SELECT * FROM $tbl LIMIT $strtq,$stpq";
$res = mysql_query($query) or die(mysql_error());
while ($row=mysql_fetch_array($res)) {
$msg = msg_prt($_COOKIE["login"], $row['log'], $row['pri'], $row['col'], $row['tim'], $row['msg']);
print $msg;
print "<script>";
if ($_COOKIE['ch_chat_reg']=="no"){
print "top.frames['main'].document.all['messages'].innerHTML = top.frames['main'].document.all['messages'].innerHTML + '".$msg."' ;";
print "top.frames['main'].window.scrollTo(0, 9999999999);";
}elseif ($_COOKIE['ch_chat_reg']=="yes"){
print "top.frames['main'].location.reload;";
}
print "</script>";
}
}
}
?>
<meta http-equiv="refresh" content="<?=$_COOKIE['ch_chat_refr']?>">
Заранее всем ОГРОМНОЕ СПАСИБО && РЕСПЕКТ !!!