Mensajes en tiempo real Php

Este post nos muestra como hacer un mensaje en tiempo real. Mensajes que llega solamente sin recargar la pagina y algo de javascript para peticiones desde api.

Primero debes aprender de guardar datos –> https://www.tutofox.com/react-native/guardar-datos-en-php-con-poo/

y luego como nos muestra los mensajes. Crear una clase llamado index.php, debes introducir código algo de php para listar los mensajes.

     <?php
      
        include ('ModeloMensaje.php');
        $message = new ModeloMensaje;
        $datos = $message->listar();
      ?>

      <table class="table table-bordered order-table ">
        <thead>
          <tr>
            <th>Asunto</th>
            <th>Mensaje</th>
            <th>Fecha</th>
          </tr>
        </thead>
        <tbody id="bodytable">

        <?php foreach ($datos as $value){ ?>
            <tr>
              <td><?= $value['titulo']; ?></td>
              <td><?= $value['mensaje']; ?></td>
              <td><?= $value['desde']; ?></td>
            </tr>
        <?php } ?>
        </body>
      </table>

y agregar script para mensaje nuevo, la parte setInterval(ciclo, 5000); es cada ciclo de 5 segundos de enviar peticion desde la url «api.php» y llega los resultados y agrega el mensaje por si hay nuevo.

<script>

    var myVar = setInterval(ciclo, 5000);

    function ciclo (){

     $.get( "api.php", function( data ) {


        const prueba = JSON.parse(data);

        if (prueba.success==true) {

          console.log("actualizado exitosamente")

          prueba.registro.map((columna)=>{

            $( "#bodytable" ).append( "<tr><td>"+columna.titulo+"</td><td>"+columna.mensaje+"</td><td>"+columna.desde+"</td></tr>" ).show('slow');
            //$("#bodytable").hide().appendTo("<tr><td>"+columna.titulo+"</td><td>"+columna.mensaje+"</td><td>"+columna.desde+"</td></tr>").show('normal');

          })

        }
        else{
          console.log("no hay datos "+prueba.success)
        }

      });

    }
    </script>

La parte api.php es donde llega los datos de api

<?php

  include ('ModeloMensaje.php');


  $message = new ModeloMensaje;
// consula la base de datos de si hay mensaje no leido
  $datos = $message->consulta_mensaje_noleido();

  if ($datos->num_rows>=1){

    $datanew = [];

    foreach ($datos as  $value) {
      //declarar variable
      $datacol['titulo']  = $value['titulo'];
      $datacol['mensaje']  = $value['mensaje'];
      $datacol['desde']  = $value['desde'];
      // actualizar no leido a leido
      $message->update_mensaje($value['id']);
      // agregar array de parametro
      array_push($datanew,$datacol);
    }

    $response['registro'] = $datanew;
    $response['success'] = true;
  }
  else {
    $response['registro'] = null;
    $response['success'] = false;
  }

  // respuesta de json
  echo json_encode($response);

?>

Agregar nuevas funciones en el archivo ModeloMensaje.php, función para listar

  public function listar(){

    $conn =  $this->conectar_bd();

    $consulta = "SELECT * FROM mensaje WHERE leido=1  ORDER by id DESC ";

    $res = $conn->query($consulta);

    //$res = mysqli_query($enlace, $consulta);

    return $res;

  }

función para consultar de mensaje no leído

  public function consulta_mensaje_noleido(){

    $conn =  $this->conectar_bd();

    $consulta = "SELECT * FROM mensaje WHERE leido=0 ";
    $res = $conn->query($consulta);
    return $res;

  }

funcion para actualizar de no leido a leido

  public function update_mensaje($id){

    $conn =  $this->conectar_bd();

    $consulta = "UPDATE `mensaje` SET leido=1 WHERE id=$id ";
    $res = $conn->query($consulta);
    //return $res;

  }

Códigos fuentes

https://github.com/artyom-developer/message-timereal-php

4 comentarios sobre “Mensajes en tiempo real Php”

  1. Hola buenas tardes, Excelente Tutorial, una pregunta, no se satura el servidor con tantas peticiones, gracias por aclarar mi duda de antemano.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *