LISTADO DE REGISTROS A UNA TABLA CON PAGINADO SIMPLE
Primero hacemos un SELECT COUNT(*) para tener el número de registros.
El bloque de if corrige la página pedida si excede por abajo o arriba el N° de páginas i en $idini finalmente calcula el id inicial de la página pedida con: (pagina anterior X registros por página).
Antes de cargar la tabla debemos poner el menú con el paginado. Esto se hace en el bloque for primero se ve con el if si $i es la página actual y se le da la clase pagactual (roja) y no se le pone link, en los otros casos el link es la propia página con un parámetro p = N° de página. Luego abre nuevamente la base por debajo de la cabecera de tabla. En el SELECT ... LIMIT $idini,$regporpag va a cargar desde el id inicial calculado en el head hasta el número de registros por página. Le damos los estilos a cada columna y luego si se devuelven registros con (mysqli_num_rows) un while (fetch_array) que devuelve true si al avanzar un registro no llega al end of file, carga cada linea de la tabla con los valores correspondientes a ese registro. No olvidar el free_results y close finales y cerrar la etiqueta
						
<head>
	<? 
		include("conexion.php");	// abre la conexión a la base de datos
		global $conn;			//lo usamos en conexion, lo declaramos acá para no llamar siempre a $GLOBALS[]
	?>
	<style>
		td{
			border-bottom:#333 solid 1px;
			margin: 0px;
			padding: 5px;
			padding-bottom:3px;
			padding-top:3px;
		}
		.pagactual{
			color:#C00;
		}
		.pag{
			color:#03C;
		}
	</style>
	<?
	$regporpag=100;
	if(conectar()){
		//caculo el número total de registros y de páginas
		$sqltxt = "SELECT COUNT(*) AS total FROM clientes";
		$sqldevolucion = mysqli_query($conn,$sqltxt);
		$r = mysqli_fetch_array($sqldevolucion, MYSQLI_ASSOC);
		$total= $r["total"];
		$totalpag = ceil($total/$regporpag);  //supongamos 100 registros por página
	}
	$pagactual=0;
	if (isset($_GET["p"])){				//toma el número de página
		$pagactual= (int)$_GET["p"];	//lo carga en $pagactual
	}
	if ($pagactual<1){					// si da negativo lo manda a 1
		$pagactual=1;
	}else if ($pagactual>$totalpag){	// si se pasa del total lo manda a $totalpagina
		$pagactual=$totalpag;
	}
	$idini= ($pagactual-1)*$regporpag;	//esta cuenta me da el id inicial de la página pedida
	?>
</head>
<body>
<!--***********************menú de paginado**********************-->
	<div style="margin-bottom:10px; margin-top:10px; background-color:#CFF">
		<?
		for ($i=1 ; $i<=$totalpag ; $i++){
			if($i==$pagactual){
				echo("<span class='pagactual'>" . $i . "</span>    ");
			}else {
				echo( "<a href='?p=" . $i . "' class='pag'>" . $i . "</a>    " );
			}
		}
		?>
	</div>
<!--*********************** FIN menú de paginado**********************-->
	<table>
  		<tr>
    			<td width="40" style=" text-align:center">ID</td>
    			<td width="200" style=" text-align:center">NOMBRE</td>
    			<td width="200" style=" text-align:center">DIRECCION</td>
    			<td width="200" style=" text-align:center">MAIL</td>
    			<td width="160" style=" text-align:center">NACIMIENTO</td>
  		</tr>
		<?
		$sqltxt = "SELECT * FROM clientes LIMIT " .  $idini . "," . $regporpag;
		$sqldevolucion = mysqli_query($conn,$sqltxt);
		if (!mysqli_num_rows($sqldevolucion)) {
                	echo("Error, no se devuelven registros".$sqltxt );
		} else {
			$i=1;
                	while ($registro = mysqli_fetch_array($sqldevolucion, MYSQLI_ASSOC)){ 
				echo("<tr>");
					echo("<td>" . $registro["id"] . "</td>" );
					echo("<td>".$registro["nombre"] . "</td>" );
					echo("<td>".$registro["direccion"] . "</td>" );
					echo("<td>".$registro["mail"] . "</td>" );
				echo("<td style=' text-align:center;'>".$registro["fecha_nac"]  . "</td>" );
				echo("</tr>");
			}
			mysqli_free_result($sqldevolucion);      //devuelvo recurso a memoria
			mysqli_close($conn);						// cierro conexion
		}
		?>

	</table>
</body>

						
					
© IQSystems 2023