-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathindex.php
More file actions
164 lines (134 loc) · 6.39 KB
/
index.php
File metadata and controls
164 lines (134 loc) · 6.39 KB
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="description" content="Buscar datos en tiempo real con PHP, MySQL y AJAX">
<meta name="author" content="Marco Robles">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Almacen</title>
<!-- Bootstrap core CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
</head>
<body>
<main>
<div class="container py-4 text-center">
<h2>Empleados</h2>
<div class="row g-4">
<div class="col-auto text-start">
<label for="num_registros" class="col-form-label">Mostrar: </label>
</div>
<div class="col-auto text-start">
<select name="num_registros" id="num_registros" class="form-select">
<option value="10">10</option>
<option value="25">25</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</div>
<div class="col-auto text-start">
<label for="num_registros" class="col-form-label">registros </label>
</div>
<div class="col-md-4 col-xl-5"></div>
<div class="col-6 col-md-1 text-end">
<label for="campo" class="col-form-label">Buscar: </label>
</div>
<div class="col-6 col-md-3 text-end">
<input type="text" name="campo" id="campo" class="form-control">
</div>
</div>
<div class="row py-4">
<div class="col">
<table class="table table-sm table-bordered table-striped">
<thead>
<th class="sort asc">Num. empleado</th>
<th class="sort asc">Nombre</th>
<th class="sort asc">Apellido</th>
<th class="sort asc">Fecha nacimiento</th>
<th class="sort asc">Fecha ingreso</th>
<th></th>
<th></th>
</thead>
<!-- El id del cuerpo de la tabla. -->
<tbody id="content">
</tbody>
</table>
</div>
</div>
<div class="row justify-content-between">
<div class="col-12 col-md-4">
<label id="lbl-total"></label>
</div>
<div class="col-12 col-md-4" id="nav-paginacion"></div>
<input type="hidden" id="pagina" value="1">
<input type="hidden" id="orderCol" value="0">
<input type="hidden" id="orderType" value="asc">
</div>
</div>
</main>
<script>
// Llamando a la función getData() al cargar la página
document.addEventListener("DOMContentLoaded", getData);
// Función para obtener datos con AJAX
function getData() {
let input = document.getElementById("campo").value
let num_registros = document.getElementById("num_registros").value
let content = document.getElementById("content")
let pagina = document.getElementById("pagina").value || 1;
let orderCol = document.getElementById("orderCol").value
let orderType = document.getElementById("orderType").value
let formaData = new FormData()
formaData.append('campo', input)
formaData.append('registros', num_registros)
formaData.append('pagina', pagina)
formaData.append('orderCol', orderCol)
formaData.append('orderType', orderType)
fetch("load.php", {
method: "POST",
body: formaData
})
.then(response => response.json())
.then(data => {
content.innerHTML = data.data
document.getElementById("lbl-total").innerHTML = `Mostrando ${data.totalFiltro} de ${data.totalRegistros} registros`;
document.getElementById("nav-paginacion").innerHTML = data.paginacion
// Si la página actual no tiene resultados, ajustar la paginación para mostrar la primera página
if (data.data.includes('Sin resultados') && parseInt(pagina) !== 1) {
nextPage(1); // Ir a la primera página
}
})
.catch(err => console.log(err))
}
// Función para cambiar de página
function nextPage(pagina) {
document.getElementById('pagina').value = pagina
getData()
}
// Función para ordenar columnas
function ordenar(e) {
let elemento = e.target;
let orderType = elemento.classList.contains("asc") ? "desc" : "asc";
document.getElementById('orderCol').value = elemento.cellIndex;
document.getElementById("orderType").value = orderType;
elemento.classList.toggle("asc");
elemento.classList.toggle("desc");
getData()
}
// Función para cambiar de página
function resetPagina() {
document.getElementById('pagina').value = 1
getData()
}
// Event listeners para los eventos de cambio en el campo de entrada y el select
document.getElementById("campo").addEventListener("keyup", resetPagina);
document.getElementById("num_registros").addEventListener("change", getData);
// Event listener para ordenar las columnas
let columns = document.querySelectorAll(".sort");
columns.forEach(column => {
column.addEventListener("click", ordenar);
});
</script>
<!-- Bootstrap core JS -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
</body>
</html>