Created
June 24, 2020 05:00
-
-
Save parzibyte/128eec5d633d1481231b6234b78b0d2d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
# Este es el simple encabezado HTML | |
include_once "encabezado.php"; | |
# Incluimos la conexión | |
include_once "base_de_datos.php"; | |
# Cuántos productos mostrar por página | |
$productosPorPagina = 3; | |
// Por defecto es la página 1; pero si está presente en la URL, tomamos esa | |
$pagina = 1; | |
if (isset($_GET["pagina"])) { | |
$pagina = $_GET["pagina"]; | |
} | |
# El límite es el número de productos por página | |
$limit = $productosPorPagina; | |
# El offset es saltar X productos que viene dado por multiplicar la página - 1 * los productos por página | |
$offset = ($pagina - 1) * $productosPorPagina; | |
# Necesitamos el conteo para saber cuántas páginas vamos a mostrar | |
$sentencia = $base_de_datos->query("SELECT count(*) AS conteo FROM productos"); | |
$conteo = $sentencia->fetchObject()->conteo; | |
# Para obtener las páginas dividimos el conteo entre los productos por página, y redondeamos hacia arriba | |
$paginas = ceil($conteo / $productosPorPagina); | |
# Ahora obtenemos los productos usando ya el OFFSET y el LIMIT | |
$sentencia = $base_de_datos->prepare("SELECT * FROM productos LIMIT ? OFFSET ?"); | |
$sentencia->execute([$limit, $offset]); | |
$productos = $sentencia->fetchAll(PDO::FETCH_OBJ); | |
# Y más abajo los dibujamos... | |
?> | |
<div class="col-xs-12"> | |
<h1>Productos</h1> | |
<table class="table table-bordered"> | |
<thead> | |
<tr> | |
<th>ID</th> | |
<th>Código</th> | |
<th>Descripción</th> | |
<th>Precio de compra</th> | |
<th>Precio de venta</th> | |
<th>Existencia</th> | |
</tr> | |
</thead> | |
<tbody> | |
<?php foreach ($productos as $producto) { ?> | |
<tr> | |
<td><?php echo $producto->id ?></td> | |
<td><?php echo $producto->codigo ?></td> | |
<td><?php echo $producto->descripcion ?></td> | |
<td><?php echo $producto->precioCompra ?></td> | |
<td><?php echo $producto->precioVenta ?></td> | |
<td><?php echo $producto->existencia ?></td> | |
</tr> | |
<?php } ?> | |
</tbody> | |
</table> | |
<nav> | |
<div class="row"> | |
<div class="col-xs-12 col-sm-6"> | |
<p>Mostrando <?php echo $productosPorPagina ?> de <?php echo $conteo ?> productos disponibles</p> | |
</div> | |
<div class="col-xs-12 col-sm-6"> | |
<p>Página <?php echo $pagina ?> de <?php echo $paginas ?> </p> | |
</div> | |
</div> | |
<ul class="pagination"> | |
<!-- Si la página actual es mayor a uno, mostramos el botón para ir una página atrás --> | |
<?php if ($pagina > 1) { ?> | |
<li> | |
<a href="./listar.php?pagina=<?php echo $pagina - 1 ?>"> | |
<span aria-hidden="true">«</span> | |
</a> | |
</li> | |
<?php } ?> | |
<!-- Mostramos enlaces para ir a todas las páginas. Es un simple ciclo for--> | |
<?php for ($x = 1; $x <= $paginas; $x++) { ?> | |
<li class="<?php if ($x == $pagina) echo "active" ?>"> | |
<a href="./listar.php?pagina=<?php echo $x ?>"> | |
<?php echo $x ?></a> | |
</li> | |
<?php } ?> | |
<!-- Si la página actual es menor al total de páginas, mostramos un botón para ir una página adelante --> | |
<?php if ($pagina < $paginas) { ?> | |
<li> | |
<a href="./listar.php?pagina=<?php echo $pagina + 1 ?>"> | |
<span aria-hidden="true">»</span> | |
</a> | |
</li> | |
<?php } ?> | |
</ul> | |
</nav> | |
</div> | |
<?php include_once "pie.php" ?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment