Foros del Web » Programando para Internet » PHP »

Problema con Paginator

Estas en el tema de Problema con Paginator en el foro de PHP en Foros del Web. Estoy instalando Paginator en mi pagina. Aunque yo no domino la programación en PHP, o precisamente por eso..........., creo que Paginator está diseñado de una ...
  #1 (permalink)  
Antiguo 22/03/2006, 10:48
 
Fecha de Ingreso: marzo-2005
Mensajes: 21
Antigüedad: 19 años, 1 mes
Puntos: 0
Problema con Paginator

Estoy instalando Paginator en mi pagina. Aunque yo no domino la programación en PHP, o precisamente por eso..........., creo que Paginator está diseñado de una forma muy inteligente y pensado para que lo puedan usar los novatos como yo.

Como buen novato, tengo un problema.

Cuando le pido ir a cualquiera de las páginas en el listado total de la base de datos todo funciona bien.
Cuando selecciono los nombres que empiezan por una letra,(tengo una queri para todas las letras de la A ala Z), me saca los primeros 10 registros que empiezan por dicha letra. Hasta este momento bien. Pero si le digo que me saque los 10 siguientes, se va al principio de la base de datos y me muestra los primeros registros de toda la lista.

¿Alguien me puede ayudar?

Gracias
  #2 (permalink)  
Antiguo 22/03/2006, 11:00
 
Fecha de Ingreso: marzo-2005
Mensajes: 21
Antigüedad: 19 años, 1 mes
Puntos: 0
Se me olvidaba.

Me podeis decir como se hace para decirle al Paginator cuantos números de página debe mostrar ??? Por ejemplo si quiero solo 4 para que se vea así < Anterios | 1 | 2 | 3 | 4 | Siguientes >
  #3 (permalink)  
Antiguo 22/03/2006, 11:16
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
aki tienes una demostracion de como se debe usar el paginator, no es nada dificil yo lo uso en mi web y me funciona perfecto.

saludos
  #4 (permalink)  
Antiguo 22/03/2006, 12:40
 
Fecha de Ingreso: marzo-2005
Mensajes: 21
Antigüedad: 19 años, 1 mes
Puntos: 0
Jpinedo ha hecho un gran trabajo con el Paginator, muy facil de seguir y con muchas explicaciones para poderlo entender e instalar.

Mi problema es que lo estoy intentando instalar dentro de un script que he sacado de hotscripts.com.

Cada uno de los scripts por su parte funciona bien. Pero cuando intento hacerlos funcionar juntos, es cuando tengo el problema.

El script en cuestión es para seleccionar los registros de mi base de datos en función de la primera letra de uno de los campos, de la A a la Z.

A continuación pongo el código del script por si alguien me puede echar una mano.

Código PHP:
<?php
        
require("src/connect.php");
               
        
$_pagi_sql "select Nombre,Composicion,Presentacion,Fabricante,Familia,PrecioVenta from producto,fabricante,familia where producto.Nombre like '".$_POST["hSort"]."%' and fabricante.IdFabricante=producto.IdFabricante and familia.IdFamilia=Producto.IdFamilia order by producto.Nombre";
        
$_pagi_cuantos=10;
        
        
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Lista de Precios;</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../CSS/stylesheet.css" rel="stylesheet" type="text/css">
</head>

<body>
<table width="800" border="0" align="center" class="brdr">



  <tr> 
    <td colspan="2" align="center" class="titulo" height="30">Lista de Precios</td>
  </tr>
  
  <tr> 
    <td colspan="2" class="separador"><hr size="1"></td>
  </tr>
  <tr> 
    <td colspan="2" align="center" valign="top" class="letras"> 
      <?
          
for($i=0;$i<=25;$i++)
          {
?>
      <a href="#" onClick="return submitForm(document.frmContact,'<?=chr(65+$i);?>','Sorting');"> 
      <? echo(chr(65+$i)." ");?></a> 
      <? ?>
      
    <?php include("paginator.inc.php");    ?> 
     
  </tr>
  <tr> 
    <td colspan="2" class="separador"><hr size="1"></td>
  </tr>
  <tr> 
    <td colspan="2" valign="top" class="lista"> <form action="" method="post" name="frmContact" id="frmContact">
        <table width="100%" border="0" cellspacing="0">
          <tr> 
            <td width="18%" class="titulo_lista">Nombre</td>
            <td width="30%" class="titulo_lista">Composición</td>
            <td width="17%" class="titulo_lista">Presentación</td>
            <td width="10%" class="titulo_lista">Fabricante</td>
            <td width="17%" align="center" class="titulo_lista">Familia</td>
            <td width="8%" align="center" class="titulo_lista">Precio</td>
          </tr>
          <tr> 
            <td colspan="6" class="separador"><hr size="1"></td>
          </tr>
          <? while($row=mysql_fetch_array($_pagi_result)){ ?>
          <tr> 
            <td width="18%" class="lista"> 
              <?=$row["Nombre"];?>
            </td>
            <td width="30%" class="lista"> 
              
              <?=$row["Composicion"];?> 
            </td>
            <td width="17%" class="lista">
              <?=$row["Presentacion"];?>
            </td>
            <td width="10%" class="lista">
              <?=$row["Fabricante"];?>
            </td>
            <td width="17%" align="center" class="lista">
              <?=$row["Familia"];?>
            </td>
            <td width="8%" align="center" class="lista">
              <?=$row["PrecioVenta"];?>
            </td>
          </tr>
               
          <? ?>
        </table>
        <input type="hidden" name="hABId" id="hABId">
        <input type="hidden" name="hSort" id="hSort" value="[A-Z]">
        <input type="hidden" name="hExtra" id="hExtra" value="">
      </form>
      <script language="JavaScript">
        function submitForm(obj,myVal,actionStr)
        {
                obj.hABId.value=myVal;
                        if(actionStr=='Sorting')
                        {
                                actionStr = ".";
                                obj.hSort.value=myVal;
                        }
                        if(actionStr=='Delete')
                        {
                                if(!confirm("Are you sure want to Delete This Contact?\n\rAll information about This Contact will be lost.\n\rPlease click 'OK' if you are sure. Else click 'Cancel'."))
                                {
                                        return false;
                                }
                                actionStr = ".";
                                obj.hSort.value="";
                                obj.hExtra.value="Delete";
                        }
            obj.action=actionStr;
            obj.submit();
        }
    </script> </td>
  </tr>
</table>
<table width="800">
  <tr>
    <td align="right" valign="bottom" height="50"><?php echo"<p>".$_pagi_navegacion."<p>"?>
    </td>
  </tr>
</table>
</body>
</html>
¿Puede alguien ayudarme?

salu2
  #5 (permalink)  
Antiguo 22/03/2006, 12:55
Avatar de atak  
Fecha de Ingreso: julio-2005
Ubicación: Huancayo
Mensajes: 490
Antigüedad: 18 años, 9 meses
Puntos: 5
De acuerdo Paginar webs

Hola Lolilla

a lo mejor este link puede ayudarte a complementar lo que ya tienes avanzado con tus Scripts

Salu2

__________________
. .: El mejor Inicio :. .
  #6 (permalink)  
Antiguo 23/03/2006, 02:38
 
Fecha de Ingreso: marzo-2005
Mensajes: 21
Antigüedad: 19 años, 1 mes
Puntos: 0
Atak,

He mirado lo que me dices, pero ........... con mis pocos conocimientos, no me aclara nada.
Para paginar uso el Paginator y funciona perfectamente.
Para seleccionar los nombres que empiezan por una letra determinada me funciona bien.
Ahora tengo que hacer que trabajen juntos.

Salu2
  #7 (permalink)  
Antiguo 23/03/2006, 03:15
 
Fecha de Ingreso: marzo-2006
Ubicación: Chile
Mensajes: 4
Antigüedad: 18 años, 1 mes
Puntos: 0
yo = soy novato no llevo ni 3 dias q empeze con php , creo q lo q tu quieres es q te muestre los resultados por letra o no??? por ejemplo el usuario hace clic en la letra "a" y q le muestre solo los datos con la letra a???. yo hice un php q hace eso.

este es el codigo:

Código PHP:
<?
//me conecto con la bd
include("include/TU_PAGINA_DE_CONEXION.php");

?>
<?

// aca recive la variable por la url, donde id es la letra a buscar

if(isset($HTTP_GET_VARS['id'])) {

// busco en la bd por la letra

$_pagi_sql "SELECT * from TU_TABLA WHERE nombre LIKE '$id%' ORDER BY nombre";
}
else {
  
$_pagi_sql "SELECT * from TU_TABLA WHERE nombre ORDER BY nombre";
 } 

$_pagi_cuantos 15;

include(
"paginator.inc.php");

$found false;
?>

// ahora imprimo los resultados

<?
    
while($row mysql_fetch_array($_pagi_result)){
  
    
?>
// imprimes los resultados con enlace a tu producto, articulo, etc. (q tambien pasan la variable por la url)
<?
                              
echo '<a href="PAGINA_DE_PRODUCTOS.php?id=' $row['id'] . '">' $row['nombre']. '</a>';            
    
$found true;
    
    
?>

// si no hay nada q imprimir muestra el mensaje q no hay articulos
<?
            
}
            echo
"<p>".$_pagi_navegacion."</p>";
if(!
$found) {

echo 
"No se encontraron articulos";


}
?>
para hacer el "menu" con las letras, puedes usar un while o hacerlo de forma manual. espero q te sirva.

saludos...
  #8 (permalink)  
Antiguo 23/03/2006, 04:23
 
Fecha de Ingreso: marzo-2005
Mensajes: 21
Antigüedad: 19 años, 1 mes
Puntos: 0
Muchas gracias jop123,

Has entendido perfectamente lo que necesito hacer.

Para ser novato, veo que has aprovechado muy bien esos pocos días. Me gusta tu script.

Entiendo el código de tu programa y me gustaría integrarlo en mi página. El problema es que he estado pensando como hacerlo y no me veo capaz.

No se como hacer que se seleccione una letra y se lo informe a la variable $id.
Entiendo que tienes un archivo con un formulario para seleccionar las letras???.

Para presentar los datos en pantalla con la estética o formato que sea , tienes un codigo html /CSS en otro archivo??

Te importaría mandarme por email los archivos que utilizas???? . [email protected]

Muchas gracias.
  #9 (permalink)  
Antiguo 23/03/2006, 11:46
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Hola Lolilla:

Si te das cuenta... tú estás utilizando una variable que proviene de un formulario para hacer tu consulta ($_POST['hSort']).

Pero esa variable solamente existe cuando realmente vienes del formulario. Cuando tu presionas el enlace "siguiente >" en Paginator, se cargaá el mismo script, pero desde un enlace ('siguiente >') y nos desde un formulario, con lo que la variable $_POST['hSort'] ya no tendrá valor.

Para solucionar esto hay que hacer dos cosas:
- Propagar esa variable (hSort) para que esté disponible en todas las páginas. Para eso tienes que definir el array $_pagi_propagar, con los nombres de todas las variables que se necesite propagar.
Código PHP:
<?
$_pagi_propagar 
= array('hsort');
Como ves, sólo debes poner el nombre de la variable, sin importar si viene de POST o GET.

- Paginator propagará esa variable, pero lo hará por el método GET. Así que acá tenemos otro problema: la primera vez que carga el script estamos viniendo de un formulario, con lo que debemos utilizar la variable $_POST['hSort'], pero cuando hacemos clic en algún enlace la variable viene por url, con lo que debemos utilizar la variable $_GET['hSort']. ¿Cómo sabe el script cuándo debe leer $_POST['hSort'] y cúando $_GET['hSort']? Lo puede resolver poniendo en la consulta simplemente $_REQUEST['hSort'], con lo que soluciona el problema.

Saludos

Última edición por jpinedo; 23/03/2006 a las 12:33
  #10 (permalink)  
Antiguo 23/03/2006, 12:36
 
Fecha de Ingreso: marzo-2005
Mensajes: 21
Antigüedad: 19 años, 1 mes
Puntos: 0
Hola jpinedo,

Te envié el email porque no sabia que habías visto este tema y me estabas contestando. Gracias.

He hecho lo que me dices y me sale un Parse error en la línea del array.

Si quito el array no me sale el error, pero sigo teniendo el mismo problema de antes .

Te vuelvo a poner el código por si ves donde puede estar el problema.

Código PHP:
<?php
        
require("src/connect.php");
        
          
        
$_pagi_sql "select Nombre,Composicion,Presentacion,Fabricante,Familia,PrecioVenta from producto,fabricante,familia where producto.Nombre like '".$_REQUEST["hSort"]."%' and fabricante.IdFabricante=producto.IdFabricante and familia.IdFamilia=Producto.IdFamilia order by producto.Nombre";
        
BEGIN__VBULLETIN__CODE__SNIPPET $_pagi_propagar = array('hSort');
        
$_pagi_cuantos=10;
        include(
"paginator.inc.php");
                
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Lista de Precios;</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../CSS/stylesheet.css" rel="stylesheet" type="text/css">
</head>

<body>
<table width="800" border="0" align="center" class="brdr">
  <tr> 
    <td colspan="2" align="center" class="titulo" height="30">Lista de Precios</td>
  </tr>
  
  <tr> 
    <td colspan="2" class="separador"><hr size="1"></td>
  </tr>
  <tr> 
    <td colspan="2" align="center" valign="top" class="letras"> 
      <?
          
for($i=0;$i<=25;$i++)
          {
?>
      <a href="#" onClick="return submitForm(frmContact,'<?=chr(65+$i);?>','Sorting');"> 
      <? echo(chr(65+$i)." ");?></a> 
      <? }
          
?>
  </tr>
  <tr> 
    <td colspan="2" class="separador"><hr size="1"></td>
  </tr>
  <tr> 
    <td colspan="2" valign="top" class="lista"> <form action="" method="post" name="frmContact" id="frmContact">
        <table width="100%" border="0" cellspacing="0">
          <tr> 
            <td width="18%" class="titulo_lista">Nombre</td>
            <td width="30%" class="titulo_lista">Composición</td>
            <td width="17%" class="titulo_lista">Presentación</td>
            <td width="10%" class="titulo_lista">Fabricante</td>
            <td width="17%" align="center" class="titulo_lista">Familia</td>
            <td width="8%" align="center" class="titulo_lista">Precio</td>
          </tr>
          <tr> 
            <td colspan="6" class="separador"><hr size="1"></td>
          </tr>
          <? while($row=mysql_fetch_array($_pagi_result)){ ?>
          <tr> 
            <td width="18%" class="lista"> 
              <?=$row["Nombre"];?>
            </td>
            <td width="30%" class="lista"> 
              
              <?=$row["Composicion"];?> 
            </td>
            <td width="17%" class="lista">
              <?=$row["Presentacion"];?>
            </td>
            <td width="10%" class="lista">
              <?=$row["Fabricante"];?>
            </td>
            <td width="17%" align="center" class="lista">
              <?=$row["Familia"];?>
            </td>
            <td width="8%" align="center" class="lista">
              <?=$row["PrecioVenta"];?>
            </td>
          </tr>
               
          <? ?>
        </table>
        <input type="hidden" name="hABId" id="hABId">
        <input type="hidden" name="hSort" id="hSort" value="[A-Z]">
        <input type="hidden" name="hExtra" id="hExtra" value="">
      </form>
      
      <script language="JavaScript">
        function submitForm(obj,myVal,actionStr)
        {
                obj.hABId.value=myVal;
                        if(actionStr=='Sorting')
                        {
                                actionStr = ".";
                                obj.hSort.value=myVal;
                        }
                        
            obj.action=actionStr;
            obj.submit();
        }
    </script> </td>
  </tr>
</table>
<table>
  <tr>
    <td><?php echo"<p>".$_pagi_navegacion."<p>"?>
    </td>
  </tr>
</table>
</body>
</html>
Gracias

Salu2
  #11 (permalink)  
Antiguo 23/03/2006, 13:21
 
Fecha de Ingreso: marzo-2005
Mensajes: 21
Antigüedad: 19 años, 1 mes
Puntos: 0
Hola jpinedo,

Ya me funciona.

Tenia un error de ignorancia

Había puesto

BEGIN__VBULLETIN__CODE__SNIPPET $_pagi_propagar = array('hSort');

Y debia ser así

$_pagi_propagar = array('hSort');

Muchissssssimas gracias eres fantástico
  #12 (permalink)  
Antiguo 23/05/2006, 14:19
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
Hola... un saludo a todos!

Estoy agarrando el paginator, y _transformándolo_ para que funcione con pg... mi problema, es que al pasarle la sentencia sql: (pág 51 de pastebin - ver más adelante)

$_pagi_sql = "SELECT * FROM $tabla ORDER BY nro_corres desc, cod_unid desc, fec_regi desc";

me resulta el warning:
Warning: pg_query(): Query failed: ERROR: column "correo_r.nro_correo" must appear in the GROUP BY clause or be used in an aggregate function in /var/www/cc/include/Paginator_v1.6.1/paginator.inc.php on line 178

en el que, claramente, hace referencia a que hace falta la columna "correo_r.nro_correo" en la clausula GROUP BY... pero, no tengo ningún GROUP BY en ninguna de mis consultas...

Al quitarle el ORDER BY a la consulta... funciona perfectamente...

paginator para pg: http://php-es.pastebin.com/733689

mi_archivo.php: http://php-es.pastebin.com/733692
__________________
Gracias de todas todas
-----
Linux!
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 19:07.