PHP - Error paginación

 
Vista:
sin imagen de perfil
Val: 54
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Error paginación

Publicado por Sergio (112 intervenciones) el 26/05/2021 17:23:25
Tengo un código maestro/detalle con una paginación y un combo para buscar por número de presupuesto. Hasta aquí bien. Si voy pulsando por los enlaces de la paginación funciona perfectamente. Si despliego el combo y pulso en cualquier opción, también funciona. El problema viene que si pulso en el combo y luego en algún enlace de la paginación, hasta que no lo pulso dos veces no me muestra el registro correspondiente.
También deciros que al pulsar en cualquier opción del combo, la url no me cambia. Me explico, mi url es index.php?pagina=1, si pulso en el combo en la opción 2, en la paginación si cambia el link activo pero la url no cambia.

Os pongo el código que está relacionado con la paginación.

Gracias.
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
[Reemplace este texto
 
<?php
 
session_start();
include "conexion.php";
//include "scripts.php";
$obj= new conectar();
$conexion = $obj->conexion();
$sql_total="SELECT * FROM presupuestos";
$resultado=mysqli_query($conexion, $sql_total);
$total_paginas_bd=mysqli_num_rows($resultado);
 
if($total_paginas_bd == 0){?>
  <h1 class="ml-2">Presupuestos</h1>
  <div class="container-fluid">
      <div class="row">
          <div class="col-md-12 text-center">
              No hay presupuestos en la base de datos
          </div>
      </div>
      <div class="row">
          <div class="col-md-12">
            <span class="btn btn-primary mt-2 mb-4" data-toggle="modal" id="modal_presupuestos" data-target="#agregarpresupuestomodal">Agregar Presupuesto <span class="fas fa-plus-circle"></span></span>
          </div>
      </div>
  </div>
 
<?php
}else{
$registros_por_pagina = 1;
$numero = 0;
?>
<h1 class="ml-2">Presupuestos</h1>
<div class="mb-3 ml-3" id="buscar"><?php echo buscar()?></div>
<div id="presupuestos">
 
<?php
$idpre = '';
$id_pre = '';
$total_paginas = $total_paginas_bd / $registros_por_pagina;
$total_presupuesto = 0;
if(!$_GET){
    header('Location:index.php?pagina=1');
}
if($_GET['pagina'] > $total_paginas_bd || $_GET['pagina'] <= 0){
    header('Location:index.php?pagina=1');
}
if(!is_numeric($_GET['pagina'])){
    header('Location:index.php?pagina=1');
}
$iniciar = ($_GET['pagina']-1) * $registros_por_pagina;
if(isset($_SESSION['consulta'])){
  if($_SESSION['consulta'] > 0){
 
    $idpre = $_SESSION['consulta'];
    $sql="SELECT * FROM presupuestos WHERE id_presupuesto = '".$idpre."'";
    $_GET['pagina'] = $idpre;
    unset($_SESSION['consulta']);
  }else{
    $sql = "SELECT * FROM presupuestos LIMIT $iniciar, $registros_por_pagina";
  }
 
}else{
  if(isset($_SESSION['id_presupuesto']))
  {
 
    $sql="SELECT * FROM presupuestos WHERE id_presupuesto = '".$_SESSION['id_presupuesto']."'";
    unset($_SESSION['id_presupuesto']);
 
  }else{
  $sql = "SELECT * FROM presupuestos LIMIT $iniciar, $registros_por_pagina";
  }
}
$result=mysqli_query($conexion, $sql);
while ($mostrar = mysqli_fetch_assoc($result)) {
 
    $id_pre = $mostrar['id_presupuesto'];
    $numero = $numero + 1;
    $sql_cliente = "SELECT nombre FROM clientes WHERE id_cliente= '".$mostrar['id_cliente_pre']."'";
    $result_cliente = mysqli_query($conexion, $sql_cliente);
    $mostrar_cliente = mysqli_fetch_assoc($result_cliente);
 
?>
    <div class="container-fluid">
 
        <div class="container-fluid border border-warning">
        <div class="row mt-1" style="font-size: 14px;">
            <div class="col-md-3 mt-2">
                <label>Nº presupuesto</label>
                <input type="text" hidden id="id_pre" value="<?php echo $id_pre; ?>">
                <input class="text-center shadow bg-white rounded" readonly type="text" value="<?php echo $mostrar['numero_presupuesto']; ?>">
            </div>
            <div class="col-md-3 mt-2">
                <label>Fecha presupuesto</label>
                <input class="text-center shadow bg-white rounded" readonly type="text"
                 value="<?php echo date_format( new datetime($mostrar['fecha_presupuesto']), 'd/m/Y'); ?>">
            </div>
            <div class="col-md-3 mt-2">
                <label>Cliente</label>
                <input class="text-center shadow bg-white rounded" readonly type="text"
                 value="<?php echo $mostrar_cliente['nombre']?>">
            </div>
            <div class="col-md-3 mt-2">
                <label>Presupuesto sin Iva</label>
                <?php $total = $mostrar['total_presupuesto'];?>
 
                <input class="text-center shadow bg-white rounded" id="total_presupuesto" readonly type="text" value="<?php echo number_format($total,2,',','.').'€';?>">
            </div>
        </div>
        <div class="row mt-3 mb-1" style="font-size: 14px;">
            <div class="col-md-4 mt-2">
                <label>Iva %</label>
                <input class="text-center shadow bg-white rounded" readonly type="text" value="<?php echo dameiva() ?>">
            </div>
            <div class="col-md-4 mt-2">
                <label>Importe iva</label>
                <input class="text-center shadow bg-white rounded text-danger font-weight-bold" readonly type="text"
                 value="<?php echo number_format($mostrar['total_iva'], 2, ',', '.').'€' ; ?>">
             </div>
            <div class="col-md-4 mt-2">
                <label>Total Presupuesto</label>
                <input class="text-center shadow bg-white rounded text-danger font-weight-bold" readonly type="text"
                 value="<?php echo number_format($mostrar['total_con_iva'], 2, ',', '.').'€';?>">
            </div>
        </div>
        </div>
        <div class="row">
            <div class="col-md-3">
                <span class="btn btn-primary mt-2 mb-4" data-toggle="modal" id="modal_presupuestos" data-target="#agregarpresupuestomodal">Agregar Presupuesto <span class="fas fa-plus-circle"></span></span>
            </div>
            <div class="col-md-3">
                <span class="btn btn-danger mt-2" onclick="eliminarPresupuesto('<?php echo $mostrar['id_presupuesto'];?>')">Eliminar Presupuesto
                            <span class="fas fa-trash-alt"></span>
                        </span>
            </div>
            <div class="col-md-3">
                <span class="btn btn-warning mt-2" data-toggle="modal" data-target="#modalEditarPresupuestos"
                                onclick="agregaFrmActualizarPresupuesto('<?php echo $mostrar['id_presupuesto'];?>')">Actualizar Presupuesto
                            <span class="fas fa-edit"></span>
                        </span>
            </div>
            <div class="col-md-3">
                <span class="btn btn-primary mt-2" onclick="imprimir_presupuesto('<?php echo $mostrar['id_presupuesto'];?>')">Imprimir Presupuesto
                            <span class="fas fa-print"></span>
                        </span>
            </div>
 
 
        <table class="table table-bordered mt-0 ml-2 mr-3" id="tabla_detalle">
                    <thead style="background-color: blue; color: white; font-weight: bold;">
                        <tr>
                            <th class="col-md-6">Descripción</th>
                            <th>Cantidad</th>
                            <th>Precio</th>
                            <th>Subtotal</th>
                            <th>Editar</th>
                            <th>Eliminar</th>
                        </tr>
                    </thead>
        <tbody>
        <?php
 
            $sql_pre = "SELECT * FROM presupuestos WHERE id_presupuesto = '".$mostrar['id_presupuesto']."'";
            $resultado_pre = mysqli_query($conexion, $sql_pre);
            $row=mysqli_fetch_assoc($resultado_pre);
            $total_presupuesto = $row['total_presupuesto'];
            $sql_detalles = "SELECT * FROM detalles_presupuesto WHERE id_presupuesto = '".$mostrar['id_presupuesto']."' order by id_detalle_presupuesto ASC";
            $resultado_detalle = mysqli_query($conexion, $sql_detalles);
            while ($mostrar_detalle = mysqli_fetch_assoc($resultado_detalle)){
                ?>
 
                <tr>
                    <td><?php echo $mostrar_detalle['descripcion'];?></td>
                    <td><?php echo $mostrar_detalle['cantidad'];?></td>
                    <td><?php echo number_format($mostrar_detalle['precio'], 2, ',', '.').'€';?></td>
                    <td><?php echo number_format($mostrar_detalle['subtotal'], 2, ',', '.').'€';?></td>
 
 
                    <td style="text-align: center;">
                        <span class="btn btn-warning btn-sm" data-toggle="modal" data-target="#modalEditar"
                                onclick="agregaFrmActualizardetalle('<?php echo $mostrar_detalle['id_detalle_presupuesto'];?>')">
                            <span class="fas fa-edit"></span>
                        </span>
                    </td>
                    <td style="text-align: center;">
                        <span class="btn btn-danger btn-sm" onclick="eliminarDatos('<?php echo $mostrar_detalle['id_detalle_presupuesto'];?>')">
                            <span class="fas fa-trash-alt"></span>
                        </span>
                    </td>
 
                </tr>
 
 
            <?php
 
            $id_pre=$mostrar['id_presupuesto'];
 
                }
            ?>
 
 
                    </tbody>
 
                </table>
 
<?php
}
 
?>
 
</div>
    <span class="btn btn-success mb-4 ml-3" data-toggle="modal" data-target="#agregardetalle" onclick="pasar_id('<?php echo $id_pre;?>')">Añadir linea <span class="fas fa-plus-circle"></span></span>
 
    <?php if (ceil($total_paginas / $registros_por_pagina) > 0): ?>
    <nav aria-label="Page navigation example">
<ul class="pagination">
 
	<!--<?php if ($_GET['pagina'] > 1): ?>
	<li class="page-item"><a class="page-link" href="index.php?pagina=<?php echo $_GET['pagina']-1 ?>">Anterior</a></li>
	<?php endif; ?>-->
  <li class="page-item <?php echo $_GET['pagina']<=1 ? 'disabled' : '';?>">
                <a class="page-link" href="index.php?pagina=<?php echo $_GET['pagina']-1;?>">Anterior</a></li>
 
	<?php if ($_GET['pagina'] > 3): ?>
	<li class="start"><a class="page-link" href="index.php?pagina=1">1</a></li>
	<li class="dots">...</li>
	<?php endif; ?>
 
	<?php if ($_GET['pagina']-2 > 0): ?><li class="page-item"><a class="page-link" href="index.php?pagina=<?php echo $_GET['pagina']-2 ?>"><?php echo $_GET['pagina']-2 ?></a></li><?php endif; ?>
	<?php if ($_GET['pagina']-1 > 0): ?><li class="page-item"><a class="page-link" href="index.php?pagina=<?php echo $_GET['pagina']-1 ?>"><?php echo $_GET['pagina']-1 ?></a></li><?php endif; ?>
 
	<li class="page-item active"><a class="page-link" href="index.php?pagina=<?php echo $_GET['pagina'] ?>"><?php echo $_GET['pagina'] ?></a></li>
 
	<?php if ($_GET['pagina']+1 < ceil($total_paginas / $registros_por_pagina)+1): ?><li class="page-item"><a class="page-link" href="index.php?pagina=<?php echo $_GET['pagina']+1 ?>"><?php echo $_GET['pagina']+1 ?></a></li><?php endif; ?>
	<?php if ($_GET['pagina']+2 < ceil($total_paginas / $registros_por_pagina)+1): ?><li class="page-item"><a class="page-link" href="index.php?pagina=<?php echo $_GET['pagina']+2 ?>"><?php echo $_GET['pagina']+2 ?></a></li><?php endif; ?>
 
	<?php if ($_GET['pagina'] < ceil($total_paginas / $registros_por_pagina)-2): ?>
	<li class="dots">...</li>
	<li class="page-item"><a class="page-link" href="index.php?pagina=<?php echo ceil($total_paginas / $registros_por_pagina) ?>"><?php echo ceil($total_paginas / $registros_por_pagina) ?></a></li>
	<?php endif; ?>
 
	<!--<?php if ($_GET['pagina'] < ceil($total_paginas / $registros_por_pagina)): ?>
	<li class="page-item"><a class="page-link" href="index.php?pagina=<?php echo $_GET['pagina']+1 ?>">Siguiente</a></li>
	<?php endif; ?>-->
  <li class="page-item <?php echo $_GET['pagina']>=$total_paginas ? 'disabled' : '';?>">
                <a class="page-link" href="index.php?pagina=<?php echo $_GET['pagina']+1;?>">Siguiente</a></li>
</ul>
<?php endif; ?>
    </div>
    </div>
    </nav>
<?php
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