Foros del Web » Programando para Internet » Javascript »

Fallo en paginación por Ajax tipo Twitter o Facebook.

Estas en el tema de Fallo en paginación por Ajax tipo Twitter o Facebook. en el foro de Javascript en Foros del Web. Hola a todos: Estoy haciendo una web en la que estoy haciendo una paginación a través de Ajax. La estoy haciendo tipo Twitter y Facebook ...
  #1 (permalink)  
Antiguo 05/09/2013, 10:30
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Fallo en paginación por Ajax tipo Twitter o Facebook.

Hola a todos:
Estoy haciendo una web en la que estoy haciendo una paginación a través de Ajax. La estoy haciendo tipo Twitter y Facebook por lo que al pulsar un botón con la id "mostrar-mas" mostraría 10 posts

más a partir de los que ya hay.

Lo que me he inventado (que no sé si funciona) es que al pulsar el botón, a la variable "partir", se le sume 10 ya que eso se lo pasamos a "paginacion.php" que es el que hace un while para decirle por

ejemplo en este caso, que empieze por diez y que si se le volviera a pulsar, como antes se le sumo 10, se le sumarían otros 10 y se quedaría en 20 y se empezaría a contar desde 20 y así. Después la

función accionMostrar() hace el paso de los datos a la página y para procesar los datos, inventé que dentro de un div que ya existe con la id "mas" se le añadiera otro div con la id que cambiaría cada

vez que se pulsara el boton a "posts10", "posts20",... y en esos poner el contenido de los 10 posts siguientes y así en cada uno de ellos.

No se me ocurrió hacerlo de otra forma. De todas formas les dejo los codigos para que los vean:

index.php
Código HTML:
Ver original
  1. <!DOCTYPE html>
  2.     <title>Paginación</title>
  3.     <meta charset="utf-8">
  4.     <script>
  5.         addEvent(window,'load',inicializarEventos,false);
  6.         function inicializarEventos()
  7.         {
  8.             var ob = document.getElementById('mostrar-mas');
  9.             addEvent(ob,'click',presionMostrar,false);
  10.         }
  11.         var partir;
  12.         function presionMostrar(e){
  13.           partir = partir + 10;
  14.           accionMostrar();
  15.         }
  16.         var conexion1;
  17.         function accionMostrar()
  18.         {
  19.           conexion1=crearXMLHttpRequest();
  20.           conexion1.onreadystatechange = procesarEventos;
  21.           conexion1.open("GET", "paginacion.php?partir="+partir, true);
  22.           conexion1.send(null);
  23.         }
  24.  
  25.         var numDiv;
  26.         function procesarEventos()
  27.         {
  28.             numDiv = numDiv + 10;
  29.             var vec = documento.getElementById('mas');
  30.             vec.appendChild(document.createElement('div').setAttribute('id', "posts"+numDiv));
  31.           if(conexion1.readyState == 4)
  32.           {
  33.             var detalles = document.getElementById("posts"+numDiv);
  34.             detalles.innerHTML = conexion1.responseText;
  35.           }
  36.           else
  37.           {
  38.             var detalles = document.getElementById("posts"+numDiv);
  39.             detalles.innerHTML = 'Cargando...';
  40.           }
  41.         }
  42.  
  43.         //***************************************
  44.         //Funciones comunes a todos los problemas
  45.         //***************************************
  46.         function addEvent(elemento,nomevento,funcion,captura)
  47.         {
  48.           if (elemento.attachEvent)
  49.           {
  50.             elemento.attachEvent('on'+nomevento,funcion);
  51.             return true;
  52.           }
  53.           else  
  54.             if (elemento.addEventListener)
  55.             {
  56.               elemento.addEventListener(nomevento,funcion,captura);
  57.               return true;
  58.             }
  59.             else
  60.               return false;
  61.         }
  62.  
  63.         function crearXMLHttpRequest()
  64.         {
  65.           var xmlHttp=null;
  66.           if (window.ActiveXObject)
  67.             xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  68.           else
  69.             if (window.XMLHttpRequest)
  70.               xmlHttp = new XMLHttpRequest();
  71.           return xmlHttp;
  72.         }
  73.     </script>
  74.     <style>
  75.         body{
  76.             font-family: Verdana;
  77.             font-size:14px;
  78.         }
  79.         table{
  80.             border:1px solid #ccc;
  81.         }
  82.         .mensaje{
  83.             background-color:#f5f5f5;
  84.             padding:10px;
  85.         }
  86.         .id{
  87.             text-align:center;
  88.             background-color:#eee;
  89.             padding:5px;
  90.         }
  91.     </style>
  92. </head>
  93. <table width="100%">
  94.     <tr>
  95.         <th width="5%" class="id">ID</th>
  96.         <th class="mensaje">Mensaje</th>
  97.     </tr>
  98.     <?php
  99.     $dsn = 'mysql:dbname=reg_users;host=localhost';
  100.     $usuario = 'root';
  101.     $contraseña = '';
  102.  
  103.     try {
  104.     $gbd = new PDO($dsn, $usuario, $contraseña);
  105.     } catch (PDOException $e) {
  106.    exit('Se ha producido un error imposible continuar x0215484.');
  107.     }
  108.    
  109.     $selecposts=$gbd->prepare("SELECT * FROM posts ORDER BY id DESC LIMIT 10");
  110.     $selecposts->execute();
  111.     $num = 0;
  112.     while($post=$selecposts->fetch(PDO::FETCH_ASSOC)){
  113.     $num++;
  114.     ?>
  115.     <tr>
  116.         <td width="5%" class="id"><?php echo $num; ?></td>
  117.         <td width="95%" class="mensaje"><?php echo $post['post']; ?></td>
  118.     </tr>
  119.     <?php } ?>
  120. <div id="mas"></div>
  121. <button id="mostrar-mas">Mostrar más</button>
  122. </body>
  123. </html>

paginacion.php
Código PHP:
Ver original
  1. <?php
  2.     $dsn = 'mysql:dbname=reg_users;host=localhost';
  3.     $usuario = 'root';
  4.     $contraseña = '';
  5.    
  6.     try {
  7.     $gbd = new PDO($dsn, $usuario, $contraseña);
  8.     } catch (PDOException $e) {
  9.     exit('Se ha producido un error imposible continuar x0215484.');
  10.     }
  11.    
  12.     $partir = $_GET['id'];
  13.    
  14.     $selecposts=$gbd->prepare("SELECT * FROM posts ORDER BY id DESC LIMIT ".$partir.",10");
  15.     $selecposts->execute();
  16.     $num = 0;
  17.     while($post=$selecposts->fetch(PDO::FETCH_ASSOC)){
  18.     $num++;
  19.     ?>
  20.     <tr>
  21.         <td width="5%" class="id"><?php echo $num; ?></td>
  22.         <td width="95%" class="mensaje"><?php echo $post['post']; ?></td>
  23.     </tr>
  24.     <?php }
  25. ?>

Última edición por iEnrique; 06/09/2013 a las 10:40 Razón: Corrección de errores

Etiquetas: ajax
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 20:36.