PhP + JavaScript = Cool Chat

tolst

Новичок
PhP + JavaScript = Cool Chat

Народ, прошу совета:

Я делаю чат на PHP, с более быстрыми языками как C++ ещё незнаком :), так вот возникла одна проблема:
В главном фрейме, где появляються сообщения со смайлами, картинками итд идёт очень большой трафик на обновление этого фрейма да и постоянное мерцание раздрожает, я хотел бы спросить, возможно ли при помощи JavaScript сделать так, чтобы сообщения не перезагружать каждые 5 секунд, а просто добовлялись в конец страницы.
Мне подали идею: сделать скрытый фрейм, с промежутком обновления в 5 секунд следущего содержания:
<html>
<head>
<script src="new_message.js">
</head>
</html>
При помощи PHP я сделаю так, чтобы в файл "new_message.js" каждые 5 секунд добовлялись только новые сообщения.
Так вот, большая просьба ответить мне на вопрос:
Возможно ли при помощи JavaScript сделать так, чтобы новые сообщения дописывались каждые 5 секунд, при чём старые сообщения стираються (столько же сколько и новых), если да то каким образом, и кто сможет мне в этом помоч?
На PHP я забабахол довольно быстрый чат, с множеством наворотов:
1) Игноры
2) Приваты
3) Смайлы
4) Быстрые фразы
5) Гостевая
6) Записки
7) Анкеты с фотками
8) Возможность полного конфигурирования чата под себя (Скорость обновления, стиль своего сообщения, имени...)
9) Модераторство:
Киллы - возможность выкинуть пользователя за нарушения правил.
Буки - адменистраторы гостевой
...............
И множество другово...
В общем народ, деньгами я заплотить несмогу, но ссылку на архив данного чата дам.
Заранее спосибо.
 

tolst

Новичок
В смысле показать???
Вот доделаю и покажу, что то типо www.august4u.ru
но рангом пониже, так как версия первая, вот придумать немогу, каким оброзом осуществить добовление мессагов, есть три варианта:
1) Скрытый фрейм, в катором запускаеться функция с новыми мессагами
2) Постоянный коннект while (1==1){...} Отпадает, хостеры все злые :(
3) просто обновление, отподает, это будет не чат, а постоянно обнавляющаяся гостевуха....
 

Макс

Старожил PHPClub
Возможно ли при помощи JavaScript сделать так, чтобы новые сообщения дописывались каждые 5 секунд, при чём старые сообщения стираються (столько же сколько и новых),
да
если да то каким образом
храниш массив текущих сообщений, при появлении новых удаляеш из массива старые и записываеш новые сообщения; затем выводиш массив на экран (наверное можно и без массива). Выводить нужно использую DHTML (ищи доки по слоям)
и кто сможет мне в этом помоч?
это уже не ко мне ;)
 

tolst

Новичок
Сенкс, но если бы это был ты, я мож заплотил слегка!!!!
 

Макс

Старожил PHPClub
1. С такими предложениями лучше по привату обращаться
2. В любом случае я сейчас занят (и честно говоря терпеть не могу писать на JS ;))
 

JB007

Guest
мдяк... есть вариант, работающий ТОЛЬКО под IE 5.0 и выше, может чуть пониже )))
в хтмле делается div или p с id

В о втором фрейме, который обновляется, пишется следующий скрипт:

<SCRIPT language="JavaScript">
<!--
top.frames["..."].document.all["id"].innerHTML = top.frames["..."].document.all["id"].innerHTML+\''.$мессага, которую надо вывестьи, или мессаги, обработанные в ПХП и т.п. .'\';
top.frames["..."].window.scrollTo(0, 9999999999); // ну и скролинг ))))
//-->
</SCRIPT>
где id - идишка дива или п и "..." - имя фрейма с мессагами
 

Андрей М.

Guest
как предыдущие убрать подобным способом???
Код:
<html>
<head>
<script>
function addmess(){
   var messages=document.getElementById("messages").getElementsByTagName("div");
   var txt="";
   var i;
   for(i=1;i<messages.length;i++){
       txt+="<div>" + messages[i].innerHTML+ "</div>";

   }
   document.getElementById("messages").innerHTML=txt + "<div>" + document.getElementById("newmess").value + "</div>";
}
</script>
</head>
<body>
<div style="border:1px solid" id="messages">
   <div>Сообщение1</div>
   <div>Сообщение2</div>
   <div>Сообщение3</div>
   <div>Сообщение4</div>
   <div>Сообщение5</div>
</div>
<input type="text" id="newmess" size=20 value="Сообщение6"><br>
<button onclick="addmess()">добавим</button>

</body>
</html>
вообще, вместо document.all используй document.getElementById - тогда будет работать в Мозилле.
 

tolst

Новичок
Огромное спосибо, но возник вопрос, а если за момент времени перед обновлением добовляеться не одно сообщение???
 

tolst

Новичок
Да, но на стронице уже будет не 20 мессагов, а
20 + кол нов месс. - 1
И нифига всё рано невидимо :(
 

Leviafan

Guest
Хм... зачем для этого ява скрипт? Ознакомся лучше с функциями flush(), ob_start() на пхп...
 

tolst

Новичок
С функцией fluch() я знаком, но для постоянного конекта требуеться set_time_limit(0), что большенство хостеров непозволяют, да практически все......
 

Андрей М.

Guest
tolst, нужно подумать мозгами и почитать книжки по яваскрипту. Либо предлагай сумму в $
Не надо путать помощь ближнему с бесплатной работой на ближнего.
 

Апокалипсис

Guest
С функцией fluch() я знаком, но для постоянного конекта требуеться set_time_limit(0), что большенство хостеров непозволяют, да практически все......
бесплатные ?
 
Сверху