Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CHAT 
:(
    Опции темы
Reptor
Дата 9.2.2005, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 0
Всего: 0



Ребята у меня к вам такой вопрос как сделать чат с чего надо начинать и продолжать?
smile
PM MAIL ICQ   Вверх
Axxent
Дата 9.2.2005, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 25.3.2004
Где: Новосибирск

Репутация: 3
Всего: 5



У меня такой же вопрос - с чего начать? Хотелось бы написать свой хороший чат (не такой, который пишет все в текстовый файл и при каждом обновлении его выводит целиком smile ), но наведите на мысль плз - что первично, что вторично, итд.
PM MAIL ICQ   Вверх
Gold Dragon
Дата 9.2.2005, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



И меня уже тоже интересует smile Асы, делитесь опытом


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Reptor
Дата 9.2.2005, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 0
Всего: 0



Спасибо ребята за поддержку smile
PM MAIL ICQ   Вверх
penizillin
Дата 10.2.2005, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 10.11.2004

Репутация: 8
Всего: 9



важные понятия, afaik, это принцип работы http, header'ы, сессии, cookies, бд и чуть-чуть js.
PM MAIL ICQ   Вверх
Opik
Дата 10.2.2005, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Сначала оргинизовываем базу.
id|text|to|private|date|room|
последнее если хотите делать комнаты. Далее создаем структуру фреймов.
Создаем 3 видимых - строка ввода, вывода пользователей, и вывода сообщений. + 1 невидимый фрейм.
начнем с ввода. Форма и все дела. только:
<form action="refresh.php" target="top.refresh">. (Что бы всё отсылалось в нул фрейм.) . Что мы делаем далее.(в нул фрейме.)(refresh.php)
1) Добавляем сообщение в базу.
2) Выводим сообщения в функцию(функция на JS о ней чуть позже).
Помечаем сообщение (каждое) как прочитанное.
ФУнкция:
Код

function addToChat(msg){
 document.frames['chat'].messages.innerHTML = msg;
}
(Грубо приближенно.)
А в messages.php
Код

<div name="messages">
</div>


Удачи smile)) написал приближенно.
PM MAIL Skype   Вверх
Axxent
Дата 10.2.2005, 07:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 25.3.2004
Где: Новосибирск

Репутация: 3
Всего: 5



Спасибо, попробую замутить...
PM MAIL ICQ   Вверх
Vaulter
Дата 10.2.2005, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 6
Всего: 22



есть статья, как сделать простенький чат, там описан один и из способов:
пишем простой чат


--------------------
PM MAIL WWW ICQ   Вверх
HappyMan
Дата 26.2.2005, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: 2
Всего: 2



обьясните плиз что значат эти строчки:

($_SERVER[REQUEST_METHOD]=='POST')

$_POST[username]

htmlspecialchars($_POST[username])

$_SESSION[userid]

@mysql_query($query);


а именно: $_SERVER, $_POST, $_SESSION, htmlspecialchars и @ перед функцией выполнения запроса... smile
Добавлено @ 18:01
и вот это:
...or exit(__FILE__." (".__LINE__.") "...


--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
Axxent
Дата 26.2.2005, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 25.3.2004
Где: Новосибирск

Репутация: 3
Всего: 5



А в FAQ?
http://ru.php.net
PM MAIL ICQ   Вверх
HappyMan
Дата 27.2.2005, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: 2
Всего: 2



кажись что-то нашел smile

цитирую ФАК этого сайта smile :

Цитата

Если вы передаете скрипту какую-либо переменную (например, script.php?var1=a&var2=b), а в скрипте $var1 и $var2 оказываются пустыми, то используйте вместо этого $_GET["var1"] и $_GET["var2"].
$_GET (в ранних версиях $HTTP_GET_VARS) - для переменных, переданных методом GET
$_POST (в ранних версиях $HTTP_POST_VARS) - для переменных, переданных методом POST
$_COOKIE (в ранних версиях $HTTP_COOKIE_VARS) - для переменных, переданных через COOKIE
$_REQUEST - объединяет эти 3 массива



--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
Vaulter
Дата 28.2.2005, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 6
Всего: 22



Код

($_SERVER[REQUEST_METHOD]=='POST')

проверка на то, что запрос к серверу был типа POST. POST запрос происходит когда мы жмем на странице кнопку submit и форма имеет аттрибут method=POST

htmlspecialchars - функция заменяющая HTML символы на их коды, ' " < > и т.д.

@ глушит вывод о PHP ошибке...
...or exit(__FILE__." (".__LINE__.") "...
или выход с текстом, а текст этот будет именем файла скрипта и номером строки.



--------------------
PM MAIL WWW ICQ   Вверх
Рыжий
Дата 24.4.2005, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 2
Всего: 20



Интерестно а как организовать плавное добавление сообщений??

и еще один вопрос - если человек при входе в чат обязательно должен заполнить анкету, а еще нужно хранить все личные настройки для каждого пользователя, а еще и его сообщения (или хотябы 100 последних) - тогда как организовать базу???
Можно, конечно, отдельно например таблицы "Чат", "Настройки" и "анкета" или все в одну таблицу - тогда ответ базы будет слишком большим и много траффика будет использоваться...
Жду ваших предложений smile
PM MAIL ICQ   Вверх
Dexter
Дата 24.4.2005, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: нет
Всего: 4



Цитата
Можно, конечно, отдельно например таблицы "Чат", "Настройки" и "анкета" или все в одну таблицу - тогда ответ базы будет слишком большим и много траффика будет использоваться...


Конечно в разные таблицы... Как ты будешь хранить сообщения чата и настройки в одной и той же таблице?


--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
Рыжий
Дата 24.4.2005, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 2
Всего: 20



а что насчет первого вопроса? обновлять страницу каждую секунду имхо - не выход! нужно ее обновлять только в том случае если есть новая реплика!
PM MAIL ICQ   Вверх
Opik
Дата 24.4.2005, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



PHP-Script
обновлять раз в 15 + при каждом добавлении своего сообщения происходит обновление.
PM MAIL Skype   Вверх
Рыжий
Дата 24.4.2005, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 2
Всего: 20



то есть ты предлагаешь (к примеру) такую вот систему:

Вогда чел написал свое сообщение - обработчик форм записывает его в базу и заодно обновляет фрейм1 (в котором все сообщения)???
PM MAIL ICQ   Вверх
Dexter
Дата 25.4.2005, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: нет
Всего: 4



А нельзя сообщение добавить в базу, а фрейм не полностью обновить, а через js добавить это новое сообщение?


--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
Opik
Дата 26.4.2005, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Цитата
то есть ты предлагаешь (к примеру) такую вот систему:

Вогда чел написал свое сообщение - обработчик форм записывает его в базу и заодно обновляет фрейм1 (в котором все сообщения)???

именно
Цитата
А нельзя сообщение добавить в базу, а фрейм не полностью обновить, а через js добавить это новое сообщение?

можно, но 1 фрейм обновить точно нужно, не обязательно тот, что с сообщениями,
читаем пост почти вначале темы:
http://forum.vingrad.ru/index.php?showtopi...=0&#entry323511
PM MAIL Skype   Вверх
Dexter
Дата 26.4.2005, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: нет
Всего: 4



Цитата
можно, но 1 фрейм обновить точно нужно, не обязательно тот, что с сообщениями,


Но лучше ведь обновить фрейм с полем ввода, чем все сообщения чата обновлять...


--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
Opik
Дата 26.4.2005, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



DexterА кто сказал, что все сообщения чата? на что есть невидимые фреймы?
PM MAIL Skype   Вверх
Dexter
Дата 26.4.2005, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: нет
Всего: 4



Ээээ... А при чем тут невидимые фреймы?...


--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
Opik
Дата 26.4.2005, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Dexter
а притом, что именно невидимый фрейм обновляется и добавляет в главный фрейм сообщение, именно добавляет.
PM MAIL Skype   Вверх
Dexter
Дата 27.4.2005, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: нет
Всего: 4



Ну это еще лучше, поле ввода не надо обновлять (хотя вроде нет... Без этого не обойтись)....

Все равно это лучше чем обновлять ВСЕ...


--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
Opik
Дата 27.4.2005, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Dexter
поле ввода обновлять не нужно. Нужно лишь из невидимого фрейма(где обновление чата) очистить строку ввода(через JS), именно очистить а не обновить.
PM MAIL Skype   Вверх
Dexter
Дата 27.4.2005, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1562
Регистрация: 2.7.2002
Где: Москва, Бирюлево

Репутация: нет
Всего: 4



А данные скрипту как передавать? Тоже через скрытый фрейм? А ему через js?


--------------------
The only thing you really know about me is...
...that's all you'll ever know
PM MAIL ICQ   Вверх
Reptor
Дата 28.4.2005, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 0
Всего: 0



А почему б полностю не сделать с помощью JSHTTPRequest или XMLHTTPRequest. А сообщения вставлять через appendChild, будет быстро и без перезагрузки странички и разных фреймов
PM MAIL ICQ   Вверх
Axxent
Дата 28.4.2005, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 25.3.2004
Где: Новосибирск

Репутация: 3
Всего: 5



Reptor
Можешь описать подробнее? Сам хочу на этой основе чат мутить, но не подготовлен теоретически
PM MAIL ICQ   Вверх
Opik
Дата 28.4.2005, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Reptor
выкладывай что да как )))
PM MAIL Skype   Вверх
Чих_и_Пых_Пых(MySql_and_PHP)
Дата 28.4.2005, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 20.4.2005

Репутация: 1
Всего: 2



Хм.....
Самый простой чат:
Делаете два фрейма.
Первый фрейм:
Здесь будет распологаться форма для добавления сообщения и код, который записывает в базу данные введённые в форму.

Второй фрейм - пусть он будет обновляться каждые 15 секунд и там будет код, который вывод сообщения из базы, сортируя их например по-дате.

Если вы хотите писать простой чат - то тут и думать-то нечего, 20-30 минут - и готово.
Сложнее будет использовать ява-смайлики, колличество он-лайн(хотя это только подсчёт сессий), регистрация пользователь(впринципе это прощё самого чата), бан лист с админ-панелью. Вообщем за что-бы вы не взялись можно продумать проект в течении пяти минут, остальные идеи приложаться во время работы.
PM MAIL   Вверх
Opik
Дата 28.4.2005, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Чих_и_Пых_Пых(MySql_and_PHP)
как всё гениально... =) напиши такой чат... хм, какую нагрузку он будет давать и удобно ли в нем будет?
PM MAIL Skype   Вверх
champion
Дата 29.4.2005, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 26.1.2005

Репутация: нет
Всего: 2



Меня тоже волнуют все вопросы которые тут обсуждаются, но я знаю только один спосою обновления текста в чате, демон, как обойтись без него?


--------------------
user posted image
PM MAIL   Вверх
Opik
Дата 29.4.2005, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



champion
Лучше расскажи о демоне попобробнее =) меня это больше интересует.
PM MAIL Skype   Вверх
Reptor
Дата 29.4.2005, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 0
Всего: 0



Цитата
Можешь описать подробнее? Сам хочу на этой основе чат мутить, но не подготовлен теоретически


Идея примерно состоит в следущем всё очень просто:
Во первых страничку надо сверстать на дивах (для того что б туда с помощью JavaScript вставлять новые сообщения)
Написать функцию которая б возращала новое сообщение и всё

PM MAIL ICQ   Вверх
Axxent
Дата 29.4.2005, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 25.3.2004
Где: Новосибирск

Репутация: 3
Всего: 5



Я совершенно забыл JavaScript smile Там кажется можно дописывать новые сообщения после уже дописанных. А если новые сообщения брать через XMLHTTPRequest, то чат упрощается до боли. Я так понял? smile
PM MAIL ICQ   Вверх
Reptor
Дата 29.4.2005, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 0
Всего: 0



Цитата
Там кажется можно дописывать новые сообщения после уже дописанных


Да совершенно верно с помощью appendChild.
И что самое интересное не происходит перезагрузка странички просто с помощью JavaScript вызываеться РНР скрипт делает выборку с базы и возращает новое сообщение и все очень даже быстро
PM MAIL ICQ   Вверх
Opik
Дата 29.4.2005, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Reptor
ну дык, примеры в студию? можешь даже статейку накатать.
PM MAIL Skype   Вверх
Reptor
Дата 29.4.2005, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 0
Всего: 0



Как для всего чата там очень громадный получиться а вот куски основных функций

function getData(sURL)
{
var request=null;
if(!request)
try
{request=new ActiveXObject('Microsoft.XMLHTTP');}
catch (e){}

if(!request)
try { request=new XMLHttpRequest(); }
catch (e){}

if(!request) return "";

request.open('GET', sURL, false);
request.send(null);
// if(request.readyState == 4)
return request.responseText;
}


Вот при нажатии кнопки отправить сообщение оно заноситься в БД:
getData("addMess.php?mess="+mess);

И таким же макаром можна его считать
newmess = getData("getMess.php);
(На эту функцию нужно поставить setTimeout например каждые 3 секунды она будет сама дёргаться и смотреть есть или нет новых сообщений)

Эти 2 строчки вызывают соответствующие скрипты а там уже работа с БД запись нового сообщения, чтение и т.д

Это такие основные моменты





PM MAIL ICQ   Вверх
Opik
Дата 30.4.2005, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Цитата
заноситься в БД

Уже неинтересно)
PM MAIL Skype   Вверх
Axxent
Дата 30.4.2005, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 25.3.2004
Где: Новосибирск

Репутация: 3
Всего: 5



Меня заинтересовало то, что реквест может давать только текстовые данные. Мало того, я не нашел функции для создания HTML-элемента как нода в документе. Как же быть с оформлением? Делать несколько реквестов, скажем в чате, для того чтобы поместить имя, сообщение и прочее в разные элементы оформления?
PM MAIL ICQ   Вверх
Рыжий
Дата 1.5.2005, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 2
Всего: 20



А вот еще вопрос - если мы выбираем 50 последних сообщений из базы, я например сортирую их по дате.
Если сортировать

Код

select * from `replik` order by `date` asc limit 0,50'


то он будет выводит 50 первых сообщений, если человек написал больше чем 50 (допустим 51) - его уже не будет показывать!
а если мы сделаем

Код

select * from `replik` order by `date` desc limit 0,50'


быдет выводиться 50 последних сообщений - то что нам надо, но новые сообщения будут появляться сверху! А если надо сверху??
Можно конечно вложить все в массив а потом "перевернуть" его но разве это единственный выход??
PM MAIL ICQ   Вверх
Opik
Дата 2.5.2005, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Код

order by `date` desc 
order by `date

PM MAIL Skype   Вверх
mike_prog
Дата 18.5.2005, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 27.9.2003

Репутация: 1
Всего: 1



Код

SELECT COUNT(*) FROM 'replik';
- получаешь кол-во сообщений, $n = 'кол-во сообщений' - 50
А потом выбираешь нужные:
Код

select * from replik limit $n, 50

Я так делал.
PM MAIL ICQ   Вверх
Urfin
Дата 2.12.2005, 16:27 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Умные челы раскажите пожалуста у нас есть сетка около 200 компов поставили SEChat 4.0 для пользователей в сети но в нём творится полный беспредел маты оскорбления и таму подобное Подскажите может есть какой нибудь чат в котором есть прова админов по удалению или запрету пользователей с поддержкой фильтра нецензурной брани и всякой грязи Утачню чат нужен для локальной сетки не для инета
  Вверх
kaa
Дата 4.2.2006, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: -1
Всего: 2



А вот такой вопрос есть. Пишу чат на PHP с использованием фреймов. Есть центральный фрейм в который выводятся сообщения.
Внимание вопрос: как сделать так, чтобы при выводе сообщений просмотр начинался с самого нижнего из них. Тоесть у меня в окно фрейма вываливается куча сообщений с базы, тк ессно в окне они не убираются появляется полоса прокрутки, а всё что не убралось в окно фрейма невидно, пока полосу прокрутки вниз не подвинешь. А вот как сделать чтобы она сама вниз прокручивалась сразу (как во всех норамльных чатах), а то при каждой перезагрузке её самому двигать - это ж дурь smile
PM MAIL   Вверх
Ciber SLasH
Дата 4.2.2006, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 3
Всего: 67



Цитата(kaa @ 4.2.2006, 12:20 Найти цитируемый пост)
как сделать так, чтобы при выводе сообщений просмотр начинался с самого нижнего из них.

Код

<script type='text/javascript'>
onload = function () {
    scroll(0, Number.MAX_VALUE);
}
</script>

PM   Вверх
kaa
Дата 4.2.2006, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: -1
Всего: 2



Ciber SLasH
А куда этот скрипт надо пихать? До вывода или после вывода сообщений из бд. Тоесть после <body> или перед </body>?

ЗЫ: А реально ваабще без явы, а то я только PHP ещё учу smile ... Яву я боюсь неасилю smile
PM MAIL   Вверх
Janus
Дата 4.2.2006, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 26.9.2005

Репутация: нет
Всего: 1



Лучше использовать этот код, т.к. он работает во всех браузерах:
Код

<script type="text/javascript">
<!--
  scroll(1, 1);
  scroll(1, 5000);
// -->
</script>

Просто вставь его в конец страницы, без всяких дополнений, как здесь: http://zero.kanet.ru/chat/ в главном фрейме.
--------------------
Проект "Репликатор" 
PM MAIL   Вверх
kaa
Дата 4.2.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: -1
Всего: 2



Janus
Ага, работает, спасиба!
А можно это сделать без явы... Ибо я её незнаю савсем, а тем что я незнаю пользоваться нелублу smile
PM MAIL   Вверх
Ciber SLasH
Дата 4.2.2006, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 3
Всего: 67



Цитата(kaa @ 4.2.2006, 16:52 Найти цитируемый пост)
А куда этот скрипт надо пихать?

Перед </head>. Кстати, лучше замени Number.MAX_VALUE на 10000, а то я заметил, что не везде так работает.
Цитата(kaa @ 4.2.2006, 19:05 Найти цитируемый пост)
А можно это сделать без явы...

Можно, тока это не Ява, а JavaScript. Обозначь последнюю запись якорем, что-то типа <a name="last">&nbsp;</a> и header-ом на него: header('Location: your-site.ru/index.php#last')
Цитата(kaa @ 4.2.2006, 19:05 Найти цитируемый пост)
Ибо я её незнаю савсем, а тем что я незнаю пользоваться нелублу

Ознакомление с вышенаписанным:
onload = function () {} — при загрузке страницы, выполнить функцию
scroll(0, 10000) — проскроллить страницу в точку с координатами (0; 10000), а т.к. координата 10000 слишком большая, то страница будет проскролена до конца и ещё останется в запасе количество пикселей недобранных до 10000.

Теперь знаешь — можешь пользоваться... smile
PM   Вверх
kaa
Дата 4.2.2006, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: -1
Всего: 2



Ciber SLasH
Спасиба ДРУХ! smile smile

ЗЫ: Палез читать про якори.
PM MAIL   Вверх
kaa
Дата 4.2.2006, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: -1
Всего: 2



Ciber SLasH
Гм... Тут такой вопрос возник. Делаю:

Код

 ...   ...   ...
echo "<a name=\"end\">&nbsp;</a>";
           ...   ...   ...
Header('Location: chat.php#end');

Неработает! Почему?
Кстати, сам скрипт называется chat.php. Может он не может перейти сам на себя?

Это сообщение отредактировал(а) kaa - 4.2.2006, 20:32
PM MAIL   Вверх
Ciber SLasH
Дата 4.2.2006, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 3
Всего: 67



Вот так можно сделать:
Код

<?
$html = <<< EOD
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>

<body>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<a name="end">&nbsp;</a>
</body>
</html>
EOD;
if (!isset($_GET['last_message'])) {
    exit(header('Location: '.$_SERVER['PHP_SELF'].'?last_message#end'));
}
echo $html;
?>

PM   Вверх
kaa
Дата 4.2.2006, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: -1
Всего: 2



Ciber SLasH
Объясни пожалуйста, а то ничего не понимаю. Что такое EOD и переменная $html откуда? А зачем проверка в конце?
PM MAIL   Вверх
Ciber SLasH
Дата 5.2.2006, 02:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 3
Всего: 67



2kaa:
EOD — это ограничитель строки типа Heredoc
$html — переменная, в которую мы вписали будущую разметку HTML

Проверка в конце нужна для того, чтобы не было зацикливания, когда скрипт вызывает header('Location: ') на самого себя.

Это сообщение отредактировал(а) Ciber SLasH - 5.2.2006, 02:46
PM   Вверх
kaa
Дата 5.2.2006, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: -1
Всего: 2



Ciber SLasH
Извини пожалуйста, туповт-с, непонял-с. Объясни пожалста, что за переменная last_message - я что-то такой стандартной незнаю...
И если можно распиши пожалуйста строку

'Location: '.$_SERVER['PHP_SELF'].'?last_message#end'

а то из всего что в ней понаписано я понимаю только $_SERVER.

Я это, еще не волшебник - пишу свой первый в жизни чат , так что прошу сильно не бить smile
PM MAIL   Вверх
Danox
Дата 5.2.2006, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


=)
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 28.1.2006

Репутация: 1
Всего: 2



Чат на PHP? Плвное обнавление можно только с AJAX хм вроде хорошие чаты пишут на C++
PM MAIL   Вверх
kaa
Дата 5.2.2006, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: -1
Всего: 2



Danox
А что такое AJAX ?
PM MAIL   Вверх
Danox
Дата 6.2.2006, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


=)
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 28.1.2006

Репутация: 1
Всего: 2



http://www.xajaxproject.org/
Может выдавать плавненькое обнавление
Я не очень знаком со системой так что помочь не смогу smile

Это сообщение отредактировал(а) Danox - 6.2.2006, 12:44
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1010 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.