Foros del Web » Creando para Internet » HTML »

Diferentes Hojas en una pagina

Estas en el tema de Diferentes Hojas en una pagina en el foro de HTML en Foros del Web. Estoy realizando una página que muestra tablas, resultado de consultas hechas a una base de datos. El tema es el siguiente: imaginense que la tabla ...
  #1 (permalink)  
Antiguo 17/05/2010, 23:00
 
Fecha de Ingreso: mayo-2010
Mensajes: 25
Antigüedad: 7 años, 7 meses
Puntos: 0
Diferentes Hojas en una pagina

Estoy realizando una página que muestra tablas, resultado de consultas hechas a una base de datos. El tema es el siguiente: imaginense que la tabla consultada tenga una cantidad enorme de filas, la pagina se expanderia casi infinitamente en caso de que la tabla tenga por ejemplo 5000 filas, lo que quiero hacer es mostrar hasta 100, 150 o hasta 200 filas en la primera vista y luego utilizar indices para mostrar los siguientes resultados.

Ejemplo:
------------------------------------------------
Una parte del resultado aquí 100 filas
y luego abajo, los indices
------------------------------------------------
Anterior -1-2-3-4-5-6-Siguiente
------------------------------------------------
Así. Es muy común verlos en las páginas, buscadores principalmente.

Lo que quiero saber es: si hay que crear tantas páginas sean necesarias, y cada una es llamada por un vinculo correspondiente, como se ve en el ejemplo seria 6. O acaso hay algun contenedor que facilita esta implementación, alguna herramienta?.
  #2 (permalink)  
Antiguo 18/05/2010, 10:34
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 10 años, 2 meses
Puntos: 188
Respuesta: Diferentes Hojas en una pagina

No amigo, para eso puedes usar una paginacion. En google puedes encontrar classes muy buenas, una de ellas se llama paginator.class

Buscala y nos cuentas.

Nota: Hacer una paginacion con PHP es mas facil de lo que parece.

Por ejemplo

paginator.js
Código Javascript:
Ver original
  1. function objetoAjax(){
  2.  
  3.     var xmlhttp=false;
  4.  
  5.     try {
  6.  
  7.         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  8.  
  9.     } catch (e) {
  10.  
  11.         try {
  12.  
  13.            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  14.  
  15.         } catch (E) {
  16.  
  17.             xmlhttp = false;
  18.  
  19.         }
  20.  
  21.     }
  22.  
  23.  
  24.  
  25.     if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  26.  
  27.         xmlhttp = new XMLHttpRequest();
  28.  
  29.     }
  30.  
  31.     return xmlhttp;
  32.  
  33. }
  34.  
  35.  
  36.  
  37. function Pagina(nropagina){
  38.  
  39.     //donde se mostrará los registros
  40.  
  41.     divContenido = document.getElementById('paginator');
  42.  
  43.    
  44.  
  45.     ajax=objetoAjax();
  46.  
  47.     //uso del medoto GET
  48.  
  49.     //indicamos el archivo que realizará el proceso de paginar
  50.  
  51.     //junto con un valor que representa el nro de pagina
  52.  
  53.     ajax.open("GET", "./paginator.php?pag="+nropagina);
  54.  
  55.     divContenido.innerHTML= '<img src="imagen_de_carga.gif">';
  56.  
  57.     ajax.onreadystatechange=function() {
  58.  
  59.         if (ajax.readyState==4) {
  60.  
  61.             //mostrar resultados en esta capa
  62.  
  63.             divContenido.innerHTML = ajax.responseText
  64.  
  65.         }
  66.  
  67.     }
  68.  
  69.     //como hacemos uso del metodo GET
  70.  
  71.     //colocamos null ya que enviamos
  72.  
  73.     //el valor por la url ?pag=nropagina
  74.  
  75.     ajax.send(null)
  76.  
  77. }



paginator.php
Código PHP:
Ver original
  1. <?php
  2.  
  3. $connect_mysql = mysql_connect('localhost','username','password');
  4.  
  5. mysql_select_db('tabla',$connect_mysql);
  6.  
  7.  
  8.  
  9. $RegistrosAMostrar=150; //Especifico cuantas filas quiero mostrar
  10.  
  11.  
  12.  
  13. //estos valores los recibo por GET
  14.  
  15. if(isset($_GET['pag'])){
  16.  
  17.     $RegistrosAEmpezar=($_GET['pag']-1)*$RegistrosAMostrar;
  18.  
  19.     $PagAct=$_GET['pag'];
  20.  
  21. //caso contrario los iniciamos
  22.  
  23. }else{
  24.  
  25.     $RegistrosAEmpezar=0;
  26.  
  27.     $PagAct=1;
  28.  
  29.    
  30.  
  31. }
  32.  
  33. $sql = "SELECT * FROM tabla ORDER BY campo LIMIT $RegistrosAEmpezar, $RegistrosAMostrar";
  34.  
  35.                                              $query= mysql_query($sql);
  36.  
  37.                                              echo '<table width="395px" border="1">';
  38.  
  39.                                              while($row=mysql_fetch_array($query)){
  40.  
  41.                                                
  42.  
  43.                                                 echo "<tr>";
  44.  
  45.                                                 echo "<td class='table2' style='color:#900' width='20px'>".$row['id']."</td>";
  46.  
  47.                                                 echo "<td class='table1' style='color:#FC0' width='85px'>".$row['username']."</td>";
  48.  
  49.                                                
  50.  
  51.                                                 echo "<td class='table1' width='61px'>".$row['points']."</td>";
  52.  
  53.                                                 echo "<td class='table1' width='40px'>".$row['plus']."%</td>";
  54.  
  55.                                                 echo "<td class='table1' width='42px'>";
  56.  
  57.                                                 if(empty($row['from'])) { echo ""; } else { echo "<a href='".$row['from']."'>Visitar</a></td>"; }
  58.  
  59.                                                 echo "</tr>";
  60.  
  61.                                                
  62.  
  63.                                              }
  64.  
  65.                                                  echo "</table>";
  66.  
  67.                                              
  68.  
  69. //******--------determinar las páginas---------******//
  70.  
  71. $NroRegistros=mysql_num_rows(mysql_query("SELECT * FROM tabla"));
  72.  
  73.  
  74.  
  75. $PagAnt=$PagAct-1;
  76.  
  77. $PagSig=$PagAct+1;
  78.  
  79. $PagUlt=$NroRegistros/$RegistrosAMostrar;
  80.  
  81.  
  82.  
  83. //verificamos residuo para ver si llevará decimales
  84.  
  85. $Res=$NroRegistros%$RegistrosAMostrar;
  86.  
  87. // si hay residuo usamos funcion floor para que me
  88.  
  89. // devuelva la parte entera, SIN REDONDEAR, y le sumamos
  90.  
  91. // una unidad para obtener la ultima pagina
  92.  
  93. if($Res>0) $PagUlt=floor($PagUlt)+1;
  94.  
  95.  
  96.  
  97. //desplazamiento
  98.  
  99. echo "<div id='pages_position'>";
  100.  
  101. echo "<strong>".$PagAct."/".$PagUlt."</strong> ";
  102.  
  103. if($PagAct>1) echo "<a onclick=\"Pagina('$PagAnt')\">Anterior</a> ";
  104.  
  105. if($PagAct<$PagUlt)  echo " <a onclick=\"Pagina('$PagSig')\">Siguiente</a> ";
  106.  
  107. echo "</div>";
  108.  
  109. ?>


La base de datos que use tiene columnas llamadas (d,username,points,plus) para el ejemplo pr´ctico.

Con esto ya tendrías echo una paginacion a y claro para mostrarla debes hacer lo siguiente

index.php
Código PHP:
Ver original
  1. <html><head>
  2.  
  3. <script type="text/javascript" src="./includes/scripts/paginator.js"></script>
  4. </head>
  5. <body>
  6. <?php include_once('paginator.php'); ?>
  7. </body>

Es todo, saludos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #3 (permalink)  
Antiguo 18/05/2010, 23:46
 
Fecha de Ingreso: abril-2008
Mensajes: 222
Antigüedad: 9 años, 7 meses
Puntos: 8
Respuesta: Diferentes Hojas en una pagina

Esto no esta en el tema que deberia ir, lo deberian de migrar a php...........
Esta es la formula de la paginacion (hecha por mi)
CRE = cantidad de registros existentes
CRP = cantidad de registros por pagina
CP = cantidad de paginas

CRE/CRP=CP si CRE es impar redondeas el CP para arriba
ej: 7/3=2.33 redondeamos para arriba a 3 y ese es el total de las paginas
una vez que tenes el valor de la cantidad de paginas haces la consulta y le das el limite de registros que debe de mostrar por pagina, (ej: SELECT id,fe,ti,fo,te,ca FROM articulo Where ca='$categoria' order by id desc limit 7, 5) y en la siguiente pagina va a ser del 4, 2 y en la siguiente del 1, 0.

para redondear el numero es esta formula
echo .ceil($CP);

Para la paginacion no se necesita ninguna clase, es verdad que las clases ya estan creadas y nos ayudan a no rompernos la cabeza, pero ingeniandoselas es mejor que copiar un triste codigo que hay que hacer maravillas para adaptarlo a nuestra web.
__________________
ganar dinero 3d

Última edición por gerchulino; 19/05/2010 a las 00:06
  #4 (permalink)  
Antiguo 19/05/2010, 22:59
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 10 años, 2 meses
Puntos: 188
Respuesta: Diferentes Hojas en una pagina

No es verdad gerchilino. No hay que hacer maravillas para adaptarlo a nuestras webs jeje.

La adaptacion de un código, por muy complejo que sea te llevaría unos minutos. Claro hay que conocer bien los códigos y estar familiarizado.

Sobre tu codigo se escucha sencillo, pero puede tener sus inconvenientes no?

Saludos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.

Etiquetas: diferentes, hojas
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 16:58.