[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Перезагрузка контента без морганий (вн.)
Gadzilla
Edit:

Подумал, и решил, что лучше изложу всю проблему сразу.
Необходимо сделать чат без морганий и соскакиваний скролла.
Код чата:
<?
session_start(); //стартуем сесию
?>
<html>
<
head>
</
head>
<
BODY onLoad="scroll(0, 999999)">
<
div id="content">
<?php

include "config.php";

$data = mysql_connect($base_name, $base_user, $base_pass);
mysql_select_db($db_name);
$nothing = '';
$query = mysql_query("SELECT * from a_chat ORDER BY `timestamp`");
$query2 = mysql_query("SELECT * FROM a_user");
$row = mysql_fetch_array($query2);
/* Выводим обычные сообщения */
while($line = mysql_fetch_array($query)){
if($_SESSION['name']==$line['pmto'])
{
echo "[".$line['time_msg']. "] ".$line['wrt_user']."<a href='profile.php?nick=$user' target='_blank'>(i)</a> написал ПМ ".$line['pmto']. "(вам):" .$line['msg']."<br>";
}
if($_SESSION['name']==$line['wrt_user'] and $line['pmto']!='')
{
echo "[".$line['time_msg']. "] " .$line['wrt_user']."<a href='profile.php?nick=$user' target='_blank'>(i)</a> написал в ПМ ".$line['pmto']. ":" .$line['msg']."<br>";
}
if($line['pmto']=='' and $_SESSION['location']==$line['location'])
{
$user = $line['wrt_user'];
echo "[".$line['time_msg']. "] ".$line['wrt_user']."<a href='profile.php?nick=$user' target='_blank'><img src='images/chat/info.gif'></a>: ".$line['msg']."<br>";
}
}

$handle = mysql_query("select count(1) from a_chat");
$tmp = mysql_fetch_array($handle);
$tmp2 = $tmp[0];
if($tmp2>80)
{
$asdel = mysql_query("DELETE FROM `a_chat` ORDER BY `timestamp` ASC LIMIT 20");
}
$lastact = date("m.d.y, G:i");
?>
</div>
</
body>
</
html>


Как его так модифицировать, чтобы обновление страницы происходило незаметно?



Спустя 32 минуты, 16 секунд (13.03.2011 - 16:26) ApuktaChehov написал(а):
делайте использую Ajax

Спустя 4 минуты, 44 секунды (13.03.2011 - 16:31) Gadzilla написал(а):
Подробнее, куда копать?
Пытался разобраться сам, почему-то с кодировкой 1251 аякс не хотел работать.
В идеале, если бы кто-то модифицировал код, который я выложил.

Все подключил аяксом.
Проблема следующая. Не отображается русская кодировка. База в 1251, аякс вроде требует UTF-8. Как решить данную проблему?

Edit:
Помогли вот эти три строки в PHP:
header("Content-type: text/plain; charset=windows-1251");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);


Проблема с кодировкой полностью решена. Вопрос. При поступлении контента, скролл остается наверху. Как сделать, чтобы при поступлении новых строк, он прокручивался в самый низ страницы?

Спустя 4 часа, 56 минут, 15 секунд (13.03.2011 - 21:27) m4a1fox написал(а):
Gadzilla
ЛОгично. Необходимо все перевести на UTF-8. Тогда и будет работать. ИМХО.

Спустя 2 минуты, 33 секунды (13.03.2011 - 21:30) neadekvat написал(а):
Gadzilla, если есть возможность - переходить на utf-8 полностью.
Если нет - кодируйте строку (аналог urlencode в php). Подробнее.

Спустя 18 минут, 16 секунд (13.03.2011 - 21:48) Gadzilla написал(а):
Проблема с кодировкой полностью решена. Вопрос. При поступлении контента, скролл остается наверху. Как сделать, чтобы при поступлении новых строк, он прокручивался в самый низ страницы?

Спустя 17 минут, 51 секунда (13.03.2011 - 22:06) neadekvat написал(а):

Спустя 1 день, 2 часа, 7 минут, 18 секунд (15.03.2011 - 00:13) Gadzilla написал(а):
Все бы хорошо, но там скрипт привязывается к событию OnLoad, а у меня страница получает контент динамически. Как обеспечить скролл только при обновлении контента?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.