Foros del Web » Programando para Internet » PHP »

Paginacion con php y mysql

Estas en el tema de Paginacion con php y mysql en el foro de PHP en Foros del Web. Hola, esta vez tengo un problema curioso con una paginacion en php, lo que sucede es que: Por ejemplo digamos que estoy en , " ...
  #1 (permalink)  
Antiguo 14/04/2012, 21:44
Avatar de Ex_shadow  
Fecha de Ingreso: febrero-2012
Ubicación: Calera Avellaneda, Buenos Aires, Argentina, Argentina
Mensajes: 95
Antigüedad: 12 años, 2 meses
Puntos: 4
Pregunta Paginacion con php y mysql

Hola, esta vez tengo un problema curioso con una paginacion en php,

lo que sucede es que:

Por ejemplo digamos que estoy en , " mi_pagina.php?Pag=0 "

Me muestra todos los resultados del registro 0 al 20.

Ahora digamos que me quiero pasar a " mi_pagina.php?Pag=1 "

Aqui es lo curioso, en vez de mostrarme del registro 20 al 40 , me muestra
del 0 al 40 !!!

y la verdad que no entiendo por que ya que en ningun momento le estoy sumando algo ni nada, es más lo probe el calculo fuera de la consulta y me daba bien. no se que sucede.


Código PHP:
Ver original
  1. <?
  2.  
  3. /* --- Conexion mysql --- */
  4. $Conexion = mysql_connect('localhost','root','');
  5. mysql_select_db('mysql',$Conexion);
  6.  
  7. /* --- Numero Pagina --- */
  8. $Pag = $_GET['Pag'];
  9.  
  10. /* --- Cantidad de registros --- */
  11. $Registros = mysql_num_rows(mysql_query('SELECT * FROM help_keyword'));
  12.  
  13. $Maximo = 20;
  14.  
  15. $Inicial = $Pag*$Maximo;
  16. $Final = ($Pag+1)*$Maximo;
  17.  
  18. $Limites = $Inicial.','.$Final;
  19.  
  20. $Total = ceil($Registros/$Maximo);  /// Resultado de Paginas
  21.  
  22. /* --- Consulta mysql --- */
  23. $Consulta = mysql_query("SELECT * FROM help_keyword LIMIT ".$Limites.'' );
  24.  
  25. /* --- While --- */
  26. while($Campo = mysql_fetch_assoc($Consulta)){
  27.     echo $Campo['name'].'<br>';
  28. }
  29.    
  30. /* --- Boton Anterior --- */
  31. if($Pag>0){
  32.         $Pag--;
  33.         echo '<a href="?Pag='.$Pag.'"><input type="button" value="<<" ></a>';
  34.         $Pag++;
  35.     }
  36.    
  37. /* --- Mostrar botones --- */
  38. for($i=0;$i<$Total;$i++){
  39.            
  40.         if($i == $Pag){ /// Si esta en el numero de pagina Desactivar button
  41.         echo '<input type="button" class="Pagina" value="'.$i.'" disabled="disabled">';
  42.         }else{          /// Si no esta en el numero de pagina el button queda activo
  43.         echo '<a href="?Pag='.$i.'"><input type="button" class="Pagina" value="'.$i.'"></a>';  
  44.         }
  45.     }
  46.    
  47. /* --- Boton Siguiente --- */
  48. if($Pag < ($Total-1) ){
  49.         $Pag++;
  50.         echo '<a href="?Pag='.$Pag.'"><input type="button" value=">>" ></a>';
  51.         $Pag--;
  52.     }
  53.    
  54. /* --- Cerrar mysql --- */
  55. mysql_close($Conexion);
  56.  
  57. ?>
  #2 (permalink)  
Antiguo 14/04/2012, 21:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Paginacion con php y mysql

Imprime la consulta con el LIMIT, ¿de verdad está bien?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 14/04/2012, 22:03
Avatar de Ex_shadow  
Fecha de Ingreso: febrero-2012
Ubicación: Calera Avellaneda, Buenos Aires, Argentina, Argentina
Mensajes: 95
Antigüedad: 12 años, 2 meses
Puntos: 4
Respuesta: Paginacion con php y mysql

Me serviria más que me indiques mi error más detalladamente. y no insinuaciones :_
  #4 (permalink)  
Antiguo 14/04/2012, 22:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Paginacion con php y mysql

¿Puedes mostrarla o hay que adivinar?

Edito:

¿Insinuaciones? No.

Debes entender que debes aprender a explicar a detalles y con la mayor información posible.

Así como dices que, si imprimes la consulta y se ve bien el LIMIT me indica que el que está fallando eres tu pues el código que muestras es correcto.

¿Donde estás fallando? No lo se, por eso debes explicarte mas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 14/04/2012 a las 22:22
  #5 (permalink)  
Antiguo 14/04/2012, 22:28
Avatar de Ex_shadow  
Fecha de Ingreso: febrero-2012
Ubicación: Calera Avellaneda, Buenos Aires, Argentina, Argentina
Mensajes: 95
Antigüedad: 12 años, 2 meses
Puntos: 4
Respuesta: Paginacion con php y mysql

que necesitas ver? ,

El codigo php ya esta allí

La consulta en la ?Pag=0 se ve bien. osea los 20 registros.
Cuando paso del ?Pag=0 al ?Pag=1 me muestra del 0 al 40.


pero si me situo en el ?Pag=7 me muestra desde el registro 0 al 140 !

no veo en que momento falla el primer limite ($Inicio) por que ($Final) funciona bien :S
  #6 (permalink)  
Antiguo 14/04/2012, 22:42
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Paginacion con php y mysql

Si, el código PHP esta ahí, si no soy ciego.

Creo que de plano si no me entiendes.

Sería bueno que imprimas la consulta antes de ejecutarla:
Código PHP:
// MAL
$Consulta mysql_query("SELECT * FROM help_keyword LIMIT ".$Limites.'' );

// BIEN
$sql "SELECT * FROM help_keyword LIMIT ".$Limites;

echo 
"CONSULTA ( $sql ) ";
$Consulta mysql_query($sql); 
¿Está bien formada la consulta que ejecutas? ¿Sale bien el LIMIT?

¿Que sale dentro de CONSULTA ( ??????? )?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 14/04/2012, 22:54
Avatar de Ex_shadow  
Fecha de Ingreso: febrero-2012
Ubicación: Calera Avellaneda, Buenos Aires, Argentina, Argentina
Mensajes: 95
Antigüedad: 12 años, 2 meses
Puntos: 4
Respuesta: Paginacion con php y mysql

Salen los fucking botones y los resultados bien ! Pero mal en cuanto a cantidad.
  #8 (permalink)  
Antiguo 14/04/2012, 22:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Paginacion con php y mysql

Por favor, describe todo eso que acabas de decir.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 14/04/2012, 22:58
Avatar de Ex_shadow  
Fecha de Ingreso: febrero-2012
Ubicación: Calera Avellaneda, Buenos Aires, Argentina, Argentina
Mensajes: 95
Antigüedad: 12 años, 2 meses
Puntos: 4
Respuesta: Paginacion con php y mysql

Aqui el codigo bien.

yo creia que el limit era

Inicial = Desde este numero (280)
Final = Hasta este (300)

En realidad era

Inicial = Desde este numero (280)
Maximo = Hasta esta cantidad de registros = 20 = del 280 al 300

Código PHP:
Ver original
  1. $Maximo = 20;
  2.  
  3. $Inicial = $Pag*$Maximo;
  4.  
  5. $Limites = $Inicial.','.$Maximo;
  6.  
  7. /* --- Consulta mysql --- */
  8. $Consulta = mysql_query("SELECT * FROM help_keyword LIMIT ".$Limites.'' );
  #10 (permalink)  
Antiguo 14/04/2012, 23:00
Avatar de Ex_shadow  
Fecha de Ingreso: febrero-2012
Ubicación: Calera Avellaneda, Buenos Aires, Argentina, Argentina
Mensajes: 95
Antigüedad: 12 años, 2 meses
Puntos: 4
Respuesta: Paginacion con php y mysql

ahora como hago si tengo 500 registros no me muestre 21 botones si no que un limite de 10 xD
  #11 (permalink)  
Antiguo 15/04/2012, 03:59
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Paginacion con php y mysql

puedes contar el numero de registros, dividir por el numero de paginas que quieras, y ahi tienes $maximo
  #12 (permalink)  
Antiguo 15/04/2012, 05:20
 
Fecha de Ingreso: febrero-2007
Mensajes: 58
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Paginacion con php y mysql

Porque no usas alguno de los tantos paginadores y buscadores que existen con jQuery, son excelentes y salvo que tu aplicación sea muy grande el funcionamiento tambien lo es, como por ejemplo http://datatables.net/ ahi te ahorras de ir a la base de datos tanto para paginar como para realizar las busquedas!!

Saludos!!

Nico.
  #13 (permalink)  
Antiguo 15/04/2012, 14:16
Avatar de Ex_shadow  
Fecha de Ingreso: febrero-2012
Ubicación: Calera Avellaneda, Buenos Aires, Argentina, Argentina
Mensajes: 95
Antigüedad: 12 años, 2 meses
Puntos: 4
Pregunta Paginacion en php y mysql - Button

Hola vuelvo con el fin del problema.

Hize un paginador en php y mysql.

El problema es que Si en la tabla hay 500 registros, y yo quiero mostrar 20 por pagina.

Me muestra una cantidad de botones bastante larga 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 ... etc


Lo que necesito es que solo me muestre 5 de cada lado.

ej

0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10

ej 2

10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20



Este es mi codigo

Código PHP:
Ver original
  1. /* --- Conexion mysql --- */
  2. $Conexion = mysql_connect('localhost','root','');
  3. mysql_select_db('mysql',$Conexion);
  4.  
  5. /* --- Numero Pagina --- */
  6. $Pag = $_GET['Pag'];
  7.  
  8. /* --- Cantidad de registros --- */
  9. $Registros = mysql_num_rows(mysql_query('SELECT * FROM help_keyword'));
  10.  
  11. $Maximo = 20;
  12.  
  13. $Inicial = $Pag*$Maximo;
  14.  
  15. $Limites = $Inicial.','.$Maximo;
  16.  
  17. $Total = ceil($Registros/$Maximo);  /// Resultado de Paginas
  18.  
  19. /* --- Enlaces a paginas en orden --- */
  20. $Anterior = $Pag-1;
  21. $Siguiente = $Pag+1;
  22.  
  23. /* --- Consulta mysql --- */
  24. $Consulta = mysql_query("SELECT * FROM help_keyword LIMIT ".$Limites.'' );
  25.  
  26. /* --- While --- */
  27. while($Campo = mysql_fetch_assoc($Consulta)){
  28.     echo $Campo['name'].'<br>';
  29. }
  30.  
  31. /* --- Boton Anterior --- */
  32. if($Pag>0){
  33.         echo '<a href="?Pag='.$Anterior.'"><input type="button" value="<<" ></a>';
  34. }
  35.  
  36. /* --- Cantidad de Paginas en botones --- */
  37. $Botones_Cantidad = 5;
  38. $Botones_Maximo = ($Botones_Cantidad*2)+1;
  39.  
  40.  
  41. /* --- Mostrar botones --- */
  42. for($i=0;$i<$Botones_Maximo;$i++){
  43.            
  44.         if($i == $Pag){ /// Si esta en el numero de pagina Desactivar button
  45.         echo '<input type="button" class="Pagina" value="'.$i.'" disabled="disabled">';
  46.         }else{          /// Si no esta en el numero de pagina el button queda activo
  47.         echo '<a href="?Pag='.$i.'"><input type="button" class="Pagina" value="'.$i.'"></a>';  
  48.         }
  49.        
  50.     }
  51.    
  52. /* --- Boton Siguiente --- */
  53. if($Pag < ($Total-1) ){
  54.         echo '<a href="?Pag='.$Siguiente.'"><input type="button" value=">>" ></a>';
  55.     }
  56.    
  57. /* --- Cerrar mysql --- */
  58. mysql_close($Conexion);
  #14 (permalink)  
Antiguo 15/04/2012, 17:34
Avatar de ShuyithoKruz  
Fecha de Ingreso: marzo-2012
Ubicación: Tijuana
Mensajes: 40
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: Paginacion con php y mysql

para que utilizas el ceil? en la linea 20
  #15 (permalink)  
Antiguo 15/04/2012, 17:52
Avatar de ShuyithoKruz  
Fecha de Ingreso: marzo-2012
Ubicación: Tijuana
Mensajes: 40
Antigüedad: 12 años, 1 mes
Puntos: 3
Respuesta: Paginacion con php y mysql

Listo aqui tienes la solucion y verifica mi codigo con el tuyo y detecta donde estabas mal

Código PHP:
<?php
// HACER LA CONEXION CON LA BASE DE DATOS
include "connect-to-database.php";

// AQUI SE HACEN RESTAS Y SUMAS PARA LA PAGINACION
$RegistrosAMostrar 20;
if(isset(
$_GET['page'])) {
    
$RegistrosEmpezar=($_GET['page']-1)*$RegistrosAMostrar;
    
$PaginaActual=$_GET['page'];
} else {
    
$RegistrosEmpezar=0;
    
$PaginaActual=1;
}

// AQUI SE CONSULTA LA TABLA Y SE MUESTRAN RESULTADOS
$Resultado=mysql_query("SELECT * FROM TABLA ORDER BY ID DESC LIMIT $RegistrosEmpezar, $RegistrosAMostrar",$con);
while(
$row=mysql_fetch_array($Resultado)){
    echo 
"Mostrar ".$row['NAME']."";
}

// AQUI HACEMOS LA PAGINACION
$NumeroRegistros=mysql_num_rows(mysql_query("SELECT * FROM TABLE",$con));
$PaginaAnteior=$PaginaActual-1;
$SiguientePagina=$PaginaActual+1;
$UltimaPagina=$NumeroRegistros/$RegistrosAMostrar;
$Respuesta=$NumeroRegistros%$RegistrosAMostrar;

// AQUI MOSTRARMOS LAS OPCIONES DE PAGINACION COMO SIGUIENTE Y ATRAS
if($Respuesta>0$UltimaPagina=floor($UltimaPagina)+1;
echo 
"<a href=\"mi_pagina.php\">Inicio</a> |\n";
if(
$PaginaActual>1) echo "                    <a href=\"mi_pagina.php?page=".$PaginaAnteior."\">Anterior</a> | \n";
echo 
"                    <b>(".$PaginaActual." / ".$UltimaPagina.")</b> | \n";
if(
$PaginaActual<$UltimaPagina)  echo "                    <a href=\"mi_pagina.php?page=".$SiguientePagina."\">Siguiente</a> | \n";
echo 
"                    <a href=\"mi_pagina.php?page=".$UltimaPagina."\">Ultima</a>\n";
?>
Este codigo te da como resultado lo que encontraras en esta pagina en la seccion de noticias http://www.infocux.com/?fuseaction=news
  #16 (permalink)  
Antiguo 15/04/2012, 21:54
Avatar de Ex_shadow  
Fecha de Ingreso: febrero-2012
Ubicación: Calera Avellaneda, Buenos Aires, Argentina, Argentina
Mensajes: 95
Antigüedad: 12 años, 2 meses
Puntos: 4
Respuesta: Paginacion con php y mysql

fijate que se ve bien lo que quiero 2 mensajes arriba
  #17 (permalink)  
Antiguo 16/05/2012, 15:40
 
Fecha de Ingreso: julio-2010
Mensajes: 393
Antigüedad: 13 años, 8 meses
Puntos: 67
Respuesta: Paginacion con php y mysql

Hola, mira, para que no te complico te recomiendo usar esta clase para crear una paginación php fácil.

Saludos!
__________________
Páginas web de alta calidad y hechas a la medida.

Etiquetas: cantidad, html, mysql, paginacion, paginacion-en-php
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 21:39.