PHP - DATATABLE con paginación

 
Vista:

DATATABLE con paginación

Publicado por Jorge (48 intervenciones) el 21/04/2021 19:04:17
Buenas tardes,

Estoy implementando una datatable con paginación teniendo en cuenta el siguiente tutorial:

https://datatables.net/examples/styling/bootstrap4

En mi caso la tabla es dinámica, y obtiene muchos registros, cuando digo muchos son unos 500 sino más, dependiendo de los filtros que aplica el usuario previamente. Pero es bien extraño pq cuando carga la página donde tengo el datatable, de primeras muestra todas las filas a pesar de que por defecto se indica que se muestren de 10 en 10 y cuando termina de ejecutar la consulta entonces se muestra el bloque de 10 y la botonera inferior para cambiar de página. ¿Ya es normal este comportamiento?

Gracias de antemano!

Jorge
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 Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

DATATABLE con paginación

Publicado por Mauro (1038 intervenciones) el 22/04/2021 21:55:09
Hola Jorge:

Suena un poco extraño lo que te sucede... ¿puedes publicar el código que estás utilizando? Es posible que haya algún problema con la configuración de tu DataTable.

Saludos!
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

DATATABLE con paginación

Publicado por Jorge (48 intervenciones) el 23/04/2021 08:57:56
Buenos días Mauro,

En primer lugar gracias de antemano por tu apoyo.

A continuación el código fuente para la tabla:

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
<table id="example" class="table table-striped table-bordered" style="width:100%">
        <thead>
            <tr>
                <th>fpeticion</th>
                 <th>cod. MAT</th>
                <th>id</th>
                <th>idorigen</th>
          </tr>
          </thead>
		<tbody>
[Aquí en esta línea tengo código PHP con la consulta SQL madre
y otras consultas a otras tablas de la base de datos para obtener la descripción de los campos ID]
                        <tr>
						<td><?php echo $fpeticion1; ?></td>
						<td><?php echo $conces1; ?></td>
						<td><?php echo $id1; ?></td>
						<td><?php echo $idorigen1; ?></td>
                         </tr>
               </tbody>
               <tfoot>
					<tr>
						<th>fpeticion</th>
						<th>cod. MAT</th>
						<th>id</th>
						<th>idorigen</th>
                                        </tr>
               </tfoot>
</table>
 
<script>
 
$(document).ready(function() {
    $('#example').DataTable();
} );
 
$('#example').dataTable( { "searching": false } );
 
</script>
</body>
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 Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

DATATABLE con paginación

Publicado por Mauro (1038 intervenciones) el 27/04/2021 14:05:18
Hola Jorge:

Gracias por el código :)

Veo un par de cosas que me llaman la atención:

Para comenzar, veo que estás invocando a DataTable en dos oportunidades... no creo que eso sea conveniente.

Por otro lado, nota que en una de las llamadas usas DataTable (lo cual es correcto) y en la otra dataTable... dudo que esta segunda funcione... ¿no estás viendo un error en la consola de tu navegador?

En definitiva, creo que tu código debería quedar así:

1
2
3
4
5
6
<script>
 
$(document).ready(function() {
    $('#example').DataTable({ "searching": false });
} );
</script>

Por si te ayuda, he armado un ejemplo de uso de DataTables con PHP y Ajax que puedes ver aquí.

Consúltame si te quedan dudas ;)
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

DATATABLE con paginación

Publicado por Jorge (48 intervenciones) el 28/04/2021 13:20:12
Hola Mauro,

En primer lugar muchas gracias por tus comentarios.

A pesar de haber modificado el código para que el DataTable solo sea invocado una vez:

1
2
3
4
5
6
7
8
9
<script>
 
$(document).ready(function() {
 
    $('#example').DataTable({ "searching": false });
 
} );
 
</script>


Sigue teniendo el siguiente comportamiento:

- Hasta que no ha terminado de ejecutar la consulta a la base de datos no muestra la botonera de páginación ni el "show 10 entries" que aparece en la parte superior. Cuando termina de ejecutar la consulta a la base de datos entonces muestra el DataTable con 10 filas y con la botonera en la parte inferior para consultar los siguientes registros.

¿Cómo hacer para qué desde la primera vez que carga la página se muestre el DataTable con 10 registros y botonera de paginación?

Gracias de antemano.

Saludos,
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 Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

DATATABLE con paginación

Publicado por Mauro (1038 intervenciones) el 28/04/2021 21:01:15
Hola Jorge!

Veo algo que me llama un poco la atención. En tu código noto que estás generando la tabla junto con el resto del HTML:

1
2
3
4
5
6
7
8
9
10
<tbody>
[Aquí en esta línea tengo código PHP con la consulta SQL madre
y otras consultas a otras tablas de la base de datos para obtener la descripción de los campos ID]
    <tr>
    <td><?php echo $fpeticion1; ?></td>
    <td><?php echo $conces1; ?></td>
    <td><?php echo $id1; ?></td>
    <td><?php echo $idorigen1; ?></td>
     </tr>
</tbody>

Debería ver la consulta para ver exactamente qué registros se están trayendo pero, de cualquier modo, se me hace que sería más simple si hicieras la carga vía Ajax.
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

DATATABLE con paginación

Publicado por Jorge (48 intervenciones) el 29/04/2021 09:27:52
Hola Mauro,

En el <tbody> del DataTable tengo el siguiente código:

1
2
3
4
5
$sqlCOC = "SELECT fpeticion, conces, id, idorigen,
						FROM vrevmat
						WHERE $whereCondicion1
						ORDER BY fpeticion";
				$rsCOC = mysqli_query($con, $sqlCOC);

Donde "vrevmat" es una VISTA. Y las siguientes líneas a la consulta son:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<tr>
						<td><?php echo $fpeticion1; ?></td>
						<td><?php echo $conces1; ?></td>
						<td><?php echo $id1; ?></td>
						<td><?php echo $idorigen1; ?></td>
</tr>
</tbody>
</table>
 
<script>
$(document).ready(function() {
    $('#example').DataTable();
} );
</script>
</body>
</html>

Sobre lo que me comentas de hacerlo en Ajax no tengo conocimiento en Ajax, nunca lo he utilizado, ¿cómo podría hacerlo? Gracias!!
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 Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

DATATABLE con paginación

Publicado por Mauro (1038 intervenciones) el 30/04/2021 16:49:53
Hola Jorge!

Nota que en el SQL que estás usando no tienes ningún tipo de LIMIT ni OFFSET, con lo cual, estás trayendo todos los resultados posibles, no sólo los primeros X.

Por el tema de ajax, aquí tienes una serie de articulos que he escrito al respecto y, en particular, por el tema de DataTables y Ajax puedes ver el artículo que te mencionaba en un mensaje anterior: https://academy.leewayweb.com/construyendo-una-tabla-dinamica-con-php-mysql-datatables-y-ajax/

Consúltame si te queda alguna duda ;)
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