Foros del Web » Programando para Internet » PHP »

Problema con paginacion

Estas en el tema de Problema con paginacion en el foro de PHP en Foros del Web. Buenas foro Tengo un problema al hacer una paginación de una busqueda. Proceso la información en el mismo archivo, la paginación esta muy bien en ...

  #1 (permalink)  
Antiguo 05/02/2013, 15:59
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Pregunta Problema con paginacion

Buenas foro

Tengo un problema al hacer una paginación de una busqueda. Proceso la información en el mismo archivo, la paginación esta muy bien en la primer pagina pero al pasar a la siguiente pagina se pierden los datos alguien podria ayudarme.

Intente con una variable de session de tampoko me funciono

este es el archivo donde muestro todo:

Código PHP:
Ver original
  1. <?php
  2. require_once '../clases/connection.class.php';
  3. require_once '../clases/login.class.php';
  4. require_once '../clases/utilidades.class.php';
  5. require_once '../clases/reportes.class.php';
  6.  
  7. $connection=new Connection();
  8. $login=new login($connection);
  9. $utilidades=new utilidades($connection);
  10. $reportes=new reportes($connection);
  11. $login->seguridad();
  12. ?>
  13. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  14. <html xmlns="http://www.w3.org/1999/xhtml">
  15. <head>
  16. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  17. <title>Nuevo pedido</title>
  18. <link href="../img/favicon.png" type="image/x-icon" rel="shortcut icon" />
  19. <link rel="stylesheet" type="text/css" href="../styles/style.css" />
  20. <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css" >
  21. <link type="text/css" rel="stylesheet" href="../styles/dhtmlgoodies_calendar.css?random=20051112" media="screen">
  22. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
  23. <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
  24. <script src="../js/dhtmlgoodies_calendar.js?random=20060118"></script>
  25. <script src="../js/funciones.js"></script>
  26. <script src="../js/paginador_ajax.js"></script>
  27. <?php include '../fancyboxDentro.html'; ?>
  28. <script src="../js/abrirMensajes.js"></script>
  29. </head>
  30.  
  31. <body>
  32.     <div id="contenedor">
  33.         <?php echo $utilidades->header(); ?>
  34.         <?php if(!isset($_POST['search'])): ?>
  35.         <section id="advanceSearch">
  36.             <h1>Búsqueda avanzada</h1><hr />
  37.             <form action="" method="POST">
  38.                 <label>Desde: </label><input type="text" name="desde" readonly />
  39.                 <input type="button" onclick="displayCalendar(document.forms[0].desde,'yyyy/mm/dd',this)"/>
  40.                 <label>Hasta: </label> <input type="text" name="hasta" readonly />
  41.                 <input type="button" onclick="displayCalendar(document.forms[0].hasta,'yyyy/mm/dd',this)"/>
  42.                 <br />
  43.                 <label>Cliente: </label> <input type="text" name="cliente" id="cliente" size="60" />
  44.                 <br />
  45.                 <label>Asociado: </label><select name="asociados">
  46.                 <option selected="selected">.::Asociados::.</option>
  47.                 <?php
  48.                 if($asociados=$reportes->listarAsociados()):
  49.                     foreach($asociados as $asociado): ?>
  50.                     <option value="<?php echo $asociado->asociadoID; ?>"><?php echo $asociado->nombreAsociado; ?></option>
  51.                 <?php
  52.                     endforeach;
  53.                 endif; ?>
  54.                 </select>
  55.                 <div id="search"><input type="submit" name="search" value="Buscar"></div>
  56.                 <div class="clear" ></div>
  57.             </form>
  58.         </section>
  59.        
  60.         <?php else:?>
  61.        
  62.         <section id="filtrados">
  63.             <?php    
  64.             include 'paginador_resultados.php';
  65.             ?>
  66.         </section>
  67.         <?php endif; ?>
  68.        
  69.        
  70.         <br /><hr><br />
  71.         <?php echo $utilidades->footer(); ?>
  72.         <div class="clear"></div>
  73.     </div>
  74. </body>
  75. </html>


en este es donde proceso todo:

Código PHP:
Ver original
  1. <?php
  2. require_once '../clases/connection.class.php';
  3. require_once '../clases/reportes.class.php';
  4.  
  5. $connection=new Connection();
  6. $reportes=new reportes($connection);
  7.  
  8.  $RegistrosAMostrar=20;
  9.  
  10.  //estos valores los recibo por GET
  11.  if(isset($_GET['pag'])){
  12.   $RegistrosAEmpezar=($_GET['pag']-1)*$RegistrosAMostrar;
  13.   $PagAct=$_GET['pag'];
  14.   //caso contrario los iniciamos
  15.  }else{
  16.   $RegistrosAEmpezar=0;
  17.   $PagAct=1;
  18.  }              
  19. ?>
  20. <h1>Se encontraron <?php echo $reportes->encontrados($_POST['desde'],$_POST['hasta']); ?> coincidencias a tu búsqueda.</h1>
  21. <table width="100%">
  22.       <thead>
  23.         <tr>
  24.             <th>Folio</th>
  25.             <th>Fecha</th>
  26.             <th>Folio fiscal</th>
  27.             <th>Cliente</th>
  28.             <th>Subtotal</th>
  29.             <th>Iva</th>
  30.             <th>Total</th>
  31.             <th>PDF</th>
  32.         </tr>
  33.        </thead>
  34. <?php
  35.  if($filtrado=$reportes->listarResultados($_POST['desde'],$_POST['hasta'],$RegistrosAEmpezar,$RegistrosAMostrar)):
  36.        foreach($filtrado as $filtro): ?>
  37.        <tbody>
  38.             <tr>
  39.                 <td><?php echo $filtro->folio; ?></td>
  40.                 <td><?php echo $filtro->fecha; ?></td>
  41.                 <td><?php echo $filtro->folioFiscal; ?></td>
  42.                 <td><?php echo $filtro->cliente; ?></td>
  43.                 <td><?php echo "$ ".number_format($filtro->subtotaFactura,2,'.',','); ?></td>
  44.                 <td><?php echo "$ ".number_format($filtro->ivaFactura,2,'.',','); ?></td>
  45.                 <td><?php echo "$ ".number_format($filtro->totalFactura,2,'.',','); ?></td>
  46.                 <td><?php echo $filtro->nombrePDF; ?></td>
  47.             </tr>  
  48.        </tbody>
  49.  <?php endforeach;
  50.  endif; ?>
  51.        <tfoot>
  52.             <tr>
  53.                 <td colspan="6">&nbsp;</td>
  54.                 <td><?php echo "$ ".number_format($filtro->totalGeral,2,'.',','); ?></td>
  55.             </tr>
  56.        </tfoot>
  57. </table>
  58.  
  59.  
  60. <?php
  61.  //******--------determinar las p‡ginas---------******//
  62.  $NroRegistros=$reportes->encontrados($_POST['desde'],$_POST['hasta']);
  63.  $PagAnt=$PagAct-1;
  64.  $PagSig=$PagAct+1;
  65.  $PagUlt=$NroRegistros/$RegistrosAMostrar;
  66.  
  67.  //verificamos residuo para ver si llevar‡ decimales
  68.  $Res=$NroRegistros%$RegistrosAMostrar;
  69.  // si hay residuo usamos funcion floor para que me
  70.  // devuelva la parte entera, SIN REDONDEAR, y le sumamos
  71.  // una unidad para obtener la ultima pagina
  72.  if($Res>0) $PagUlt=floor($PagUlt)+1;
  73.  
  74.  //desplazamiento
  75.  ?>
  76.  <a onclick="Pagina('1')" >Primero</a>
  77.  <?php if($PagAct>1) ?><a onclick="Pagina('<?php echo $PagAnt; ?>')">Anterior</a>
  78. <strong>Pagina <?php echo $PagAct."/".$PagUlt ?></strong>
  79.  <?php if($PagAct<$PagUlt) ?><a onclick="Pagina('<?php echo $PagSig; ?>')" >Siguiente</a>
  80.  <a onclick="Pagina('<?php echo $PagUlt; ?>')" >Ultimo</a>

y este es el archivo ajax que hace el proceso.

Código Javascript:
Ver original
  1. function objetoAjax(){
  2.  var xmlhttp=false;
  3.   try{
  4.    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  5.   }catch(e){
  6.    try {
  7.     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  8.    }catch(E){
  9.     xmlhttp = false;
  10.    }
  11.   }
  12.   if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  13.    xmlhttp = new XMLHttpRequest();
  14.   }
  15.   return xmlhttp;
  16. }
  17.  
  18. function Pagina(nropagina){
  19.  //donde se mostrar‡ los registros
  20.  divContenido = document.getElementById('filtrados');
  21.  
  22.  ajax=objetoAjax();
  23.  //uso del medoto GET
  24.  //indicamos el archivo que realizar‡ el proceso de paginar
  25.  //junto con un valor que representa el nro de pagina
  26.  ajax.open("GET", "paginador_resultados.php?pag="+nropagina);
  27.  divContenido.innerHTML= '<img src="../img/cargando.gif">';
  28.  ajax.onreadystatechange=function() {
  29.   if (ajax.readyState==4) {
  30.    //mostrar resultados en esta capa
  31.    divContenido.innerHTML = ajax.responseText
  32.   }
  33.  }
  34.  //como hacemos uso del metodo GET
  35.  //colocamos null ya que enviamos
  36.  //el valor por la url ?pag=nropagina
  37.  ajax.send(null)
  38. }

He intentado de todo pero no logro hacer que funcione correctamente.

De antemano muchas gracias
__________________
Lo imposible solo cuesta un poco mas
  #2 (permalink)  
Antiguo 05/02/2013, 16:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema con paginacion

Lo que pasa es que tienes que pasar los parámetros que quieres persistir en la paginación, no puedes paginar sin pasar los mismos datos que tenías antes, es necesario que pongas todo.

Saludos.
  #3 (permalink)  
Antiguo 05/02/2013, 16:07
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problema con paginacion

Y de que forma puedo hacer eso si con variables de sesion tambien se pierden los datos.

Intente en una varible de sesion guardar lo que se manda en el form y con eso tener acceso a los parametros pero no me funciono
__________________
Lo imposible solo cuesta un poco mas
  #4 (permalink)  
Antiguo 05/02/2013, 16:12
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Problema con paginacion

Para formularios tipo "filtros", que no modifican nada en el servidor,es mejor usar GET.
El motivo más visible de ello, es que no quieres que si el usuario pulsa el botón "back" después de hacer una paginación, no quieres que le salga la advertencia de re-post de datos de un formulario.
  #5 (permalink)  
Antiguo 05/02/2013, 16:18
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problema con paginacion

Ya tengo validado eso. Mi duda es como rescatar los valores enviados por el formulario en toda la paginacion
__________________
Lo imposible solo cuesta un poco mas
  #6 (permalink)  
Antiguo 05/02/2013, 16:22
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Problema con paginacion

Tu problema está aqui:
Código PHP:
Ver original
  1. ajax.open("GET", "paginador_resultados.php?pag="+nropagina);
Una vez que pasas los parametros por GET (o, incluso si los pasas por POST)..tendrás que enviárselos a ese PHP..
Como lo quieres hacer por ajax, con obtener con javascript el valor actual de los inputs del formulario, y añadirlos a la url de ajax.open, es bastante..
  #7 (permalink)  
Antiguo 05/02/2013, 16:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema con paginacion

Como te dice dashtrash, lo mejor es que uses variables GET, y las tienes que ir pasando en cada enlace de tu paginación para que conservas los filtros.

Saludos.
  #8 (permalink)  
Antiguo 05/02/2013, 16:50
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problema con paginacion

Sigue sin funcionarme

Ya modifique el texto para mandar las variables pero no funciona.

Código PHP:
Ver original
  1. <a onclick="Pagina('1',<?php echo $_GET['desde'].','.$_GET['hasta'] ?>)" >Primero</a>
  2.  <?php if($PagAct>1) ?><a onclick="Pagina(<?php echo $PagAnt.','.$_GET['desde'].','.$_GET['hasta'] ?>)">Anterior</a>
  3. <strong>Pagina <?php echo $PagAct."/".$PagUlt ?></strong>
  4.  <?php if($PagAct<$PagUlt) ?><a onclick="Pagina(<?php echo $PagSig.','.$_GET['desde'].','.$_GET['hasta'] ?>)" >Siguiente</a>
  5.  <a onclick="Pagina(<?php echo $PagUlt.','.$_GET['desde'].','.$_GET['hasta'] ?>)" >Ultimo</a>

Código Javascript:
Ver original
  1. function Pagina(nropagina,desde,hasta){
  2.  //donde se mostrar‡ los registros
  3.  divContenido = document.getElementById('filtrados');
  4.  
  5.  ajax=objetoAjax();
  6.  //uso del medoto GET
  7.  //indicamos el archivo que realizar‡ el proceso de paginar
  8.  //junto con un valor que representa el nro de pagina
  9.  ajax.open("GET", "paginador_resultados.php?pag="+nropagina+"&desde"+desde+"&hasta"+hasta);
  10.  divContenido.innerHTML= '<img src="../img/cargando.gif">';
  11.  ajax.onreadystatechange=function() {
  12.   if (ajax.readyState==4) {
  13.    //mostrar resultados en esta capa
  14.    divContenido.innerHTML = ajax.responseText
  15.   }
  16.  }
  17.  //como hacemos uso del metodo GET
  18.  //colocamos null ya que enviamos
  19.  //el valor por la url ?pag=nropagina
  20.  ajax.send(null)
  21. }
__________________
Lo imposible solo cuesta un poco mas
  #9 (permalink)  
Antiguo 05/02/2013, 16:56
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Problema con paginacion

Qué significa "no funciona"?
Puedes hacer un console.debug de la url que estás pasando a ajax.open?
Copia esa url y pégala en el browser.Sale algo?
  #10 (permalink)  
Antiguo 05/02/2013, 17:12
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problema con paginacion

No funciona quiere decir que se siguen perdiendo las variables
__________________
Lo imposible solo cuesta un poco mas
  #11 (permalink)  
Antiguo 05/02/2013, 17:14
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Problema con paginacion

..La url de ajax.open es correcta?

Estás obteniendo las variables por GET en vez de por POST, como tenías antes?
  #12 (permalink)  
Antiguo 05/02/2013, 17:17
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problema con paginacion

Asi es ahora todo es por Get pero sigue sin funcionar

Código Javascript:
Ver original
  1. ajax.open("GET", "paginador_resultados.php?pag="+nropagina+"&desde"+desde+"&hasta"+hasta);

Código PHP:
Ver original
  1. <a onclick="Pagina('1',<?php echo $_GET['desde'].','.$_GET['hasta'] ?>)" >Primero</a>
  2.  <?php if($PagAct>1) ?><a onclick="Pagina(<?php echo $PagAnt.','.$_GET['desde'].','.$_GET['hasta'] ?>)">Anterior</a>
  3. <strong>Pagina <?php echo $PagAct."/".$PagUlt ?></strong>
  4.  <?php if($PagAct<$PagUlt) ?><a onclick="Pagina(<?php echo $PagSig.','.$_GET['desde'].','.$_GET['hasta'] ?>)" >Siguiente</a>
  5.  <a onclick="Pagina(<?php echo $PagUlt.','.$_GET['desde'].','.$_GET['hasta'] ?>)" >Ultimo</a>
__________________
Lo imposible solo cuesta un poco mas
  #13 (permalink)  
Antiguo 05/02/2013, 18:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema con paginacion

¿Que es lo que ves en el browser? Si usas Chrome o Firefox ambos poseen una herramienta para ver los requests por AJAX y puedes ver la URL que se envía y lo que recibes.

Saludos.
  #14 (permalink)  
Antiguo 06/02/2013, 08:09
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problema con paginacion

No vi la respuesta disculpen lo que me manda es esto al precionar el boton submit:


http://www.iconograma.com/sistema/si...&search=Buscar

y al ir a la segunda pagina manda esto:

http://www.iconograma.com/sistema/si...&search=Buscar

Es practicamente lo mismo pero sigo sin saber pork funciona
__________________
Lo imposible solo cuesta un poco mas
  #15 (permalink)  
Antiguo 06/02/2013, 08:23
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Problema con paginacion

..En esos links está la variable "pagina"?
A ver, por ajax estás abriendo "paginador_resultados.php", pero esos links apuntan a 'reportes.php'.
No sé cuál de las dos es la que debe paginar, pero da lo mismo, el asunto es que reciba la variable "página".
  #16 (permalink)  
Antiguo 06/02/2013, 08:31
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Pregunta Respuesta: Problema con paginacion

No no se ve que mande la variable de pag para la paginacion de hecho creo que no se debe de ver, entiendo que es el metodo get pero ese codigo de ajax es para eso para que la variable enviada no se vea y pagine sin recargar la pagina pero sigo con el mismo error aun
__________________
Lo imposible solo cuesta un poco mas
  #17 (permalink)  
Antiguo 06/02/2013, 08:33
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Problema con paginacion

Me parece que tienes una idea equivocada sobre ajax...Eso de que la "variable enviada no se vea"...Ahí tiene que estar la variable de paginación.
  #18 (permalink)  
Antiguo 06/02/2013, 08:33
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: Problema con paginacion

Buenas

aqui debes, ponerle = a cada variable

antes:
"paginador_resultados.php?pag="+nropagina+"&desde" +desde+"&hasta"+hasta

despues:

"paginador_resultados.php?pag="+nropagina+"&desde= "+desde+"&hasta="+hasta

Saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #19 (permalink)  
Antiguo 06/02/2013, 08:39
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problema con paginacion

Ya lo modifique pero sigue igual no funciona la segunda paginacion
__________________
Lo imposible solo cuesta un poco mas
  #20 (permalink)  
Antiguo 06/02/2013, 08:45
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Problema con paginacion

...Pero, viendo que es un problema con las urls, por qué no tomas la costumbre de pegar en tus posts las URLS?
Y, ya puestos, pegar el código de reportes.php donde dices que ya lo has cambiado? No **todo** el código, sólo donde obtienes la variable por get, y la incluyes en la query..
No se puede contestar a un post que dice "Ya lo he hecho y no va".
  #21 (permalink)  
Antiguo 06/02/2013, 08:48
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: Problema con paginacion

Buenas,

has intentado encerrar entre comillas cada parametro de la funcion

Pagina('1','<?php echo $desde;?>','<?php echo $hasta;?>')

Saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #22 (permalink)  
Antiguo 06/02/2013, 08:53
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problema con paginacion

Este es el codigo de reportes.php:
Aquí lo que hago es crear el formulario de busqueda y al precionar el boton buscar cargue el contenido de la segunda seccion.

Código PHP:
Ver original
  1. <?php if(!isset($_GET['search'])): ?>
  2.         <section id="advanceSearch">
  3.             <h1>Búsqueda avanzada</h1><hr />
  4.             <form action="" method="get">
  5.                 <label>Desde: </label><input type="text" name="desde" readonly />
  6.                 <input type="button" onclick="displayCalendar(document.forms[0].desde,'yyyy/mm/dd',this)"/>
  7.                 <label>Hasta: </label> <input type="text" name="hasta" readonly />
  8.                 <input type="button" onclick="displayCalendar(document.forms[0].hasta,'yyyy/mm/dd',this)"/>
  9.                 <br />
  10.                 <label>Cliente: </label> <input type="text" name="cliente" id="cliente" size="60" disabled="disabled" />
  11.                 <br />
  12.                 <label>Asociado: </label><select name="asociados" disabled="disabled" >
  13.                 <option selected="selected">.::Asociados::.</option>
  14.                 <?php
  15.                 if($asociados=$reportes->listarAsociados()):
  16.                     foreach($asociados as $asociado): ?>
  17.                     <option value="<?php echo $asociado->asociadoID; ?>"><?php echo $asociado->nombreAsociado; ?></option>
  18.                 <?php
  19.                     endforeach;
  20.                 endif; ?>
  21.                 </select>
  22.                 <div id="search"><input type="submit" name="search" value="Buscar"></div>
  23.                 <div class="clear" ></div>
  24.             </form>
  25.         </section>
  26.        
  27.         <?php else:?>
  28.        
  29.         <section id="filtrados">
  30.         <h1>Se encontraron <?php echo $reportes->encontrados($_GET['desde'],$_GET['hasta']); ?> coincidencias a tu búsqueda.</h1>
  31.             <?php    
  32.             include 'paginador_resultados.php';
  33.             ?>
  34.         </section>
  35.         <?php endif; ?>

Y este es el archivo paginador_resultados.php

En este se recibe la variable de pag de la function de ajax y recibo tambien los get de las cajas de texto para mandarlas a otras funciones que me devuelven los resultados de las query´s.

Código PHP:
Ver original
  1. <?php
  2. require_once '../clases/connection.class.php';
  3. require_once '../clases/reportes.class.php';
  4.  
  5. $connection=new Connection();
  6. $reportes=new reportes($connection);
  7.  
  8.  $RegistrosAMostrar=10;
  9.  
  10.  //estos valores los recibo por GET
  11.  if(isset($_GET['pag'])){
  12.   $RegistrosAEmpezar=($_GET['pag']-1)*$RegistrosAMostrar;
  13.   $PagAct=$_GET['pag'];
  14.   //caso contrario los iniciamos
  15.  }else{
  16.   $RegistrosAEmpezar=0;
  17.   $PagAct=1;
  18.  }              
  19. ?>
  20. <table width="100%">
  21.       <thead>
  22.         <tr>
  23.             <th>Folio</th>
  24.             <th>Fecha</th>
  25.             <th>Folio fiscal</th>
  26.             <th>Cliente</th>
  27.             <th>Subtotal</th>
  28.             <th>Iva</th>
  29.             <th>Total</th>
  30.             <th>PDF</th>
  31.         </tr>
  32.        </thead>
  33. <?php
  34.  if($filtrado=$reportes->listarResultados($_GET['desde'],$_GET['hasta'],$RegistrosAEmpezar,$RegistrosAMostrar)):
  35.        foreach($filtrado as $filtro): ?>
  36.        <tbody>
  37.             <tr>
  38.                 <td><?php echo $filtro->folio; ?></td>
  39.                 <td><?php echo $filtro->fecha; ?></td>
  40.                 <td><?php echo $filtro->folioFiscal; ?></td>
  41.                 <td><?php echo $filtro->cliente; ?></td>
  42.                 <td><?php echo "$ ".number_format($filtro->subtotaFactura,2,'.',','); ?></td>
  43.                 <td><?php echo "$ ".number_format($filtro->ivaFactura,2,'.',','); ?></td>
  44.                 <td><?php echo "$ ".number_format($filtro->totalFactura,2,'.',','); ?></td>
  45.                 <td><?php echo $filtro->nombrePDF; ?></td>
  46.             </tr>  
  47.        </tbody>
  48.  <?php endforeach;
  49.  endif; ?>
  50.        <tfoot>
  51.             <tr>
  52.                 <td colspan="6">&nbsp;</td>
  53.                 <td><?php echo "$ ".number_format($filtro->totalGeral,2,'.',','); ?></td>
  54.             </tr>
  55.        </tfoot>
  56. </table>
  57.  
  58.  
  59. <?php
  60.  //******--------determinar las p‡ginas---------******//
  61.  $NroRegistros=$reportes->encontrados($_GET['desde'],$_GET['hasta']);
  62.  $PagAnt=$PagAct-1;
  63.  $PagSig=$PagAct+1;
  64.  $PagUlt=$NroRegistros/$RegistrosAMostrar;
  65.  
  66.  //verificamos residuo para ver si llevar‡ decimales
  67.  $Res=$NroRegistros%$RegistrosAMostrar;
  68.  // si hay residuo usamos funcion floor para que me
  69.  // devuelva la parte entera, SIN REDONDEAR, y le sumamos
  70.  // una unidad para obtener la ultima pagina
  71.  if($Res>0) $PagUlt=floor($PagUlt)+1;
  72.  
  73.  //desplazamiento
  74.  ?>
  75.  <a onclick="Pagina('1',<?php echo $_GET['desde'].','.$_GET['hasta'] ?>)" >Primero</a>
  76.  <?php if($PagAct>1) ?><a onclick="Pagina(<?php echo $PagAnt.','.$_GET['desde'].','.$_GET['hasta'] ?>)">Anterior</a>
  77. <strong>Pagina <?php echo $PagAct."/".$PagUlt ?></strong>
  78.  <?php if($PagAct<$PagUlt) ?><a onclick="Pagina(<?php echo $PagSig.','.$_GET['desde'].','.$_GET['hasta'] ?>)" >Siguiente</a>
  79.  <a onclick="Pagina(<?php echo $PagUlt.','.$_GET['desde'].','.$_GET['hasta'] ?>)" >Ultimo</a>
__________________
Lo imposible solo cuesta un poco mas
  #23 (permalink)  
Antiguo 06/02/2013, 09:00
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Problema con paginacion

Cita:
Iniciado por dashtrash Ver Mensaje
...Pero, viendo que es un problema con las urls, por qué no tomas la costumbre de pegar en tus posts las URLS?
Y dónde están las URLS a las que has llamado por ajax?

Cita:
Iniciado por dashtrash Ver Mensaje
Y, ya puestos, pegar el código de reportes.php donde dices que ya lo has cambiado? No **todo** el código, sólo donde obtienes la variable por get, y la incluyes en la query..
Donde está la query????
  #24 (permalink)  
Antiguo 06/02/2013, 09:14
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problema con paginacion

Código PHP:
Ver original
  1. public function listarResultados($desde,$hasta,$RegistrosAEmpezar,$RegistrosAMostrar){
  2.         $query="SELECT f.folio,f.fecha,f.folioFiscal,f.subtotaFactura,f.ivaFactura,f.totalFactura,f.nombrePDF,c.cliente FROM factura AS f JOIN cliente AS c ON f.clienteID=c.clienteID WHERE fecha BETWEEN '$desde' AND '$hasta' LIMIT $RegistrosAEmpezar, $RegistrosAMostrar";
  3.         return $this->recordsList($query);
  4.    }

esa es la consulta que hago para los datos.

y esta es la funcion de ajax:

Código Javascript:
Ver original
  1. function objetoAjax(){
  2.  var xmlhttp=false;
  3.   try{
  4.    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  5.   }catch(e){
  6.    try {
  7.     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  8.    }catch(E){
  9.     xmlhttp = false;
  10.    }
  11.   }
  12.   if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  13.    xmlhttp = new XMLHttpRequest();
  14.   }
  15.   return xmlhttp;
  16. }
  17.  
  18. function Pagina(nropagina,desde,hasta){
  19.  //donde se mostrar‡ los registros
  20.  divContenido = document.getElementById('filtrados');
  21.  
  22.  ajax=objetoAjax();
  23.  //uso del medoto GET
  24.  //indicamos el archivo que realizar‡ el proceso de paginar
  25.  //junto con un valor que representa el nro de pagina
  26.  ajax.open("GET", "paginador_resultados.php?pag="+nropagina+"&desde="+desde+"&hasta="+hasta);
  27.  divContenido.innerHTML= '<img src="../img/cargando.gif">';
  28.  ajax.onreadystatechange=function() {
  29.   if (ajax.readyState==4) {
  30.    //mostrar resultados en esta capa
  31.    divContenido.innerHTML = ajax.responseText
  32.   }
  33.  }
  34.  //como hacemos uso del metodo GET
  35.  //colocamos null ya que enviamos
  36.  //el valor por la url ?pag=nropagina
  37.  ajax.send(null)
  38. }
__________________
Lo imposible solo cuesta un poco mas
  #25 (permalink)  
Antiguo 06/02/2013, 09:25
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: Problema con paginacion

Buenas,


porque no antes, de ejecutar la consulta, la imprimes para que veas visualmente como quedó conformada

para que veas si los valores son correctos

Saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #26 (permalink)  
Antiguo 06/02/2013, 09:37
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problema con paginacion

Al hacer la primera pagina funciona pero al pasar a la segunda se pierdden todos los datos
__________________
Lo imposible solo cuesta un poco mas
  #27 (permalink)  
Antiguo 06/02/2013, 09:54
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: Problema con paginacion

Buenas,

por eso te digo que imprimas la consulta para ver si, los parametros que fueron pasados estan bien y coinciden con los reales enviados, porque segun el link que pusistes anteriormente hay unos caracteres que se estan agregando

Saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..
  #28 (permalink)  
Antiguo 06/02/2013, 10:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema con paginacion

Sigues sin hacer lo que te digo, si usas Firefox abre el Firebug, si usas Chrome la consola de debug, revisa la petición AJAX, revisa que la llamada HTTP sea la misma que cuando ejecutas la primera vez paginador_resultados y revisa que la respuesta sea la que esperas, solo así puedes encontrar la razón de porque no funciona.

Saludos.
  #29 (permalink)  
Antiguo 06/02/2013, 10:23
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Problema con paginacion

Como reviso la peticion de ajax ya abri el firebug pero no se como hacer eso k me dices

Esto es lo que me aparece en el firebug

<a onclick="Pagina('1',2013/01/01,2013/02/06)">Primero</a>
<a onclick="Pagina(0,2013/01/01,2013/02/06)">Anterior</a>
<strong>Pagina 1/11</strong>
<a onclick="Pagina(2,2013/01/01,2013/02/06)">Siguiente</a>
<a onclick="Pagina(11,2013/01/01,2013/02/06)">Ultimo</a>

y al ir a la segunda pagina muestra esto:

<a onclick="Pagina('1',2013,167.75)">Primero</a>
<a onclick="Pagina(1,2013,167.75)">Anterior</a>
<strong>Pagina 2/0</strong>
<a onclick="Pagina(3,2013,167.75)">Siguiente</a>
<a onclick="Pagina(0,2013,167.75)">Ultimo</a>
__________________
Lo imposible solo cuesta un poco mas
  #30 (permalink)  
Antiguo 06/02/2013, 10:35
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema con paginacion

Acá puedes aprender como usar el Firebug:

http://www.drdobbs.com/tools/ajax-de...ebug/196802787

Saludos.

Etiquetas: html, paginacion, registro, resultados, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:37.