PHP - Refrescar fragmento de código automáticamente

 
Vista:

Refrescar fragmento de código automáticamente

Publicado por Samuel (2 intervenciones) el 04/12/2019 13:02:08
Buenas, estoy haciendo una plataforma de usuarios con PHP y db SQL.

Mi idea es crear una sección de chat,
en la que se muestre un historial de los últimos 20 mensajes en la pantalla y abajo un input para escribir y enviar mensajes.

Había pensado que la manera más sencilla de hacerlo es crear en la db una tabla para los mensajes, en la que cada item guarda:
el ID del emisor (con esto puedo obtener su nombre de usuario, nombre completo...),
el texto del mensaje
y la fecha.

Entonces en el html de la página hago valores de texto que con php coja el contenido de la db.
y con el input escribo nuevos valores en la db.

Todo correcto, y podría hacer que funcione todo correctamente sin problema.
El dilema es que así para ir actualizando los mensajes habría que refrescar la página.
¿Habría alguna forma de refrescar automáticamente cada segundo SOLAMENTE el div donde se encuentran los mensajes? Sin refrescar la página completa. Gracias.

Había pensado alomejor con JS, PHP. (O incluso podría de forma temporal arreglarlo con un iframe, pero quiero dejarlo bien montado).
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Bryan Alexander
Val: 179
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Refrescar fragmento de código automáticamente

Publicado por Bryan Alexander (45 intervenciones) el 04/12/2019 14:28:49
tienes algun código ya trabajado, con gusto te ayudo a poner el JS que necesitas.

para ampliarlo más, lo más sencillo seria que los mensajes los vayas mostrando en un DIV y ese DIV lo estaras refrescando cada cierto tiempo a traves del JS, me avisas si necesitas ayuda con esto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de José Manuel
Val: 211
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Refrescar fragmento de código automáticamente

Publicado por José Manuel (62 intervenciones) el 09/12/2019 16:49:12
Hola:

Creo que debes evitar el uso de iframes en lo posible. Si, tendrías que usar JavaScript + PHP.

PHP para todo lo que es servidor: actualización de mensajes, consulta, almacenado, etc., y JavaScript para mostrar el refresco de los mensajes, etc.

Actualmente puedes elegir entre usar entre el método AJAX Polling, COMET, Server Sent Events y WebSockets. Cada uno tiene sus cosas pero el primero, lo descartaría. Me quedaría con alguno de los dos últimos.

Por si te vale:
https://codeburst.io/polling-vs-sse-vs-websocket-how-to-choose-the-right-one-1859e4e13bd9
https://thedebuggers.com/client-server-communication-http-polling-sse-websockets-comets/
https://github.com/CppComet/php-chat-example
https://github.com/lcherone/sse-chat-example
https://github.com/wsphp/php-websocket-chat
https://eole-io.github.io/sandstone-doc/examples/multichannel-chat.html

Un saludo,
https://obelearningservices.com/blog/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Refrescar fragmento de código automáticamente

Publicado por Samuel (2 intervenciones) el 13/12/2019 15:07:47
A ver, lo he intentado y no encuentro manera.
He visto que hay formas de dejar el DIV vacío y que periodicamente el valor que quieres meter dentro lo sacas de otro archivo, pero no me gustaría llegar a esto.

Me gustaría simplemente refrescar todo el contenido de un <div> o <section> cada 2 segundos para que los valores de las consultas SQL se actualicen y se impriman en la página correctamente con PHP y HTML.

Les muestro la idea,

Screenshot_2

La idea es, como ven en la captura de pantalla, he creado un chat que se guarda en una base de datos. Y se imprimen los valores de la tabla chat de último a más reciente. Pero necesito recargar la página completa (F5) para que después de recibir un mensaje me aparezca en la página. Quiero que se refresquen automáticamente pero sin recargar la web completa.

Por favor, si pueden pasarme un código de ejemplo adaptado lo agradecería. Saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Bryan Alexander
Val: 179
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Refrescar fragmento de código automáticamente

Publicado por Bryan Alexander (45 intervenciones) el 17/12/2019 15:35:21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$(document).ready(function () {
    var interval = 500;   //número de milisegudos en que vuelve a hacer la llamada de la función.
    var refresh = function() {
        $.ajax({
            url: "path/to/server/page.php",
            cache: false,
            success: function(html) {
                $('#server-name').html(html);
                setTimeout(function() {
                    refresh();
                }, interval);
            }
        });
    };
    refresh();
});
 
<div id="server-name"></div>

Que pasa acá? Una vez la página carga, el ajax llama a page.php quien me regresara el resultado deseado. Los resultados se muestran dentro de el DIV con id server-name, el setTimeout tiene intevalo en milisegundos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar