Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 2
Регистрация: 13.01.2010
Сообщений: 129

php чат

12.02.2010, 08:04. Показов 3751. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте , нужен совет по написанию чата.В общем есть input, в который вводится текст сообщения
и кнопка отправить.В таблице есть 3 поля:
1ое - from_user(В него вставляется $_SESSION['login']).
2-ое - to_user(ник того, кому отправили сообщение).
3ье поле - само сообщение.
На странице есть список онлайн-юзеров.При нажатии на один из ников он вставляется в поле ввода сообщения, дальше пишем сообщение.Это поле ввода выглядит так:
to [nickname]: сообщение.
Каким способом можно nickname из поля ввода занести в таблицу в поле to_user после нажатия кнопки отправить?Тоесть разбить одно пришедшее из формы сообщение на 2 составляющие(кому отправлено и само сообщение) чтобы внести в базу отдельно сообщение и отдельно ник.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.02.2010, 08:04
Ответы с готовыми решениями:

Чат на PHP
Доброго времени суток! У меня есть чат на PHP, я его вставил в "полную новость", но вот беда, люди, которые читают новость с айди 4 и...

Чат на PHP
Добрый день. Мне необходимо сделать чат на PHP + MySQL + AJAX. В первую очередь хочется научиться делать это самому, поэтому прошу...

Фиксированный чат на php
Доброго времени суток! Я новичок на писаний веб приложений на php. И вот возник такой вопрос нужно сделать как бы сайт когда на него...

14
 Аватар для Krist_ALL
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
12.02.2010, 13:25
PHP
1
2
3
$message = $_POST['text'];
preg_match('#^to\s\[(.*)\]\s#',$message,$n);
$n[1]; //НИК
помоему регулярка верная...
1
Программист
 Аватар для motakuji
107 / 111 / 9
Регистрация: 27.09.2009
Сообщений: 331
12.02.2010, 14:34
PHP
1
2
3
4
5
6
7
8
$string='to [nikname]: bla-bla-bla';
//preg_match('/\[([a-z])+\]/i',$string,$massiv);
//print ($massiv[0]);
$start=strpos($string, '[');
$end=strpos($string, ']');
$leight=$end-$start;
$nikname=substr($string, $start+1, $leight-1);
print $nikname;
можно сделать так,можно регулярным выражением,но я в них не оч силён

Добавлено через 1 час 8 минут
Цитата Сообщение от Krist_ALL Посмотреть сообщение
$message = $_POST['text'];
preg_match('#^to\s\[(.*)\]\s#',$message,$n);
$n[1]; //НИК
помоему регулярка верная...
в конце ненадо пробельный символ ставить,а так правильно.
PHP
1
2
preg_match('#^to\s\[(.*)\]#',$message,$n);
$n[1]; //НИК
2
0 / 0 / 2
Регистрация: 13.01.2010
Сообщений: 129
13.02.2010, 04:42  [ТС]
А можно поподробнее чуть? чёт я не въезжаю в эту функцию.Облазил множество сайтов - везде одно и то же пояснение, описано вообще непонятно.Что за символы? что за что отвечает?
0
Программист
 Аватар для motakuji
107 / 111 / 9
Регистрация: 27.09.2009
Сообщений: 331
13.02.2010, 11:22
эта функция работает с perl-овскими регулярными выражениями.Почитай про герулярные выражения и поймёшь всё
1
0 / 0 / 2
Регистрация: 13.01.2010
Сообщений: 129
13.02.2010, 12:25  [ТС]
Цитата Сообщение от motakuji Посмотреть сообщение
эта функция работает с perl-овскими регулярными выражениями.Почитай про герулярные выражения и поймёшь всё
Нашёл одну статью хорошую, только посмотрев на её размах решил, что лучше воспользуюсь твоим вариантом, ато до вечера сидеть вникать буду)
0
0 / 0 / 2
Регистрация: 13.01.2010
Сообщений: 129
15.02.2010, 14:40  [ТС]
Возник ещё один вопрос.Читал статью по написанию чата, помню что там автор рассказывал, что все сообщения заносятся не в базу, а в текстовый файл.И есть скрипт, который проверяет количество сообщений в этом текстовом файле и удаляет их если накопилось, скажем, больше 30 сообщений.Кто знает как лучше? Чтобы сообщения в базе были или в текстовом файле?
И ещё...подскажите как можно реализовать такое?Есть поле для ввода сообщения, которое находится в отдельном фрейме.И есть фрейм где отображаются сообщения.Каким образом можно заставить тот фрейм, где отображаются сообщения, обновляться после того как в другом фрейме было введено сообщение.И вообще правильно ли это? Всмысле должен ли он полностью обновлятся или вывод сообщений правильнее будет сделать по другому?
0
Программист
 Аватар для motakuji
107 / 111 / 9
Регистрация: 27.09.2009
Сообщений: 331
15.02.2010, 15:05
по мне,так лучше база данных. С ней удобней работать,чем с файлами. Да и функциональность.Замучаешься с этими файлами работать.
1
0 / 0 / 2
Регистрация: 13.01.2010
Сообщений: 129
16.02.2010, 08:14  [ТС]
Насчёт обновления фрейма немного разобрался, сделал функцию по нажатию кнопки
JavaScript
1
2
3
4
function reload_func()
{
window.parent.messages.location.reload();
}
Только вот не всегда работает как надо, так как функция запускается сразу после нажатия кнопки 'отправить сообщение', а сообщения в базу добавляются спустя какие-то милисекунды.То есть функция обновляет фрейм сразу, но последнее сообщение в этом фрейме не выводится.Знает кто каким образом это можно исправить? Ато если я в php чтото шарю, то в js вообще практически полный ноль, а тем более когда речь заходит о взаимодействии php и js, то вообще страшно становится))
Тоесть принцип я понимаю, что обновить фрейм надо после того как сообщение занеслось в базу, но как это прописать не знаю...
0
16 / 16 / 0
Регистрация: 27.12.2009
Сообщений: 90
16.02.2010, 09:25
Мне кажется, что достаточно указать в коде после query header(location) (мануал: http://www.php.su/functions/?header ) на страничку с чатом. Да, будет медленно и некрасиво (страничка обновится), но альтернатива - только аякс. Еще вариант: отдельный фрейм с формой ввода сообщения и отдельный фрейм с чатом.
0
0 / 0 / 2
Регистрация: 13.01.2010
Сообщений: 129
16.02.2010, 09:35  [ТС]
Цитата Сообщение от Aego Посмотреть сообщение
Еще вариант: отдельный фрейм с формой ввода сообщения и отдельный фрейм с чатом.
так у меня так и есть. Поле для ввода сообщения и кнопка отправить - в одном фрейме, а вывод сообщений - в другом.Просто я не знаю как сделать так, чтобы функция обновления фрейма с сообщениями запускалась не после того, как я нажимаю кнопку send (она заносить сообщение в базу и запускает функцию), а после того как сообщение занеслось в базу.
0
16 / 16 / 0
Регистрация: 27.12.2009
Сообщений: 90
16.02.2010, 16:49
не совсем понимаю, что нужно. Попробуйте проверить, выполнился ли запрос в базу (mysql_query с insert into, если не ошибаюсь, возвращает 1 при успешном выполнении запроса). То есть:
PHP
1
2
3
4
if($query)
{
refresh_page();
}
0
0 / 0 / 2
Регистрация: 13.01.2010
Сообщений: 129
16.02.2010, 17:01  [ТС]
Цитата Сообщение от Aego Посмотреть сообщение
не совсем понимаю, что нужно. Попробуйте проверить, выполнился ли запрос в базу (mysql_query с insert into, если не ошибаюсь, возвращает 1 при успешном выполнении запроса). То есть:
PHP
1
2
3
4
if($query)
{
refresh_page();
}
Запрос то выполняется.Дело в том, что одна и та же кнопка выполняет 2е задачи.Она вставляет в базу новое сообщение и вызывает функцию, которая обновляет фрейм с выводом сообщений из базы(для того, чтобы после отправки нового сообщения, это сообщение сразу можно было увидеть в чате).Но дело в том, что функция срабатывает когда-как.Иногда она обновляет окно с сообщениями до того, как новое сообщение вставилось в базу.Тоесть фактически сообщение есть в базе, но не всегда его можно увидеть в чате сразу после нажатия кнопки, тоесть приходится ждать пока чат обновится автоматом(раз в 15сек) либо приходиться снова нажимать на кнопку, чтобы функция обновления снова сработала.Тоесть мне надо сделать чтобы страница обновлялась не сразу, а только после того, как сообщение занеслось в базу.А вот как это с помощью js сделать я не знаю.
0
16 / 16 / 0
Регистрация: 27.12.2009
Сообщений: 90
16.02.2010, 17:05
Используйте то, что я указал ранее. Тело условного оператора не выполнится пока запрос не будет выполнен. На JS точно можно сделать гораздо удобнее, но тут я не советник, да и подфорум не располагает.
1
Программист
 Аватар для motakuji
107 / 111 / 9
Регистрация: 27.09.2009
Сообщений: 331
11.06.2010, 10:43
zemelea, Вообще советую отправку и приём сообщений делать на js т.к. это будет удобнее для пользователя,нежели каждый раз перезагружать страничку. С помощью jQuery это очень легко сделать. У него есть метод Ajax с различными параметрами. Там можно посадить обработчики на события перед отправкой,после получения ответа,в следствии ошибки при отправке запроса. Я им очень часто пользуюсь. Прогугли и посмотри примеры. С сервера можно отдавать данные в формате json . Это будет намного быстрее работать,чем хмл,или хтмл.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.06.2010, 10:43
Помогаю со студенческими работами здесь

Чат на php из интернета
Скачал чат на php из интернета, а когда я поднял его через xampp - а он выдают вот такую ошибку, при этом не работает вход сам в чат. ...

Нужен php чат!
Помогите,делаю одну вещь,и нужен php чат с такими требованиями: 1)Чат на php,но без mysql базы,но если будет будет отвечать остальным...

Как создать чат на php?
Как создать чат на php. Дайте кто-нибудь пособие или программы

Не работает чат (PHP+Ajax)
Не работает простейший чат на PHP и Ajax. Суть проблемы - не работают PHP-функции Send() и Load(). Версия PHP - 7. На PHP 5 все работает. ...

Php + jquery + mysqli чат
Хочу создать на сайте раздел онлайн чатов, где каждый сможет создать свою "беседу". Никак не пойму с чего начать и какую структура для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru