Errores en paginación en PHP
Publicado por Katze (6 intervenciones) el 20/06/2018 01:00:19
Tengo un problema con el siguiente código. Lo que debería hacer es mostrar una paginación en la que se muestren nueve productos por página. Eso lo hace. El problema está en las páginas que genera. Tal y como tengo el código y los productos ahora mismo (11 productos), me hace la paginación bien, pero en vez de mostrarme dos páginas, me muestra tres, y la tercera la muestra en blanco, pero es que si le cambio el número de elementos a mostrar por 6, me salen 5 páginas y sólo me muestra los productos en las dos primeras (que vuelvo a decir que salen bien, 6 y 5, respectivamente). ¿Cuál es el error que tengo para que me salgan tantas páginas?
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
<section class="filtro">
<form method="post">
<h3>Ordenar por:
<select name="ordenar">
<option value="1">Orden alfabético (A-Z)</option>
<option value="2">Orden alfabético inverso (Z-A)</option>
<option value="3">Precio más bajo a más alto</option>
<option value="4">Precio más alto a más bajo</option>
<option value="5">Orden predeterminado</option>
</select>
<button type="submit" class="btn btn-danger"><b>Aplicar</b></button>
</h3>
</form>
</section>
<div class="mostrar_productos">
<?php
//Muestra los productos y contiene las funcionalidades del filtro
$conexion = mysqli_connect($servidor, $usuario_BD, $contrasena_BD, $basedatos);
mysqli_set_charset($conexion, "utf8");
//Paginación
$elementos = 6;
if (isset($_GET['pagina_numerada'])) {
$pagina_numerada = $_GET['pagina_numerada'];
}else{
$pagina_numerada = 1;
}
$empieza = ($pagina_numerada-1) * $elementos;
//Condiciones del filtro y de la paginación
if(!isset($_POST['ordenar'])){
$consulta = "SELECT * FROM producto WHERE categoria = 'cuerda' LIMIT $empieza, $elementos";
}else{
if ($_POST['ordenar'] == "1"){
$consulta = "SELECT * FROM producto WHERE categoria='cuerda' order by nombre_producto asc ";
echo "<h4>Productos ordenados alfabéticamente (A-Z)</h4>";
}
if ($_POST['ordenar'] == "2"){
$consulta = "SELECT * FROM producto WHERE categoria='cuerda' order by nombre_producto desc";
echo "<h4>Productos ordenados alfabéticamente de forma inversa (Z-A)</h4>";
}
if ($_POST['ordenar'] == "3"){
$consulta = "SELECT * FROM producto WHERE categoria='cuerda' order by precio asc";
echo "<h4>Productos ordenados de precio más bajo a más alto</h4>";
}
if ($_POST['ordenar'] == "4"){
$consulta = "SELECT * FROM producto WHERE categoria='cuerda' order by precio desc";
echo "<h4>Productos ordenados de precio más alto a más bajo</h4>";
}
if ($_POST['ordenar'] == "5"){
$consulta = "SELECT * FROM producto WHERE categoria='cuerda'";
}
}
$resultado = mysqli_query($conexion, $consulta);
//Muestra productos
while ($fila = mysqli_fetch_assoc($resultado)) {
echo "<div class='col-md-3 col-xs-5 producto_individual'>";
$consulta2 = "SELECT * FROM producto WHERE id_producto = " .$fila["id_producto"] ."";
$resultado2 = mysqli_query($conexion, $consulta2);
echo "<h2>" . $fila['nombre_producto'] . "</h2>";
echo "<img src='imagenes/" .$fila["imagen"] . "' width = 100px>";
echo "<p>" . $fila['descripcion_corta'] . "</p>";
echo "<p>Precio: " . $fila['precio'] . " €</p>";
echo "<a class='btn btn-danger' href='producto_individual.php?id_producto=" .$fila["id_producto"]. "'><b>Ver más</b></a> ";
//Formulario oculto que reoge los datos del producto para guardarlos en el carrito.
echo "<form action='carrito.php' method='post' name='compra' style='display:inline;'>";
echo "<input name='id_producto' type='hidden' value='".$fila["id_producto"]."'/>";
echo "<input name='nombre_producto' type='hidden' value='".$fila["nombre_producto"]."'/>";
echo "<input name='precio' type='hidden' value='".$fila["precio"]."'/>";
echo "<button type='submit' class='btn btn-danger' name='comprar' value='comprar'><b>Comprar</b></button> ";
echo "<input style='width:35px' name='cantidad' type='number' value='1'/>";
echo "</form></div>";
}
$consulta3 = "SELECT * FROM producto";
$resultado3 = mysqli_query($conexion, $consulta3);
$total_registros = mysqli_num_rows($resultado3);
$total_paginas = ceil($total_registros / $elementos);
echo "<center><a href='cuerda.php?pagina_numerada=1'>". 'Primera '."</a>";
for ($i=1; $i <= $total_paginas; $i++) {
echo "<a href='cuerda.php?pagina_numerada=".$i."'>".$i."</a>";
}
//Link a última página
echo "<a href='cuerda.php?pagina_numerada=$total_paginas'>".' Última'."</a></center>";
mysqli_close($conexion);
?>
</div>
Valora esta pregunta
0