Problemas para paginar en una búsqueda de php

No puedo PAGINAR un resultado de Búsqueda, una consulta de toda la Tabla de mi BD si se página correctamente, Pero al hacer una Búsqueda si me muestra el resultado pero me muestra los Links de Toda la Tabla, pero al hacer clic en uno de elos Links me aparece error. Lo que quiero es que me Pagine solo los resultados de la Búsqueda. Mientras no. No se cual es mi error, este es el código que estoy utilizando.
Por favor ayudame te lo agradecería bastante.. Gracias.
<?php
// Abre conexión con la base de datos
$connection = mysql_connect("localhost", "admingss", "gss");
// Selecciona la base de datos
mysql_select_db("globalcliente", $connection);
if (!isset($_GET['pag'])) {
$pag = 1; // Por defecto, pagina 1
} else {
$pag = $_GET['pag']; // Página actual
}
// Obtiene todos los registros de la tabla
$consulta = mysql_query("SELECT COUNT(*) FROM ventas ", $connection);
list($total) = mysql_fetch_row($consulta);
// Número de registros por página
$tampag = 4;
// Calcula el rango de los registros
$reg1 = ($pag-1) * $tampag;
//empieza la Busqueda
       $busqueda=$_POST['busqueda'];
       $btnbuscar=$_POST['btnBuscar'];
       if (isset($btnbuscar)) {
        $consulta=mysql_query("SELECT * FROM ventas WHERE Num_Cliente LIKE '$busqueda' ORDER BY Fecha DESC LIMIT $reg1, $tampag",$connection);
        $result=mysql_fetch_row($consulta);
        if ($result==0){
         print 'No se encontro registro en la BD';
        } else { 
        print '<TABLE BORDER="1"  CELLSPACING="0" CELLPADDING="3">
<tr>
<td colspan="8" align="center" bgcolor="#cecef6">BASE DE DATOS DE PEDIDOS</td>
</tr>
         <TR bgcolor="#d8d8d8" >
         <TH valign="middle"> Numero Cliente</TH>
         <TH valign="middle"> Orden Compra</TH>
         <TH valign="middle"> #Partidas</TH>
         <TH valign="middle"> Fecha Entrega</TH>
         <TH valign="middle"> Forma Pago</TH>
         <TH valign="middle"> Estatus</TH>
         <TH valign="middle"> Fecha</TH>
         <TH valign="middle"> Comentarios </TH>
          </TR>';
        while ($datos=mysql_fetch_assoc($consulta)) {
         print'
<tr>
<td width="30">'.$datos['Num_Cliente'].'</td>
<td width="30">'.$datos['Orden_Compra'].'</td>
<td width="30">'.$datos['Num_Partidas'].'</td>
<td width="80">'.$datos['Fecha_Pago'].'</td>
<td width="90">'.$datos['Tipo_Pago'].'</td>
<td width="80">'.$datos['Estatus'].'</td>
<td width="80">'.$datos['Fecha'].'</td>
<td width="110" align="justify">'.$datos['Comentarios'].'</td>
</tr>
';
        }
        print '
</table>
';
        }
       }
/* Función para paginación
* $actual - página actual
* $total - total de registros
* $reg_pagina - registros por página
* $link - enlace para la siguiente página
* Devuelve la cadena HTML de paginación
*/
function paginar($actual, $total, $reg_pagina, $link) {
$total_paginas = ceil($total/$reg_pagina);
$anterior = $actual - 1;
$posterior = $actual + 1;
if ($actual>1)
$texto = "<a href='$link$anterior'>«</a> ";
else
$texto = "<b>«</b> ";
for ($i=1; $i<$actual; $i++)
$texto .= "<a href='$link$i'>$i</a> ";
$texto .= "<b>$actual</b> ";
for ($i=$actual+1; $i<=$total_paginas; $i++)
$texto .= "<a href='$link$i'>$i</a> ";
 if ($actual<$total_paginas && $total_paginas>1)
 $texto .= "<a href='$link$posterior'>»</a>";
 else
 $texto .= "<b>»</b>";
return $texto;
}
echo "<center>";
// Pinta la cadena HTML de paginación
echo paginar($pag, $total, $tampag, "paginacion.php?pag=");
echo "</center>";
?>

2 Respuestas

Respuesta
1
El problema es que el script de buscar está esperando los criterios de búsqueda por $_POST (mira donde pone $_POST['busqueda'])
Si cambias $_POST['busqueda'] por $_GET['busqueda'] y en el link que le pasas a la función paginar pones algo parecido a:
echo paginar($pag, $total, $tampag, "paginacion.php?busqueda=$busqueda&pag=");
debería de empezar a funcionarte más o menos bien.
Seguramente también tengas que cambiar el método del formulario de búsqueda de POST a GET, para que se envíen los parámetros. Y en vez de comprobar que $_GET['btnbuscar'] está seteado, puedes hacer un $_GET['busqueda'] !== '' para comenzar la búsqueda.
Mi consejo es que hagas debug de tu código, prueba a poner un echo de $consulta justo antes de hacer el mysql_fetch_rows para seleccionar los items buscados, y así puedes validar que la consulta sea correcta (con PHPMyAdmin o similar).
Respuesta
1
Bueno el código es un poco largo pero por lo que veo al principio te recomendaría esta opción.
Si con el $_GET['pag'] recibes el número de página, lo que debes hacer es que al realizar la consulta haces la query con LIMIT y por ejemplo creas una variable $numpaginas y quedaría algo así con un ejemplo para páginas de 10 elementos:
$numpaginas = 10;
$limit = parseint($_GET['pag'])*$numpaginas;
$consulta = mysql_query("SELECT COUNT(*) FROM ventas LIMIT ".$limit.",".$numpaginas, $connection);

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas