Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/56: Рейтинг темы: голосов - 56, средняя оценка - 4.68
-48 / 3 / 2
Регистрация: 12.01.2015
Сообщений: 182

Проверка и добавление новых сообщений в чат браузера автономно, средствами AJAX и PHP

20.02.2015, 15:39. Показов 11304. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть DIV куда выводятся все сообщения.
PHP/HTML
1
2
3
4
5
6
<div id="chat_result" class="div_2_chat">
        <?
            //Выводим данные чата из базы mysql
            include ("output_chat.php");
        ?>
        </div>
Есть javascript который посылает запрос, на запись и вывод из базы mysql сообщения.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
$(function()
{
    $('#chat_submit').click(function(e)
    {
        e.preventDefault();
        var chat_name = $.trim($('#chat_name').val());
        var chat_textarea = $.trim($('#chat_textarea').val());
        var status = true
        //Проверяем переменные chat_name, chat_textarea пустые или нет
        if(chat_name == '')
        {
            $('#Modal_chat_name_errors_jQuery').html('Введите своё имя !');
            $('#Modal_chat_name_errors').show();
            status = false
        }
        if(chat_textarea == '')
        {
            $('#Modal_chat_textarea_errors_jQuery').html('Введите текст сообщения !');
            $('#Modal_chat_textarea_errors').show();
            status = false
        }   
        if(status)
        {
            //сдесь либо ajax запрос, или отправка формы
            //отправляю POST запрос и получаю ответ
            $$a({
                type:'post',//тип запроса: get,post либо head
                url:'save_chat.php',//url адрес файла обработчика
                data:{"chat_name":chat_name , "chat_textarea":chat_textarea},//Отправляю переменные chat_name, и chat_textarea можно отправить не только переменные (параметры запроса)
                response:'text',//тип возвращаемого ответа text либо xml
                success:function (data)//возвращаемый результат от сервера
                {
                    $$('chat_result',$$('chat_result').innerHTML+data);
                    //Автоматическая прокрутка scroll в чате вниз при добавления нового сообщения.
                    $(function()
                    {
                        var chat_scroll = $('#chat_result');
                        chat_scroll.scrollTop(chat_scroll.prop('scrollHeight'));
                    });
                    //Очищяем textarea после отправки сообщения
                    document.getElementById('chat_textarea').value='';
                }
            });
        }       
    });
    $('.Modal_chat_name_errors_close').click(function()
    {
        $(this).parent().hide();
    })
    $('.Modal_chat_textarea_errors_close').click(function()
    {
        $(this).parent().hide();
    })
});
Есть PHP обработчик который обрабатывает выше указанный javascript для записи и вывода из базы mysql сообщения.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// подключаемся к базе
include ("bd.php");
 
//Сохраняем дату и время пользователя
$chat_date = date("y.m.d H:i:s");
 
// сохраняем данные
mysql_query ("INSERT INTO chat (chat_name , chat_textarea , chat_date) VALUES ('$chat_name' , '$chat_textarea' , '$chat_date')");
 
//Выводим последнюю запись из таблицы chat и заключаем её в переменную $chat_result
$resultat = mysql_query("SELECT * FROM chat ORDER BY id DESC LIMIT 1",$db);
$array = mysql_fetch_array($resultat);
echo '<div class="div_chat">'.
        '<div>'.
            $array['chat_name'].
            '<span style="float:right">'.$array['chat_date'].'</span>'.
        '</div>'.
        //Функция ищет в тексте обозначения смайликов и заменяет на картинки
        '<br>'.$newtext = str_replace($smail, $grafic, $array['chat_textarea']).
     '</div>';
И Есть PHP который показывает все сообщения на странице, при загрузке браузера в окне DIV.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// подключаемся к базе
include ("bd.php");
 
//Выводим данные из базы mysql
$resultat = mysql_query("(SELECT * FROM chat ORDER BY id DESC LIMIT 5000) ORDER BY id ASC",$db);
$array = mysql_fetch_array($resultat);
do
{
echo '<div class="div_chat">'.
        '<div>'.
            $array['chat_name'].
            '<span style="float:right">'.$array['chat_date'].'</span>'.
        '</div>'.
        //Функция ищет в тексте обозначения смайликов и заменяет на картинки   
        '<br>'.$newtext = str_replace($smail, $grafic, $array['chat_textarea']).
     '</div>';   
}
while($array = mysql_fetch_array($resultat));
Итак вопрос, как мне сделать так, чтобы когда собеседник отправил сообщение которое записалось в базу mysql, мой браузер об этом узнал и добавил в div выведенных сообщений ниже по списку ну как в чате. Автоматически, и без обновления всей страницы.
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.02.2015, 15:39
Ответы с готовыми решениями:

Добавление сообщений в чат
Есть чат. Новые соощения в него добавляются так: кто-то на сервере добавил сообщение, с помощью GCM на андроид приходит уведомление о новом...

Vk Api проверка на наличие новых сообщений
Какой запрос нужен для того, чтобы узнать, есть ли непрочитаные сообщения?

Современный чат на php с мгновенным получением сообщений
Решил я создать чат. Пользователь жмёт кнопку &quot;Создать&quot;, получает уникально сгенерированную ссылку Даёт её кому угодно, все кто...

25
-48 / 3 / 2
Регистрация: 12.01.2015
Сообщений: 182
11.03.2015, 17:07  [ТС]
Студворк — интернет-сервис помощи студентам
Замучился уже не могу решить задачку, наверно дальше нужен JSON ? А мне это сложно понять пока
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//Заносим полученную переменную chat_id из ajax запроса, последнего id сообщения, в переменную $chat_ajax_id
$chat_ajax_id = $_POST['chat_id'];
 
// подключаемся к базе
include ("bd.php");
 
//Выводим последнии данные из базы mysql
$resultat = mysql_query("SELECT * FROM chat WHERE id > $chat_ajax_id");
$array = mysql_fetch_assoc($resultat);
if($array['id'] == '')
{
    exit();
}
else
{
    do
    {
    echo '<div class="div_chat">'.
              '<div>'.
                  $array['chat_name'].
                  '<span style="float:right">'.$array['chat_date'].'</span>'.
              '</div>'.
              //Функция ищет в тексте обозначения смайликов и заменяет на картинки 
              '<br>'.$newtext = str_replace($smail, $grafic, $array['chat_textarea']).
         '</div>';
    //Здесь получаем последний id
    $rewrite_chat_id = $array['id'];
    }
    while($array = mysql_fetch_assoc($resultat));
}
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//Функция для проверки и вывода, новых сообшений в чате по таймеру
$(function()
{
    setInterval(chat_time_id, 10000);//Запускаем ajax запрос по таймеру
    function chat_time_id()
    {       
        var chat_id = $('#chat_id').val();//Берём id из скрытого эелемента в echo '<div><input id="chat_id" type="text" value='.$chat_id.'></div>'; из value='.$chat_id.'
        //отправляю POST запрос и получаю ответ
        $$a(
        {
            type:'post',//тип запроса: get,post либо head
            url:'chat_id.php',//url адрес файла обработчика
            data:{"chat_id":chat_id},//Отправляю переменную chat_id
            success:function (data)//возвращаемый результат от сервера
            {
                $$('chat_result',$$('chat_result').innerHTML+data);         
                //Автоматическая прокрутка scroll в чате вниз при добавления нового сообщения.
                $(function()
                {
                    var chat_scroll = $('#chat_result');
                    chat_scroll.scrollTop(chat_scroll.prop('scrollHeight'));
                });
            }
        }); 
    }
});
0
12 / 12 / 1
Регистрация: 22.02.2015
Сообщений: 44
13.03.2015, 21:53
от те раз, я уж думал все, решился вопрос)
0
-48 / 3 / 2
Регистрация: 12.01.2015
Сообщений: 182
13.03.2015, 22:30  [ТС]
tokarev-vs,
А в итоге что ?
0
12 / 12 / 1
Регистрация: 22.02.2015
Сообщений: 44
13.03.2015, 23:00
а в чем загвоздка на этот раз, я уже запутался, если честно
0
-48 / 3 / 2
Регистрация: 12.01.2015
Сообщений: 182
14.03.2015, 09:16  [ТС]
tokarev-vs,
Спасибо всё нормально, эта тема практически тоже самое что и про value, просто я не знал на тот момент в каком направлении писать код, мне KOPOJI дал направление после я сам разобрался.
Продолжение этой темы писанина длинная я думаю можно остановиться, но если кому нужно я конечно допишу до конца .
0
0 / 0 / 0
Регистрация: 02.06.2021
Сообщений: 1
02.06.2021, 19:12
достало окно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.06.2021, 19:12
Помогаю со студенческими работами здесь

Как называется компонент VB в программе MS OE в окошке, где идет проверка новых сообщений?
Подскажите, как называется компонент VB в программе MS OE в окошке, где идет проверка новых сообщений. Он с полями Задачи, Состояние,...

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

Формирование ответа на AJAX запрос средствами PHP
Здравствуйте, уважаемые форумчане. Не раз находил здесь ответы на свои вопрос, и надеюсь что найду их и сейчас. Подскажите пожалуйста,...

PHP word добавление новых параграфов
Приветствую, нужно сделать следующее: есть большой текст из формы, который нужно внести в word файл, для этого использую библиотеку...

Ajax+php проверка формы.
Да,я понимаю что данный форум по php,но...поскольку включено 2 темы:ajax+php,решил всётаки написать сюда. Вот суть вопроса:Нужно,чтобы...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru