Regresar a la página www.ComoCrearTuWeb.com
Resultados 1 al 3 de 3

Tema: Problema al paginar resultados de la base de datos con AJAX

  1. #1
    Esto empieza a ser un vicio... Habitante Avatar de Doodleo
    Fecha de Ingreso
    25 abr, 11
    Ubicación
    Galicia (España)
    Mensajes
    1,329
    Poder de Reputación
    17

    Problema al paginar resultados de la base de datos con AJAX

    Hola!

    Al fin, conseguí poder paginar los resultados con AJAX! Pero ahora tengo un problema, hay varios enlaces (Primera, Anterior, Siguiente, Última) para navegar entre las páginas de comentarios.

    Cuando le doy a cualquier enlace, todo funciona bien pero... sólo puedo hacer click una vez en un enlace! Si intento clickear en otro no pasa nada :S

    A ver si alguien me puede ayudar!

    Tengo estos códigos:

    ajax.js
    Código:
    function objetoAjax(){
     var xmlhttp=false;
      try{
       xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
      }catch(e){
       try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
       }catch(E){
        xmlhttp = false;
       }
      }
      if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
       xmlhttp = new XMLHttpRequest();
      }
      return xmlhttp;
    }
    
    
    function Pagina(nropagina){
     //donde se mostrará los registros
     divContenido = document.getElementById('commentlist');
     var id=encodeURIComponent(document.getElementById("idnovedad").value)
     
     ajax=objetoAjax();
     //uso del medoto GET
     //indicamos el archivo que realizará el proceso de paginar
     //junto con un valor que representa el nro de pagina
     ajax.open("GET", "paginador.php?id="+id+"&pag="+nropagina);
     divContenido.innerHTML= 'Cargando...';
     ajax.onreadystatechange=function() {
      if (ajax.readyState==4) {
       //mostrar resultados en esta capa
       divContenido.innerHTML = ajax.responseText
      }
     }
     //como hacemos uso del metodo GET
     //colocamos null ya que enviamos 
     //el valor por la url ?pag=nropagina
     ajax.send(null)
    }
    paginador.php
    Código:
    <?php
    
    
    $id = strip_tags($_GET[id]);
    $pag = strip_tags($_GET[pag]);
    
    
     require('conexion.php');
     $RegistrosAMostrar=10;
    
    
     //estos valores los recibo por GET
     if(isset($_GET['pag'])){
      $RegistrosAEmpezar=($pag-1)*$RegistrosAMostrar;
      $PagAct=strip_tags($pag);
      //caso contrario los iniciamos
     }else{
      $RegistrosAEmpezar=0;
      $PagAct=1;
     }
    
    
     $Resultado=mysql_query("SELECT * FROM comentarios WHERE id = $id ORDER BY fecha,hora ASC LIMIT $RegistrosAEmpezar, $RegistrosAMostrar",$con);
     while($qry=mysql_fetch_array($Resultado)){
    
    
    $fecha=isset($_GET['fecha'])?$_GET['fecha']:date("Y-m-d");
    list($ano,$mes,$dia)=explode("-",$qry[fecha]);
    $meses=array('Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic');
    $mes=$meses[$mes-1];
    
    
    $idcomentario = strip_tags($qry[idcomentario]);
    $nick = strip_tags($qry[nick]);
    $comentario = expresiones(strip_tags($qry[comentario]));
    $hora = strip_tags($qry[hora]);
    $edicion = strip_tags($qry[edicion]);
    $horaedicion = strip_tags($qry[horaedicion]);
    $tipo = strip_tags($qry[tipo]);
    
    
    $fecha=isset($_GET['edicion'])?$_GET['edicion']:date("Y-m-d");
    list($ano2,$mes2,$dia2)=explode("-",$qry[edicion]);
    $meses=array('1','2','3','4','5','6','7','8','9','10','11','12');
    $mes2=$meses[$mes2-1];
    
    
    if($tipo == "normal"){
    
    
    echo "<li class='comment even thread-even depth-1' id='li-comment-$idcomentario'>
    		<div id='comment-$idcomentario'>
    		<div class='author vcard'>
    			<div class='date'><span class='day'>$dia</span> <span class='month'>$mes</span> <span class='year'>$ano</span></div>
    			<img alt='' src='http://www.minics.com/avatars/$nick-XS.jpg' class='avatar avatar-45 photo' height='45' width='45'><img src='http://www.minics.com/img/saysomething.gif' class='saysomething' alt='arrow' height='45'>
    			<cite class='authName fn'>$nick</cite>		</div><!-- .comment-author .vcard -->
    		
    		<div class='comment-body'>
    			
    			<p>$comentario</p>
    			<div class='comment-meta'>
    				Publicado a las $hora";
    }else{
    echo "<li class='comment even thread-even depth-1' id='li-comment-$idcomentario'>
    		<div id='comment-$idcomentario'>
    		<div class='author2'>
    			<div class='date'><span class='day'>$dia</span> <span class='month2'>$mes</span> <span class='year2'>$ano</span></div>
    			<img alt='' src='http://www.minics.com/avatars/$nick-XS.jpg' class='avatar avatar-45 photo' height='45' width='45'><img src='http://www.minics.com/img/saysomething.gif' class='saysomething' alt='arrow' height='45'>
    			<cite class='authName2 fn'>$nick</cite>		</div><!-- .comment-author .vcard -->
    		
    		<div class='comment-body2'>
    			
    			<p>$comentario</p>
    			<div class='comment-meta'>
    				Publicado a las $hora";
    }
    if($edicion != "") {
    echo " | <small><u>Última edición:</u> $dia2/$mes2/$ano2 a las $horaedicion</small>";
    } else {
    
    
    echo " 			</div><!-- .comment-meta .commentmetadata -->
    		</div>
    
    
    		<!--div class='reply'>
    					</div--><!-- .reply -->
    	</div><!-- #comment-##  -->
    
    
    	</li>";
    }
    
    
     }
    
    
     //******--------determinar las páginas---------******//
     $NroRegistros=mysql_num_rows(mysql_query("SELECT * FROM comentarios WHERE id = $id",$con));
     $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;
     
     // Mostramos para cambiar de página de comentarios
    echo "<h3 class='comments-title'>";
     echo "<a onclick=\"Pagina('1')\">&laquo; Primera</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')\">Última &raquo;</a>";
    echo "</h3>";
    ?>
    Gracias, un saludo!

  2. #2
    Me va gustando esto... Habitante Avatar de SurKaiser
    Fecha de Ingreso
    15 oct, 11
    Mensajes
    256
    Poder de Reputación
    10
    Tal vez no tengas demasiados registros en la bd ( suele suceder ) .... si no es asi me pongo a revisar el code que ya es poco lo de paginar . Saludos!
    Mi web en construccion :
    surkaiser . com . es
    "El conocimiento es Poder"

  3. #3
    Esto empieza a ser un vicio... Habitante Avatar de Doodleo
    Fecha de Ingreso
    25 abr, 11
    Ubicación
    Galicia (España)
    Mensajes
    1,329
    Poder de Reputación
    17
    Cada página tiene 10 comentarios y tengo unos 160 registros en la base, creo que son suficientes jejeje

    Saludos!

Temas Similares

  1. Paginar resultados de la base de datos con AJAX
    Por Doodleo en el foro Php Bases de Datos y MySQL (Nuevo!)
    Respuestas: 9
    Último Mensaje: 28/11/2011, 14:27
  2. Crear enlaces a los visitantes para ordenar resultados de base de datos
    Por Doodleo en el foro Php Bases de Datos y MySQL (Nuevo!)
    Respuestas: 4
    Último Mensaje: 24/07/2011, 02:44
  3. problema para mostrar los resultados de mi base de datos
    Por alam en el foro Php Bases de Datos y MySQL (Nuevo!)
    Respuestas: 4
    Último Mensaje: 04/04/2011, 14:27
  4. problema con el base de datos
    Por malagasy en el foro Foros
    Respuestas: 1
    Último Mensaje: 25/01/2009, 18:36

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •