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
Very descriptive blog, I loved that bit. Will there be a part 2?
nope
Hola buenas tardes, Excelente Tutorial, una pregunta, no se satura el servidor con tantas peticiones, gracias por aclarar mi duda de antemano.
Hola, al parecer no es recomendable para el servidor. Le recomiendo WebSocket de Laravel y ahi lo dejo un tutorial simple de WebSocket https://www.tutofox.com/laravel/laravel-websockets-pusher/