Stack Overflow en español Asked by Ramon Albares on December 23, 2021
helpme
Nombre
<th scope="col">Nombre proyecto</th>
<th scope="col">Aprobado </th>
<th scope="col">No Aprobado</th>
<th scope="col">Abstencion</th>
</tr>
@foreach ($mostrarusers as $mostraruser)
<tr>
<td>{{$mostraruser->usuario}}</td>
<td>{{$mostraruser->proyecto}}</td>
<td>{{$mostraruser->si}}</td>
<td>{{$mostraruser->no}}</td>
<td>{{$mostraruser->voto_en_blanco}}</td>
</tr>
@endforeach
la idea es que se muestre entiempo real la tabla
la funcion del controller es esta
$mostrarusers = DB::table('votos')
->join('users','users.id','=','votos.user_id')
->join('nombre_votos','nombre_votos.id','=','votos.id_nombre_votos')
->select('users.name as usuario', 'nombre_votos.nombre as
proyecto','si','no','voto_en_blanco')
->whereDate('votos.created_at', Carbon::today())
->get();
Corrígeme si me equivoco (ya que no enviaste muchos datos para entenderte mejor), pero yo supongo que tu tienes algo así en tu controlador:
function controladorVista()
{
$mostrarusers = DB::table('votos')
->join('users','users.id','=','votos.user_id')
->join('nombre_votos','nombre_votos.id','=','votos.id_nombre_votos')
->select('users.name as usuario', 'nombre_votos.nombre as
proyecto','si','no','voto_en_blanco')
->whereDate('votos.created_at', Carbon::today())
->get()
return view('index', compact('mostrarusers'));
}
Si es así, lamento decirte que tu lista solo se actualizará cuando hagas refresh(recargues la página). Ahora partiendo de eso las opciones que tienes para actualizar tu página sin necesidad de recargar esta serian:
1 - Hacer una petición vía ajax a una ruta/endpoint de tu servidor en laravel, esto te traerá tu lista y podrás actualizar tu tabla, para ello tendrías que adicionarle la función setInterval de js que la ejecute cada cierto tiempo (tal vez cada 3 minutos).
En tu controller:
function getMostrarUsers()
{
$mostrarusers = DB::table('votos')
->join('users','users.id','=','votos.user_id')
->join('nombre_votos','nombre_votos.id','=','votos.id_nombre_votos')
->select('users.name as usuario', 'nombre_votos.nombre as
proyecto','si','no','voto_en_blanco')
->whereDate('votos.created_at', Carbon::today())
->get();
return response()->json($mostrarusers, 200);
}
En tu archivo de rutas(routes/web.php) por defecto
Route::get('/mostrar-users', 'TuControlador@getMostrarUsers')->name('rest.getMostrarUsers');
(En tu view/vista) Entonces en el parte de tus <scripts>
o un archivo js
externo, sería más o menos así (Usando JQuery
):
function cargarTabla(){
$.ajax({
url : '{{ route('rest.getMostrarUsers')}}',
method : 'GET',
success : function(r){
let lista = r;
let htmlCode = ``;
$.each(lista, function(index, item){
htmlCode+=`<tr>
<td>${item.nombreProyecto}</td>
<td>${totalDeSi}</td>
<td>${totalDeNo}</td>
<td>${totalVotoBlanco}</td>
</tr>`;
});
$('#id-mi-tabla tbody').html(htmlCode);
}
});
}
En el mismo documento usando el document ready, cargarías esta función cada cierto tiempo así:
$( document ).ready(function() {
setInterval(cargarTabla, 180000);//Cada 3 minutos (180 mil milisegundos)
});
2 - Usar websockets, que sería lo óptimo, con esto podrías configurar que cada vez que haces un insert/update/delete de algo relacionado a tu lista(como un voto), disparé un evento en laravel que se encargue de actualizar tu tabla a todos los clientes que estén suscritos a este. esto si sería en tiempo real.
Answered by Jorge Luis Bustamante Jara on December 23, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP