Foros del Web » Programando para Internet » PHP »

Paginar con postgreSQL

Estas en el tema de Paginar con postgreSQL en el foro de PHP en Foros del Web. Ola ayuda plis!! estoy intentando paginar los resultados de la busqueda que ago. pero al parecer no hace la busqeda no se donde pueda faltar ...
  #1 (permalink)  
Antiguo 26/05/2010, 17:05
 
Fecha de Ingreso: mayo-2010
Mensajes: 1
Antigüedad: 13 años, 10 meses
Puntos: 0
Paginar con postgreSQL

Ola ayuda plis!! estoy intentando paginar los resultados de la busqueda que ago. pero al parecer no hace la busqeda no se donde pueda faltar algo... si alguien sabe se los agradezco

aki esta el codigo

Código PHP:
Ver original
  1. [COLOR="Navy"]<?php
  2.            
  3. include("../Conectarse.php");
  4. ?>
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  6. <html>
  7. <head>
  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.  
  48.  
  49. <body bgcolor="#FFFFFF">
  50. <script language="JavaScript">
  51. function muestra(queCosa)
  52. {
  53.     alert(queCosa);
  54. }
  55. </script>
  56. <hr noshade style="color:CC6666;height:1px">
  57. <br>
  58. <?php
  59.         //inicializo el criterio y recibo cualquier cadena que se desee buscar
  60.         $buscar ="";
  61.         $txt_criterio="";
  62.         if ($_GET["criterio"]!=""){
  63.     $txt_criterio = $_GET["criterio"];
  64.     $buscar = " where cod_barras like '%" . $txt_criterio . "%' or descripcion like '%" . $txt_criterio . "%' or partida like '%" . $txt_criterio . "%'";
  65. }
  66.  
  67.     $sql="SELECT * FROM articulosa ";
  68.     $res=pg_query($sql);
  69.     $numeroRegistros=pg_num_rows($res);
  70.     if($numeroRegistros<=0)
  71.     {
  72.         echo "<div align='center'>";
  73.         echo "<font face='verdana' size='-2'>No se encontraron resultados</font>";
  74.         echo "</div>";
  75.     }else{
  76.         //////////elementos para el orden
  77.         if(!isset($orden))
  78.         {
  79.             $orden="cod_barras";
  80.         }
  81.         //////////fin elementos de orden
  82.  
  83.         //////////calculo de elementos necesarios para paginacion
  84.         //tamaño de la pagina
  85.         $tamPag=5;
  86.         //linea para siguiente pag.
  87.         $pagina = (isset($_GET['pagina']))? $_GET['pagina'] : false;
  88.         //pagina actual si no esta definida y limites
  89.         if(!isset($pagina))
  90.         {
  91.                $pagina=1;
  92.                $inicio=1;
  93.                $final=$tamPag;
  94.         }
  95.         //calculo del limite inferior
  96.         $limitInf=($pagina-1)*$tamPag;
  97.  
  98.         //calculo del numero de paginas
  99.         $numPags=ceil($numeroRegistros/$tamPag);
  100.         if(!isset($pagina))
  101.         {
  102.                $pagina=1;
  103.                $inicio=1;
  104.                $final=$tamPag;
  105.         }else{
  106.             $seccionActual=intval(($pagina-1)/$tamPag);
  107.             $inicio=($seccionActual*$tamPag)+1;
  108.  
  109.             if($pagina<$numPags)
  110.             {
  111.                $final=$inicio+$tamPag-1;
  112.             }else{
  113.                 $final=$numPags;
  114.             }
  115.                
  116.                 if ($final>$numPags){
  117.                      $final=$numPags;
  118.             }
  119.         }
  120.  
  121.         //////////fin de dicho calculo
  122.  
  123.         //////////creacion de la consulta con limites
  124.         $sql="SELECT * FROM articulosa  ORDER BY cod_barras ASC OFFSET '$limitInf' LIMIT '$tamPag'";
  125.         $res=pg_query($sql);
  126.  
  127.         //////////fin consulta con limites
  128.         echo "<div align='center'>";
  129.         echo "<font face='verdana' size='-2'>Encontrados ".$numeroRegistros." resultados<br>";
  130.         echo "Ordenados por <b>".$orden."</b>";
  131.                 if(isset($txt_criterio)){
  132.         echo "<br>Valor filtro: <b>".$txt_criterio."</b>";
  133.                 }
  134.         echo "</font></div>";
  135.         echo "<table align='center' width='80%' border='0' cellspacing='1' cellpadding='0'>";
  136.         echo "<tr><td colspan='7'><hr noshade></td></tr>";
  137.         echo "<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=cod_barras&criterio="."'>CODIGO</a></th>";
  138.         echo "<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=existencias&criterio="."'>EXISTENCIAS</a></th>";
  139.         echo "<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=unidad_articulo&criterio="."'>UNIDAD</a></th>";
  140.         echo "<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=marca&criterio="."'>MARCA</a></th>";
  141.         echo "<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=descripcion&criterio="."'>DESCRIPCION</a></th>";
  142.         echo "<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden=partida&criterio="."'>PARTIDA</a></th>";
  143.         echo "<th bgcolor='#CCCCCC'><a class='ord' href='".$_SERVER["PHP_SELF"]."?pagina=".$pagina."&orden= &criterio="."'><input type='checkbox' name='borrar' value='Si'</a></th>";
  144.        
  145.         while($registro=pg_fetch_array($res))
  146.         {
  147. ?>
  148. <!-- tabla de resultados -->
  149.   <tr bgcolor="#6699CC" onMouseOver="this.style.backgroundColor='#f4fcff';this.style.cursor='pointer';" onMouseOut="this.style.backgroundColor='#6699CC'"" onClick="javascript:muestra('<?php echo "".$registro['cod_barras']; ?>'>;
  150.     <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000"><b><?php echo $registro["."]; ?></b></font></td>
  151.     <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000"><b><?php echo $registro["cod_barras"]; ?></b></font></td>
  152.     <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000"><b><?php echo $registro["existencias"]; ?></b></font></td>
  153.     <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000"><b><?php echo $registro["unidad_articulo"]; ?></b></font></td>
  154.     <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000"><b><?php echo $registro["marca"];?></b></font></td>
  155.     <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000"><b><?php echo $registro["descripcion"]; ?></b></font></td>
  156.     <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000"><b><?php echo $registro["partida"]; ?></b></font></td>
  157.     </td><td align="center"><input type="checkbox" name="borrar" value='Si'></td></tr>
  158.     </tr>
  159. <!-- fin tabla resultados -->
  160. <?php
  161.         }//fin while
  162.         echo "</table>";
  163.     }//fin if
  164.     //////////a partir de aqui viene la paginacion
  165. ?>
  166.     <br>
  167.     <table border="0" cellspacing="0" cellpadding="0" align="center">
  168.     <tr><td align="center" valign="top">
  169. <?php
  170.     if($pagina>1)
  171.     {
  172.         echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-1)."&orden=".$orden."&criterio="."'>";
  173.         echo "<font face='verdana' size='-2'>anterior</font>";
  174.         echo "</a>&nbsp;";
  175.     }
  176.  
  177.     for($i=$inicio;$i<=$final;$i++)
  178.     {
  179.         if($i==$pagina)
  180.         {
  181.             echo "<font face='verdana' size='-2'><b>".$i."</b>&nbsp;</font>";
  182.         }else{
  183.             echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".$i."&orden=".$orden."&criterio="."'>";
  184.             echo "<font face='verdana' size='-2'>".$i."</font></a>&nbsp;";
  185.         }
  186.     }
  187.     if($pagina<$numPags)
  188.     {
  189.         echo "&nbsp;<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina+1)."&orden=".$orden."&criterio="."'>";
  190.         echo "<font face='verdana' size='-2'>siguiente</font></a>";
  191.     }
  192.     //////////fin de la paginacion
  193. ?>
  194.     </td></tr>
  195.     </table>
  196. <hr noshade style="color:CC6666;height:1px">
  197. <div align="center"><font face="verdana" size="-2"><a class="p" href="../index.html">::Inicio::</a></font></div>
  198.  
  199. <form action="busqueda.php" method="get">
  200. Criterio de búsqueda:
  201.                     <select  class="form-txt form-medium">                     
  202.                         <option name="criterio" value="Descripcion">Descripcion</option>
  203.                         <option name="criterio" value="Codigo" selected>Codigo de Barras</option>
  204.                         <option name="criterio" value="Familia">Familia</option>
  205.                         <option name="criterio" value="Partida">Partida</option>
  206.                     </select>
  207. <input type="text" name="criterio" value="51300001" size="22" maxlength="150">
  208. <input type="submit" value="Buscar">
  209. </form>
  210. </body>[HIGHLIGHT="PHP"]
</html>
<?php
@pg_close();
?>[/COLOR]
[/HIGHLIGHT]
  #2 (permalink)  
Antiguo 30/05/2010, 06:03
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Paginar con postgreSQL

Hola
Bueno, en primer lugar no se para que repites código
Por ej:

Código PHP:
Ver original
  1. if(!isset($pagina))
  2.         {
  3.            $pagina=1;
  4.            $inicio=1;
  5.            $final=$tamPag;
  6.         }else
  7.         {
  8.            $pagina;
  9.         }

esta dos veces, para que????
además, veo que esto

Código PHP:
$pagina = (isset($_GET['pagina']))? $_GET['pagina'] : false
se puede mejor cambiar por esto
Código PHP:
$pagina = (isset($_GET['pagina']))? $_GET['pagina'] : 1
y así queda listo el parámetro de la página siempre

En los encabezados (codigo, existencias, unidad) creeria yo seria
bueno que pudieras cambiar el order (en cuanto a desc o asc)

En el segundo sql, es donde creo yo no estas usando el where que
concatenas (el cual funcionara si todos los datos son varchar)

y siendo así deberia quedar asi:

Código PHP:
//si $buscar no tiene datos, no dara inconveniente
$sql="SELECT * FROM articulosa  ".$buscar." ORDER BY cod_barras ASC OFFSET '$limitInf' LIMIT '$tamPag'"
Haciendo esto ya traería los datos filtrados, pero por ej si el resultado
del filtro trae 1 solo dato, el páginado no se actualiza y muestra el total
inicial (el del primer sql donde se consulta el total de datos de la tabla)
y muestra la paginación, y obviamente si se usa al no tener actualmente
el valor de criterio, pierde el filtro, pero en el caso de un registro por
ej no debería mostrar la paginación pues sobra

en sintesis, creo que se debe mejorar ese código con esas validaciones
y bueno, algunas cosas más, pero con estos comentarios que hago
quedaría paginando correctamente (pues actualmente tiene inconvenientes
si no se hacen los cambios que comento) y filtrando

espero sirva
saludos

Etiquetas: paginar, postgresql
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 10:38.