Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/03/2016, 09:09
raulgranadosraul
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 11 años, 4 meses
Puntos: 1
Paginación php ajax problemas con los enlaces

Hola a todos amigos del web. Una vez más aqui con un nuevo problema. Sigo creando mi blog, y estoy implementando paginación con php y ajax para mostrar resultados dentro de un div.

De momento he conseguido hacer la consulta y que me muestre dentro del div los resultados con el css que he colocado y todo bien. El problema me llega cuando al clickar en cualquiera de los enlaces 'anterior-siguiente-primero-ultimo' es como que busca la consulta pero no me muestra nada!!! Me explico mejor, al cargar la página por primera vez todo va perfecto, pero al darle siguiente para que me muestre los próximos registros no me muestra los resultados.
El código que tengo es el que está colgado por varias páginas de internet. Lo pego de todas maneras.
Las líneas del div son:
Código PHP:
<div id="contenido">
<?php include('paginador.php')?>
</div>
El archivo paginador.php es:
Código PHP:
$RegistrosAMostrar=4;

//estos valores los recibo por GET
if(isset($_GET['pag'])){
    
$RegistrosAEmpezar=($_GET['pag']-1)*$RegistrosAMostrar;
    
$PagAct=$_GET['pag'];
//caso contrario los iniciamos
}else{
    
$RegistrosAEmpezar=0;
    
$PagAct=1;
    
}
$Resultado=mysql_query("SELECT * FROM comentarios_tabla ORDER BY comentarios_tabla.fecha_comentario DESC LIMIT $RegistrosAEmpezar, $RegistrosAMostrar",$conexion);
    echo 
"<h3 align='center'><br />Comentarios de otros usuarios</h3><hr />";
while(
$MostrarFila=mysql_fetch_array($Resultado)){
    echo 
"<table border='0' width='100%'>";
    echo 
"<tr>";
    echo 
"<td width='65%' align='left'><span style='font-size:18px;color: #272727'><strong>&nbsp;&nbsp;&nbsp;&nbsp;".$MostrarFila['nombre_usuario']."</strong></span>&nbsp;&nbsp;&nbsp;<span style='font-size:15px;color: #999'><strong>||&nbsp;&nbsp;&nbsp;"between($MostrarFila['fecha_comentario'], 'NOW()') ."</strong></span></td>";
    echo 
"<td width='35%' align='right'></span></td>";
    echo 
"</tr>";
    echo 
"<tr>";
    echo 
"<td colspan='2' align='justify' style='padding-left:25px;padding-right:25px;padding-top:10px'><span style='font-size:18px'>"saltoLinea($MostrarFila['mensaje_comentario']) ."</span><br /></td>";
    echo 
"</tr>";
    echo 
"</table>";
    echo 
"<hr />";
    echo 
"<br />";
}
//******--------determinar las páginas---------******//
$NroRegistros=mysql_num_rows(mysql_query("SELECT * FROM comentarios_tabla",$conexion));

$PagAnt=$PagAct-1;
$PagSig=$PagAct+1;
$PagUlt=$NroRegistros/$RegistrosAMostrar;

//verificamos residuo para ver si llevará decimales
$Res=$NroRegistros%$RegistrosAMostrar;
// si hay residuo usamos funcion floor para que me
// devuelva la parte entera, SIN REDONDEAR, y le sumamos
// una unidad para obtener la ultima pagina
if($Res>0$PagUlt=floor($PagUlt)+1;

//desplazamiento
echo "<a onclick=\"Pagina('1')\">Primero</a> ";
if(
$PagAct>1) echo "<a onclick=\"Pagina('$PagAnt')\">Anterior</a> ";
echo 
"<strong>Pagina ".$PagAct."/".$PagUlt."</strong>";
if(
$PagAct<$PagUlt)  echo " <a onclick=\"Pagina('$PagSig')\">Siguiente</a> ";
echo 
"<a onclick=\"Pagina('$PagUlt')\">Ultimo</a>"
.... que supongo que aqui abajo, en los enlaces es por donde debe estar la historia.
Y el archivo ajax es:
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.  
  13.     if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  14.         xmlhttp = new XMLHttpRequest();
  15.     }
  16.     return xmlhttp;
  17. }
  18.  
  19. function Pagina(nropagina){
  20.     //donde se mostrará los registros
  21.     divContenido = document.getElementById('contenido');
  22.    
  23.     ajax=objetoAjax();
  24.     //uso del medoto GET
  25.     //indicamos el archivo que realizará el proceso de paginar
  26.     //junto con un valor que representa el nro de pagina
  27.     ajax.open("GET", "paginador.php?pag="+nropagina);
  28.     divContenido.innerHTML= '<img src="blog/anim.gif">';
  29.     ajax.onreadystatechange=function() {
  30.         if (ajax.readyState==4) {
  31.             //mostrar resultados en esta capa
  32.             divContenido.innerHTML = ajax.responseText
  33.         }
  34.     }
  35.     //como hacemos uso del metodo GET
  36.     //colocamos null ya que enviamos
  37.     //el valor por la url ?pag=nropagina
  38.     ajax.send(null)
  39. }

Espero me puedan echar una mano pues la verdad es bastante efectivo el uso de ajax aquí, nunca lo había usado para crear paginación. Recién estoy usándola por primera vez.
Gracias

PD Editar: He descubierto algo. Cuando cargo la página por primera vez me muestra que estoy en la página '1 de 3', es decir el conteo de registros es correcto.... pero al darle a siguiente por ejemplo, me muestra que estoy en la página '2 de 0'... entiendo que no está repitiendo el conteo del total de registros. Estoy investigando el código para ver si encuentro algo... pero de momento no he logrado resolver

Última edición por raulgranadosraul; 25/03/2016 a las 09:24 Razón: PD