Paginar resultados de consulta generada con fechas

Tengo un problema necesito paginar una consulta pero el problema es que esta se genera al seleccionar dos fechas. Yo me baje un código que página para la página 1 funciona bien porque van las fechas pero para el resto de páginas ya no funciona porque no le llegan las dos fechas. ¿Alguien tiene la solución de como hacerle llegar esas fechas siempre?

1 Respuesta

Respuesta
1
Hay varias soluciones para eso, pero te voy a explicar la más sencilla, porque para otras más elegantes necesitaría ver el código que usas.
En el código que página los resultados, siempre habrá enlaces hacia las siguientes páginas. Algo así como:
<a href="elmismofichero.php?pag=2">2</a>
Pues lo que tienes que hacer es añadir ahi las fechas en cuestion:
<a href="elmismofichero.php?pag=2&fecha1=12-12-12&fecha2=13-13-13">2</a>
y luego recogerlas al principio del fichero con..
$fecha1=$_GET['fecha1'];
$fecha2=$_GET['fecha2'];
Bien, esta solución arrastra valores de unas páginas a otras con el método GET.
Pero esto te sirve si eres tu quien hace el código. Si ya te bajaste un script hecho, seguramente tendría este tema resuelto (porque si no, ¡Vaya pena de paginador!).
Para decirte que es lo que falla entonces, necesitaría echarle un vistazo al código que te bajaste.
Si quieres, no des por finalizada la pregunta y escribe la parte del código en cuestión.
Un saludo. Hasta otra.
Otra vez. Añade las variables por e y en el action del formulario y la etiqueta </form> ponla después que se escriba el $_pagi_navegacion.
echo "<form name='form1' method='post' action=''";
echo $PHP_SELF;
echo "?x=".$HTTP_POST_VARS["x"]."&y=".$HTTP_POST_VARS["y"]."'>";
echo "<table align='center' border=0 cellpadding=5 width='90%'>";
echo "<tr>";
echo "<td width='30%' align='center' class='cuadroTitulo'><b>Resumen</td>";
echo "</tr>";
....
echo "</table>";
echo "<table align='center'>
<tr><td>  </td></tr>
<tr><td align='center' colspan='3'><font size='2'>Página de resultados:   ".$_pagi_navegacion."<br></font></p></td></tr></form>
...
Cuéntame si ya te funciona con estas modificaciones
Aquí te envío el script de la paginación:
<?php
/*
** Paginator
** Paginación de resultados de consultas a MySql con PHP
**
** Versión 1.5
**
** Nombre de archivo :
** paginator.inc.php
**
** Autor :
** Jorge Pinedo Rosas (jpinedo) <[email protected]>
** Con la colaboración de los usuarios del foro de PHP de www.forosdelweb.com
** Especialmente de dooky que posteó el código en el que se basa este script.
**
** Versión 1.0 (30/11/2003): -Versión inicial.
** Versión 1.1 (12/01/2004): -Se agregó la propagación de las variables que llegan al script vía url ($_GET)
** en los enlaces de navegación por las páginas.
** -Se optimizó el conteo del total de registros utilizando el COUNT(*) de MySql.
** Versión 1.3 (10/08/2004): -Se agregó la opción de limitar el número enlaces que se mostrarán en la barra
** de navegación. Gracias a la recomendación de Jorge Camargo (andinistas)
** -Se agregó la opción de elegir si se quiere mostrar los mensajes de error de mysql.
** -Se agregó la generación de información de la página actual en una cadena que contiene
** el total de registros de la consulta y el primer y último registro de la página actual.
** Versión 1.4 (12/08/2004): -Se agregó la opción de elegir qué variables se quiere propagar por url. Se ha utilizado
** la misma forma de hacerlo que utiliza la Clase Paginado de webstudio.
** (http://www.forosdelweb.com/showthread.php?t=65528). Gracias a la acalmación popular :)
** Versión 1.4.1 (06/09/2004): -Corregido el bug en la propagación de variables por GET al renombrar la variable
** "pg" por "_pagi_pg". Esto sólo ocurre en la versión 1.4. Gracias a jean pierre m. por
** reportar el bug.
** Versión 1.5 (03/11/2004): -Se agregó la opción de elegir si se hace el conteo desde mySQL (COUNT(*)) o desde PHP (mysql_num_rows()).
** Esta es una de las modificaciones más importantes porque gracias a esto, ahora el script funciona para
** cualquier tipo de consulta, corrigiendo una de sus principales limitaciones. Gracias a César (CDs) por
** sus ganas de colaborar y su paciencia.
**
** Descripción :
** Devuelve el resultado de una consulta sql por páginas, así como los enlaces de navegación respectivos.
** Este script ha sido pensado con fines didácticos, por eso la gran cantidad de comentarios.
**
** Licencia :
** GPL con las siguientes extensiones:
** *Uselo con el fin que quiera (personal o lucrativo).
** *Si encuentra el código de utilidad y lo usa, mandeme un mail si lo desea o deje un comentario en la página
** de documentación.
** *Si mejora el código o encuentra errores, hagamelo saber al mail indicado o deje un comentario en la página
** de documentación.
**
** Documentación y ejemplo de uso:
** http://jpinedo.webcindario.com/
**-----------------------------------------------------------------------------------------------------------*/
/**
* Variables que se pueden definir antes de incluir el script vía include():
* ------------------------------------------------------------------------
* $_pagi_sql OBLIGATORIA. Cadena. Debe contener una sentencia sql válida (y sin la cláusula "limit").
* $_pagi_cuantos OPCIONAL. Entero. Cantidad de registros que contendrá como máximo cada página.
Por defecto está en 20.
* $_pagi_nav_num_enlaces OPCIONAL Entero. Cantidad de enlaces a los números de página que se mostrarán como
Máximo en la barra de navegación.
Por defecto se muestran todos.
* $_pagi_mostrar_errores OPCIONAL Booleano. Define si se muestran o no los errores de MySQL que se puedan producir.
Por defecto está en "true";
* $_pagi_propagar OPCIONAL Array de cadenas. Contiene los nombres de las variables que se quiere propagar
por el url. Por defecto se propagarán todas las que ya vengan por el url (GET).
* $_pagi_conteo_alternativo OPCIONAL Booleano. Define si se utiliza mysql_num_rows() (true) o COUNT(*) (false).
Por defecto está en false.
--------------------------------------------------------------------------
*/
/*
* Verificación de los parámetros obligatorios y opcionales.
*------------------------------------------------------------------------
*/
if(empty($_pagi_sql)){
// Si no se definió $_pagi_sql... grave error!
// Este error se muestra sí o sí (ya que no es un error de mysql)
die("<b>Error Paginator : </b>No se ha definido la variable \$_pagi_sql");
}
if(empty($_pagi_cuantos)){
// Si no se ha especificado la cantidad de registros por página
// $_pagi_cuantos será por defecto 20
$_pagi_cuantos = 20;
}
if(!isset($_pagi_mostrar_errores)){
// Si no se ha elegido si se mostrará o no errores
// $_pagi_errores será por defecto true. (Se muestran los errores)
$_pagi_mostrar_errores = true;
}
if(!isset($_pagi_conteo_alternativo)){
// Si no se ha elegido el tipo de conteo
// Se realiza el conteo dese mySQL con COUNT(*)
$_pagi_conteo_alternativo = false;
}
//------------------------------------------------------------------------
/*
* Establecimiento de la página actual.
*------------------------------------------------------------------------
*/
if (empty($_GET['_pagi_pg'])){
// Si no se ha hecho click a ninguna página específica
// O sea si es la primera vez que se ejecuta el script
// $_pagi_actual es la pagina actual-->será por defecto la primera.
$_pagi_actual = 1;
}else{
// Si se "pidió" una página específica:
// La página actual será la que se pidió.
$_pagi_actual = $_GET['_pagi_pg'];
}
//------------------------------------------------------------------------
/*
* Establecimiento del número de páginas y del total de registros.
*------------------------------------------------------------------------
*/
// Contamos el total de registros en la BD (para saber cuántas páginas serán)
// La forma de hacer ese conteo dependerá de la variable $_pagi_conteo_alternativo
if($_pagi_conteo_alternativo == false){
$_pagi_sqlConta = eregi_replace("select (.*) from", "SELECT COUNT(*) FROM", $_pagi_sql);
$_pagi_result2 = mysql_query($_pagi_sqlConta);
// Si ocurrió error y mostrar errores está activado
if($_pagi_result2 == false && $_pagi_mostrar_errores == true){
die (" Error en la consulta de conteo de registros: $_pagi_sqlConta. Mysql dijo: <b>".mysql_error()."</b>");
}
$_pagi_totalReg = mysql_result($_pagi_result2,0,0);//total de registros
}else{
$_pagi_result3 = mysql_query($_pagi_sql);
// Si ocurrió error y mostrar errores está activado
if($_pagi_result3 == false && $_pagi_mostrar_errores == true){
die (" Error en la consulta de conteo alternativo de registros: $_pagi_sql. Mysql dijo: <b>".mysql_error()."</b>");
}
$_pagi_totalReg = mysql_num_rows($_pagi_result3);
}
// Calculamos el número de páginas (saldrá un decimal)
// con ceil() redondeamos y $_pagi_totalPags será el número total (entero) de páginas que tendremos
$_pagi_totalPags = ceil($_pagi_totalReg / $_pagi_cuantos);
//------------------------------------------------------------------------
/*
* Propagación de variables por el URL.
*------------------------------------------------------------------------
*/
// La idea es pasar también en los enlaces las variables hayan llegado por url.
$_pagi_enlace = $_SERVER['PHP_SELF'];
$_pagi_query_string = "?";
if(isset($_pagi_propagar)){
// Si se definió el array para elegir qué variables propagar
if(!is_array($_pagi_propagar)){
// si $_pagi_propagar no es un array... grave error!
die("<b>Error Paginator : </b>La variable \$_pagi_propagar debe ser un array");
}else{
// Este foreach está tomado de la Clase Paginado de webstudio
// (http://www.forosdelweb.com/showthread.php?t=65528)
foreach($_pagi_propagar as $var){
$_pagi_query_string.= $var."=".$GLOBALS[$var]."&";
}
}
}else{
// Si no se definió qué variables propagar, se propagan todas las que vienen por URL
if(isset($_GET)){
// Si ya se han pasado variables por url, escribimos el query string concatenando
// los elementos del array $_GET excepto la variable $_GET['pg'] si es que existe.
$_pagi_variables = $_GET;
foreach($_pagi_variables as $_pagi_clave => $_pagi_valor){
if($_pagi_clave != '_pagi_pg'){
$_pagi_query_string .= $_pagi_clave."=".$_pagi_valor."&";
}
}
}
}
// Añadimos el query string a la url.
$_pagi_enlace .= $_pagi_query_string;
//------------------------------------------------------------------------
/*
* Generación de los enlaces de paginación.
*------------------------------------------------------------------------
*/
// La variable $_pagi_navegacion contendrá los enlaces a las páginas.
$_pagi_navegacion = '';
if ($_pagi_actual != 1){
// Si no estamos en la página 1. Ponemos el enlace "anterior"
$_pagi_url = $_pagi_actual - 1; //será el número de página al que enlazamos
$_pagi_navegacion .= "<a href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>« Anterior</a> ";
}
// La variable $_pagi_nav_num_enlaces sirve para definir cuántos enlaces con
// números de página se mostrarán como máximo.
// Ojo: siempre se mostrará un número impar de enlaces. Más info en la documentación.
if(!isset($_pagi_nav_num_enlaces)){
// Si no se definió la variable $_pagi_nav_num_enlaces
// Se asume que se mostrarán todos los números de página en los enlaces.
$_pagi_nav_desde = 1;//Desde la primera
$_pagi_nav_hasta = $_pagi_totalPags;//hasta la última
}else{
// Si se definió la variable $_pagi_nav_num_enlaces
// Calculamos el intervalo para restar y sumar a partir de la página actual
$_pagi_nav_intervalo = ceil($_pagi_nav_num_enlaces/2) - 1;
// Calculamos desde qué número de página se mostrará
$_pagi_nav_desde = $_pagi_actual - $_pagi_nav_intervalo;
// Calculamos hasta qué número de página se mostrará
$_pagi_nav_hasta = $_pagi_actual + $_pagi_nav_intervalo;
// Ajustamos los valores anteriores en caso sean resultados no válidos
// Si $_pagi_nav_desde es un número negativo
if($_pagi_nav_desde < 1){
// Le sumamos la cantidad sobrante al final para mantener el número de enlaces que se quiere mostrar.
$_pagi_nav_hasta -= ($_pagi_nav_desde - 1);
// Establecemos $_pagi_nav_desde como 1.
$_pagi_nav_desde = 1;
}
// Si $_pagi_nav_hasta es un número mayor que el total de páginas
if($_pagi_nav_hasta > $_pagi_totalPags){
// Le restamos la cantidad excedida al comienzo para mantener el número de enlaces que se quiere mostrar.
$_pagi_nav_desde -= ($_pagi_nav_hasta - $_pagi_totalPags);
// Establecemos $_pagi_nav_hasta como el total de páginas.
$_pagi_nav_hasta = $_pagi_totalPags;
// Hacemos el último ajuste verificando que al cambiar $_pagi_nav_desde no haya quedado con un valor no válido.
if($_pagi_nav_desde < 1){
$_pagi_nav_desde = 1;
}
}
}
for ($_pagi_i = $_pagi_nav_desde; $_pagi_i<=$_pagi_nav_hasta; $_pagi_i++){//Desde página 1 hasta última página ($_pagi_totalPags)
if ($_pagi_i == $_pagi_actual) {
// Si el número de página es la actual ($_pagi_actual). Se escribe el número, pero sin enlace y en negrita.
$_pagi_navegacion .= "<b> $_pagi_i </b>";
}else{
// Si es cualquier otro. Se escibe el enlace a dicho número de página.
$_pagi_navegacion .= "<a href='".$_pagi_enlace."_pagi_pg=".$_pagi_i."'>".$_pagi_i."</a> ";
}
}
if ($_pagi_actual < $_pagi_totalPags){
// Si no estamos en la última página. Ponemos el enlace "Siguiente"
$_pagi_url = $_pagi_actual + 1; //será el número de página al que enlazamos
$_pagi_navegacion .= "<a href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>Siguiente »</a>";
}
//------------------------------------------------------------------------
/*
* Obtención de los registros que se mostrarán en la página actual.
*------------------------------------------------------------------------
*/
// Calculamos desde qué registro se mostrará en esta página
// Recordemos que el conteo empieza desde CERO.
$_pagi_inicial = ($_pagi_actual-1) * $_pagi_cuantos;
// Consulta SQL. Devuelve $cantidad registros empezando desde $_pagi_inicial
$_pagi_sqlLim = $_pagi_sql." LIMIT $_pagi_inicial,$_pagi_cuantos";
$_pagi_result = mysql_query($_pagi_sqlLim);
// Si ocurrió error y mostrar errores está activado
if($_pagi_result == false && $_pagi_mostrar_errores == true){
die ("Error en la consulta limitada: $_pagi_sqlLim. Mysql dijo: <b>".mysql_error()."</b>");
}
//------------------------------------------------------------------------
/*
* Generación de la información sobre los registros mostrados.
*------------------------------------------------------------------------
*/
// Número del primer registro de la página actual
$desde = $_pagi_inicial + 1;
// Número del último registro de la página actual
$hasta = $_pagi_inicial + $_pagi_cuantos;
if($hasta > $_pagi_totalReg){
// Si estamos en la última página
// El ultimo registro de la página actual será igual al número de registros.
$hasta = $_pagi_totalReg;
}
$_pagi_info = "desde el $desde hasta el $hasta de un total de $_pagi_totalReg";
//------------------------------------------------------------------------
/**
* Variables que quedan disponibles después de incluir el script vía include():
* ------------------------------------------------------------------------
* $_pagi_result Identificador del resultado de la consulta a la BD para los registros de la página actual.
Listo para ser "pasado" por una función como mysql_fetch_row(), mysql_fetch_array(),
mysql_fetch_assoc(), etc.
* $_pagi_navegacion Cadena que contiene la barra de navegación con los enlaces a las diferentes páginas.
Ejemplo: "<<anterior 1 2 3 4 siguiente>>".
* $_pagi_info Cadena que contiene información sobre los registros de la página actual.
Ejemplo: "desde el 16 hasta el 30 de un total de 123";
*/
?>
Y el archivo que lo utiliza es:
<?
session_start();
if($_SESSION['autentificado'] == "SI"){
?>
<html>
<head>
<title></title>
<!-- <LINK REL="stylesheet" TYPE="text/css" HREF="./estilos/cuadros.css"> -->
<LINK REL="stylesheet" TYPE="text/css" HREF="cuadros.css">
<style type="text/css">
<!--
.style1
{
font-family: Arial, Verdana, sans-serif;
}
-->
</style>
</head>
<body>
<br><h2 div align="right"><font size="2"><a href="cerrarsesion.php" class="style1">Cerrar Sesión</a></font></h2>
<br><h2 div align="center">Reporte especial</div></h2>
<?php
require ("conexion.php");
$miconexion=new DB_mysql("bdpeticion" , "ured", "root" , "root");
if(!$miconexion->conectar())
{
echo $miconexion->Error;
}
else{
//Se empieza a paginar la consulta
$_pagi_sql = "SELECT tbusuario.UsuNom, tbusuario.UsuApe, tbusuario.UsuTipide, tbusuario.UsuIde, tbpeticio.PetFecfor, tbpeticio.PetResu, tbrespues.ResResu, tbrespues.ResSit FROM tbusuario, tbpeticio, tbrespues WHERE tbusuario.UsuId=tbpeticio.UsuId and tbpeticio.PetId=tbpeticio.PetId and tbpeticio.PetId=tbrespues.PetId and tbpeticio.PetFec BETWEEN '".$HTTP_POST_VARS["x"]."' and '".$HTTP_POST_VARS["y"]."' ORDER BY PetFec";
//cantidad de resultados por p?ina (opcional, por defecto 20)
$_pagi_cuantos = 5;
//cantidad de enlaces que se mostrarán como máximo en la barra de navegación
$_pagi_nav_num_enlaces = 10;//Elegí un número pequeño para que se note el resultado
//Decidimos si queremos que se muesten los errores de mysql
$_pagi_mostrar_errores = false;//recomendado true sólo en tiempo de desarrollo.
//Si tenemos una consulta compleja que hace que el Paginator no funcione correctamente,
//realizamos el conteo alternativo.
$_pagi_conteo_alternativo = true;//recomendado false.
//Supongamos que sólo nos interesa propagar estas dos variables
$_pagi_propagar = array("id","termino");//No importa si son POST o GET
//Se incluye el script de paginacin. ?te ya ejecuta la consulta autom?icamente
include("paginator.inc.php");
if ( $miconexion->consultar("SELECT tbpeticio.PetFecfor, tbpeticio.PetResu, tbrespues.ResResu, tbrespues.ResSit FROM tbpeticio, tbrespues WHERE tbpeticio.PetId=tbpeticio.PetId and tbpeticio.PetId=tbrespues.PetId and tbpeticio.PetFec BETWEEN '".$HTTP_POST_VARS["x"]."' and '".$HTTP_POST_VARS["y"]."'") )
{
if ( $miconexion->numregistros() )
{
echo "<form name='form1' method='post' action=''";
echo $PHP_SELF;
echo "'>";
echo "<table align='center' border=0 cellpadding=5 width='90%'>";
echo "<tr>";
echo "<td width='30%' align='center' class='cuadroTitulo'><b>Resumen</td>";
echo "</tr>";
//Se lee y escribe los registros de la p?ina actual
while ($row = mysql_fetch_array($_pagi_result))
{
echo "<tr> ";
echo "<td class='cuadroBordeAzul' width='60%'><b>Nombre(s): </b>".$row[0]."<br>";
echo "<b>Apellido(s): </b>".$row[1]."<br>";
echo "<b>Tipo de Identificación: </b>".$row[2]."<br>";
echo "<b>Número de Identificación: </b>".$row[3]."<br>";
echo "<b>Fecha: </b>".$row[4]."<br>";
echo "<b>Detalle:</b><br>".$row[5]."<br>";
echo "<b>Respuesta:</b><br>".$row[6]."<br>";
echo "<b>Situación: </b>".$row[7]."<br>";
echo "</tr>";
}
echo "</table>";
echo "</form>";
echo "<table align='center'>
<tr><td>  </td></tr>
<tr><td align='center' colspan='3'><font size='2'>Página de resultados:   ".$_pagi_navegacion."<br></font></p></td></tr>
<tr><td align='center'><font size='2' face='Arial'><a href='reportespecial.php'>Regresar</a></font></td>
<td>  </td>
<td align='center'><a href='reportespecialdos.php?c=".$HTTP_POST_VARS['x']."&d=".$HTTP_POST_VARS['y']."'>Imprimir</a></td>
<td>  </td>
<td align='center'><font size='2' face='Arial'><a href='menuadministrador.php'>Men&uacute administrador</a></font></td>
<tr><table>";
}
else {
echo "<font face='Arial' size='4' color='black'><center>En éste momento no hay registros para mostrar, por favor vuelvalo a intentar más tarde.</font>";
echo "<br>";
echo "<table align='center'>
<tr><td>  </td></tr>
<tr><td align='center'><font size='2' face='Arial'><a href='reportespecial.php'>Regresar</a></font></td>
<td>  </td>
<td align='center'><font size='2' face='Arial'><a href='menuadministrador.php'>Men&uacute administrador</a></font></td>
</tr><table>";
}
}
$miconexion->cerrarConexion();
$miconexion->liberarResult();
}
?>
</body>
</html>
<?}
else
{
header("Location: validar.php");
}
?>
Hola te cuento que ensaye y no funciona igual de el registro 2 en adelante no funciona el paginator. Me podrías dar otra mano. Gracias por la ayuda.
Vaya, debería funcionar.
¿Me das la dirección de tu página para que lo vea en directo?
Si no la tienes colgada, dame al menos un volcado de la estructura mysql de la tabla en cuestión para que yo la simule en mi servidor
Venga, vamos a resolver este bug.
Hasta ahora.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas