Foros del Web » Programando para Internet » PHP »

necesito Paginar registros de base de datos

Estas en el tema de necesito Paginar registros de base de datos en el foro de PHP en Foros del Web. wenas de nuevo! bueno esta vez el problema que tengo es es siguiente: Necesito mostrar los registros de una base d datos pero no quiero ...
  #1 (permalink)  
Antiguo 09/08/2009, 15:19
Avatar de didix16  
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 15 años, 3 meses
Puntos: 0
necesito Paginar registros de base de datos

wenas de nuevo! bueno esta vez el problema que tengo es es siguiente: Necesito mostrar los registros de una base d datos pero no quiero mostrarlos todos en 1 pagina y los quiero mostrar en diferentes paginas de 50 en 50. Los registros solo me salen los primeros 50, pero al darle a la pagina numero 2 no ace nada , i la 3 ni la 4... y es raro pero deberian salirme unas5 o 6 paginas y me salen 50... y eso seria como 50x50=2500 registros?¿ solot engo 264 registros.. Estoy usando Mysql. Este es el script:
Código PHP:
<?
    mysql_connect
("localhost","root","");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>ejemplo de paginaci&oacute;n de resultados</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Pragma" content="no-cache" />
<style type="text/css">
<!--
a.p:link {
    color: #0066FF;
    text-decoration: none;
}
a.p:visited {
    color: #0066FF;
    text-decoration: none;
}
a.p:active {
    color: #0066FF;
    text-decoration: none;
}
a.p:hover {
    color: #0066FF;
    text-decoration: underline;
}
a.ord:link {
    color: #000000;
    text-decoration: none;
}
a.ord:visited {
    color: #000000;
    text-decoration: none;
}
a.ord:active {
    color: #000000;
    text-decoration: none;
}
a.ord:hover {
    color: #000000;
    text-decoration: underline;
}
-->
</style>
</head>
<body bgcolor="#FFFFFF">
<script language="JavaScript">
function muestra(queCosa)
{
    alert(queCosa);
}
</script>
<div align="center"><strong><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">Paginaci&oacute;n 
  de Resultados de una consulta SQL (sobre MySQL) </font></strong> </div>
<hr noshade style="color:CC6666;height:1px">
<br>
<?
    $sql
="SELECT * FROM usuarios.tabla";
    
$res=mysql_query($sql);
    
$numeroRegistros=mysql_num_rows($res);
    if(
$numeroRegistros<=0)
    {
        echo 
"<div align='center'>";
        echo 
"<font face='verdana' size='-2'>No se encontraron resultados</font>";
        echo 
"</div>";
    }else{
        
//////////elementos para el orden
        
if(!isset($orden))
        {
            
$orden="idfoto";
        }
        
//////////fin elementos de orden
        //////////calculo de elementos necesarios para paginacion
        //tamaño de la pagina
        
$tamPag=50;
        
//pagina actual si no esta definida y limites
        
if(!isset($pagina))
        {
               
$pagina=1;
               
$inicio=1;
               
$final=$tamPag;
        }
        
//calculo del limite inferior
        
$limitInf=($pagina-1)*$tamPag;
        
//calculo del numero de paginas
        
$numPags=ceil($numeroRegistros/$tamPag);
        if(!isset(
$pagina))
        {
               
$pagina=1;
               
$inicio=1;
               
$final=$tamPag;
        }else{
            
$seccionActual=intval(($pagina-1)/$tamPag);
            
$inicio=($seccionActual*$tamPag)+1;
            if(
$pagina<$numPags)
            {
               
$final=$inicio+$tamPag-1;
            }else{
                
$final=$numPags;
            }
        }
        
//////////fin de dicho calculo

        //////////creacion de la consulta con limites
        
$sql="SELECT * FROM usuarios.tabla ORDER BY ".$orden.",idfoto ASC LIMIT ".$limitInf.",".$tamPag;
        
$res=mysql_query($sql);

        
//////////fin consulta con limites
        
echo "<div align='center'>";
        echo 
"<font face='verdana' size='-2'>encontrados ".$numeroRegistros." resultados<br>";
        echo 
"ordenados por <b>".$orden."</b></font>";
        echo 
"</div>";
        echo 
"<table align='center' width='30%' border='0' cellspacing='1' cellpadding='0'>";
        echo 
"<tr><td colspan='3'><hr noshade></td></tr>";
        echo 
"<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=idfoto'>Imagen</a></th>";
        echo 
"<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=nombre'>Nombre</a></th>";
        echo 
"<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=edad'>Mime</a></th>";
        while(
$registro=mysql_fetch_array($res))
        {
?>
<!-- tabla de resultados -->
  <tr bgcolor="#CC6666" onMouseOver="this.style.backgroundColor='#FF9900';this.style.cursor='hand';" onMouseOut="this.style.backgroundColor='#CC6666'"o"];" onClick="javascript:muestra('<? echo "[".$registro["idfoto"]."] ".$registro["nombre"]." - ".$registro["edad"]; ?>');">
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo '<img src="ver_imagen.php?idfoto='.$registro['idfoto'].'">'?></b></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["nombre"]; ?></b></font></td>
    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["mime"]; ?></b></font></td>
  </tr>
<!-- fin tabla resultados -->
<?
        
}//fin while
        
echo "</table>";
    }
//fin if
    //////////a partir de aqui viene la paginacion
?>
    <br>
    <table border="0" cellspacing="0" cellpadding="0" align="center">
    <tr><td align="center" valign="top">
<?
    
if($pagina>1)
    {
        echo 
"<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-1)."&orden=".$orden."'>";
        echo 
"<font face='verdana' size='-2'>anterior</font>";
        echo 
"</a>&nbsp;";
    }

    for(
$i=$inicio;$i<=$final;$i++)
    {
        if(
$i==$pagina)
        {
            echo 
"<font face='verdana' size='-2'><b>".$i."</b>&nbsp;</font>";
        }else{
            echo 
"<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".$i."&orden=".$orden."'>";
            echo 
"<font face='verdana' size='-2'>".$i."</font></a>&nbsp;";
        }
    }
    if(
$pagina<$numPags)
    {
        echo 
"&nbsp;<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina+1)."&orden=".$orden."'>";
        echo 
"<font face='verdana' size='-2'>siguiente</font></a>";
    }
    
//////////fin de la paginacion
?>
    </td></tr>
    </table>
<hr noshade style="color:CC6666;height:1px">
<div align="center"><font face="verdana" size="-2"><a class="p" href="prueva_DBpag.php">::RELOAD::</a></font></div>
</body>
</html>
<?
    mysql_close
();
?>
Si alguien es tan amable de ayudarme le estaria eternamente agradecido Muchas gracias
  #2 (permalink)  
Antiguo 09/08/2009, 15:24
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 2 meses
Puntos: 188
Respuesta: necesito Paginar registros de base de datos

amigo tu script tiene muchos errores, esta mal adaptado.

EL primer error que le econtre fue este

Código PHP:
 if(!isset($pagina)) 
devería estar asi
Código PHP:
 if(!isset($_GET['pagina'])) 
Ve corrigiendo los errores conforme te voy diciendo y prueba el script, si sigue sin funcionar publica tu respuesta y seguimos corrigiendo, en algun momento haremos funcionar el script


Saludos
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #3 (permalink)  
Antiguo 09/08/2009, 17:21
Avatar de didix16  
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: necesito Paginar registros de base de datos

Primero k nada, gracias por tu interes en ayudarme .
Aunque ahora e echo lo k me as dicho y ya no me salen los registros, aora salen el siguiente error:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\prueva_DBpag.php on line 120
  #4 (permalink)  
Antiguo 09/08/2009, 17:41
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 2 meses
Puntos: 188
Respuesta: necesito Paginar registros de base de datos

De nada amigo.

Haber veamos.


Observa el siguiente codigo con atencion y verifica que lo queayas modificado sea el mismo que el que modifico en este codigo :

ATENCION EN LA LINEA 78
Código php:
Ver original
  1. <?
  2.     mysql_connect("localhost","root","");
  3. ?>
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  5. <html>
  6. <head>
  7. <title>ejemplo de paginaci&oacute;n de resultados</title>
  8. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  9. <meta http-equiv="Pragma" content="no-cache" />
  10. <style type="text/css">
  11. <!--
  12. a.p:link {
  13.     color: #0066FF;
  14.     text-decoration: none;
  15. }
  16. a.p:visited {
  17.     color: #0066FF;
  18.     text-decoration: none;
  19. }
  20. a.p:active {
  21.     color: #0066FF;
  22.     text-decoration: none;
  23. }
  24. a.p:hover {
  25.     color: #0066FF;
  26.     text-decoration: underline;
  27. }
  28. a.ord:link {
  29.     color: #000000;
  30.     text-decoration: none;
  31. }
  32. a.ord:visited {
  33.     color: #000000;
  34.     text-decoration: none;
  35. }
  36. a.ord:active {
  37.     color: #000000;
  38.     text-decoration: none;
  39. }
  40. a.ord:hover {
  41.     color: #000000;
  42.     text-decoration: underline;
  43. }
  44. -->
  45. </style>
  46. </head>
  47. <body bgcolor="#FFFFFF">
  48. <script language="JavaScript">
  49. function muestra(queCosa)
  50. {
  51.     alert(queCosa);
  52. }
  53. </script>
  54. <div align="center"><strong><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">Paginaci&oacute;n
  55.   de Resultados de una consulta SQL (sobre MySQL) </font></strong> </div>
  56. <hr noshade style="color:CC6666;height:1px">
  57. <br>
  58. <?
  59.     $sql="SELECT * FROM usuarios.tabla";
  60.     $res=mysql_query($sql);
  61.     $numeroRegistros=mysql_num_rows($res);
  62.     if($numeroRegistros<=0)
  63.     {
  64.         echo "<div align='center'>";
  65.         echo "<font face='verdana' size='-2'>No se encontraron resultados</font>";
  66.         echo "</div>";
  67.     }else{
  68.         //////////elementos para el orden
  69.         if(!isset($orden))
  70.         {
  71.             $orden="idfoto";
  72.         }
  73.         //////////fin elementos de orden
  74.         //////////calculo de elementos necesarios para paginacion
  75.         //tamaño de la pagina
  76.         $tamPag=50;
  77.         //pagina actual si no esta definida y limites
  78.        if(!isset($_GET['pagina'])) // YO solo modifico este
  79.         {
  80.                $pagina=1;
  81.                $inicio=1;
  82.                $final=$tamPag;
  83.         }
  84.         //calculo del limite inferior
  85.         $limitInf=($pagina-1)*$tamPag;
  86.         //calculo del numero de paginas
  87.         $numPags=ceil($numeroRegistros/$tamPag);
  88.         if(!isset($pagina)) // Este no lo modifico
  89.         {
  90.                $pagina=1;
  91.                $inicio=1;
  92.                $final=$tamPag;
  93.         }else{
  94.             $seccionActual=intval(($pagina-1)/$tamPag);
  95.             $inicio=($seccionActual*$tamPag)+1;
  96.             if($pagina<$numPags)
  97.             {
  98.                $final=$inicio+$tamPag-1;
  99.             }else{
  100.                 $final=$numPags;
  101.             }
  102.         }
  103.         //////////fin de dicho calculo
  104.  
  105.         //////////creacion de la consulta con limites
  106.         $sql="SELECT * FROM usuarios.tabla ORDER BY ".$orden.",idfoto ASC LIMIT ".$limitInf.",".$tamPag;
  107.         $res=mysql_query($sql);
  108.  
  109.         //////////fin consulta con limites
  110.         echo "<div align='center'>";
  111.         echo "<font face='verdana' size='-2'>encontrados ".$numeroRegistros." resultados<br>";
  112.         echo "ordenados por <b>".$orden."</b></font>";
  113.         echo "</div>";
  114.         echo "<table align='center' width='30%' border='0' cellspacing='1' cellpadding='0'>";
  115.         echo "<tr><td colspan='3'><hr noshade></td></tr>";
  116.         echo "<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=idfoto'>Imagen</a></th>";
  117.         echo "<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=nombre'>Nombre</a></th>";
  118.         echo "<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=edad'>Mime</a></th>";
  119.         while($registro=mysql_fetch_array($res))
  120.         {
  121. ?>
  122. <!-- tabla de resultados -->
  123.   <tr bgcolor="#CC6666" onMouseOver="this.style.backgroundColor='#FF9900';this.style.cursor='hand';" onMouseOut="this.style.backgroundColor='#CC6666'"o"];" onClick="javascript:muestra('<? echo "[".$registro["idfoto"]."] ".$registro["nombre"]." - ".$registro["edad"]; ?>');">
  124.     <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo '<img src="ver_imagen.php?idfoto='.$registro['idfoto'].'">'; ?></b></font></td>
  125.     <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["nombre"]; ?></b></font></td>
  126.     <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFCC"><b><? echo $registro["mime"]; ?></b></font></td>
  127.   </tr>
  128. <!-- fin tabla resultados -->
  129. <?
  130.         }//fin while
  131.         echo "</table>";
  132.     }//fin if
  133.     //////////a partir de aqui viene la paginacion
  134. ?>
  135.     <br>
  136.     <table border="0" cellspacing="0" cellpadding="0" align="center">
  137.     <tr><td align="center" valign="top">
  138. <?
  139.     if($pagina>1)
  140.     {
  141.         echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-1)."&orden=".$orden."'>";
  142.         echo "<font face='verdana' size='-2'>anterior</font>";
  143.         echo "</a>&nbsp;";
  144.     }
  145.  
  146.     for($i=$inicio;$i<=$final;$i++)
  147.     {
  148.         if($i==$pagina)
  149.         {
  150.             echo "<font face='verdana' size='-2'><b>".$i."</b>&nbsp;</font>";
  151.         }else{
  152.             echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".$i."&orden=".$orden."'>";
  153.             echo "<font face='verdana' size='-2'>".$i."</font></a>&nbsp;";
  154.         }
  155.     }
  156.     if($pagina<$numPags)
  157.     {
  158.         echo "&nbsp;<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina+1)."&orden=".$orden."'>";
  159.         echo "<font face='verdana' size='-2'>siguiente</font></a>";
  160.     }
  161.     //////////fin de la paginacion
  162. ?>
  163.     </td></tr>
  164.     </table>
  165. <hr noshade style="color:CC6666;height:1px">
  166. <div align="center"><font face="verdana" size="-2"><a class="p" href="prueva_DBpag.php">::RELOAD::</a></font></div>
  167. </body>
  168. </html>
  169. <?
  170.     mysql_close();
  171. ?>
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.

Última edición por iovan; 09/08/2009 a las 18:22
  #5 (permalink)  
Antiguo 09/08/2009, 18:26
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años, 8 meses
Puntos: 25
Respuesta: necesito Paginar registros de base de datos

Yo no entiendo mucho, pero en los aportes existen algunos ejemplos de paginación, usalos para guiarte o usa esos, estan con páginas tu le cambias la variable de cuantos datos por pagina.
  #6 (permalink)  
Antiguo 11/08/2009, 07:02
Avatar de didix16  
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: necesito Paginar registros de base de datos

jeje muchas gracias por toda la ayuda, pero ya consegui un gran codigo, k no es como el mio pero funciona = solo que no tiene siguiente ni anterior pero si t muestra las paginas y puedes elegir las k kieres, el codigo lo pondre cuando me deje el foro ponerlo ya k sale la lerta anti spam de k no me deja poner links asta k al menos aya posteado 30 mensajes o ayan pasado 30 dias des d mi registro. De mientras si a alguien le interesa pueden contactar con migo mediante PM ;)

PD:Le agradezco mucho a toda la gente la ayuda k ofrecen en este foro =)
  #7 (permalink)  
Antiguo 11/08/2009, 07:26
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 15 años, 3 meses
Puntos: 150
Respuesta: necesito Paginar registros de base de datos

Ya que lo tienes, te seria de gran ayuda que intentaras añadirle por ti mismo un boton de Siguiente y Anterior, te serviria de practica, si basas tu programacion en PHP en copiar y pegar sin saber editar estaras cometiendo un grave error!! saludos
  #8 (permalink)  
Antiguo 11/08/2009, 11:11
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 2 meses
Puntos: 188
Respuesta: necesito Paginar registros de base de datos

Hola amigo, que bueno que te sirva, si gustas añadirle un boton siguiente y anterior solo pega tu codigo aqui y te los añado.

Saludos!
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:11.