Foros del Web » Programando para Internet » PHP »

Ayuda con Paginator de jpinedo

Estas en el tema de Ayuda con Paginator de jpinedo en el foro de PHP en Foros del Web. Hola foreros en primer lugar pido perdon por si este no es el lugar correcto para exponer mi solicitud de ayuda pero es el primer ...
  #1 (permalink)  
Antiguo 10/12/2008, 02:48
Avatar de ultimsgats  
Fecha de Ingreso: diciembre-2008
Mensajes: 23
Antigüedad: 15 años, 4 meses
Puntos: 0
Ayuda con Paginator de jpinedo

Hola foreros en primer lugar pido perdon por si este no es el lugar correcto para exponer mi solicitud de ayuda pero es el primer mensaje y me parecio el sitio mas adecuado.
Tengo una pagina con varios temas puestos y entre ellos estoy haciendo una seccion de recetas de cocina con dos tablas, una para categorias y otra para recetas. La tengo diseñada con un buscador y un selector de categorias y estoy utilizando el paginador de jpinedo el cual me funciona de maravilla hasta que selecciono una categiria. Y aqui viene el problema porque me muestra correctamente los registros y paginas existentes en esa categoria pero al intentar avanzar o seleccionar otro numero de pagina me vuelve al numero de la pagina general o al dos si le he dado a siguiente. He intentado revisar la opcion $_pagi_propagar pero o me hace el mismo efecto o me envia al index de inicio del sitio. Si alguien me pudiera aportar alguna solucion se lo agradeceria.
Esta es el codigo que estoy utilizando:
Código PHP:
<?php
$con 
mysql_connect("localhost"," "," ") or die (mysql_error());
mysql_select_db(" ",$con) or die (mysql_error());
?>
<html>
<head>
<link rel="stylesheet" href="css/recetas.css" type="text/css" />
<link rel="stylesheet" href="css/navegacion.css" type="text/css" />
<title>Recetas de Cocina</title>
</head>
<body>
<hr noshade style="color:CC6666;height:3px">
<form name="form1" method="post" action="index.php">
    <label>Buscar:
    <input type="text" name="txtBusqueda" id="txtBusqueda">
    Ver Por Categorias:
    <select name="selCategorias" id="selCategorias">
      <option value="-1" selected>Todas las Categorias</option>
      <?php
    $tablarecetas_categorias 
mysql_query("SELECT * FROM recetas_categorias ORDER BY Categorias ASC"); // Seleccionamos las Categorias de la tabla recetas_cocina_categorias
    
while ($registrocategorias mysql_fetch_array($tablarecetas_categorias)) { // Vamos a repetir una Option (opcion), de la Lista Desplegable, por cada Categoria en la tabla
?>
      <option value="<?php echo $registrocategorias['Id']; ?>"><?php echo $registrocategorias['Categorias']; ?></option>
      <?php
    
// termina la zona de repeticion
    
mysql_free_result($tablarecetas_categorias); // se libera la memoria usada por la tabla
?>
    </select>
</label>
  <input name="cmdBuscar" type="image" id="cmdBuscar" src="modules/Recetas_de_Cocina/images/boton-buscar.gif">  
</form>
<hr align="center" noshade color="#00FF00" style="color:CC6666;height:3px">
<?php
 $_pagi_sql 
"SELECT recetas_recetas.*, recetas_categorias.* FROM recetas_recetas, recetas_categorias WHERE recetas_recetas.IdCategorias = recetas_categorias.Id ";
if (isset(
$_POST['txtBusqueda'])) {
    
$_pagi_sql .= " AND recetas_recetas.Nombre LIKE '%" $_POST['txtBusqueda'] . "%' ";
    if (
intval($_POST['selCategorias']) > 0) {
        
$_pagi_sql .= " AND recetas_recetas.IdCategorias = '" intval($_POST['selCategorias']) . "'";
    }
}
$_pagi_sql .= " ORDER BY recetas_categorias.Categorias ASC";
$tabla mysql_query($sql);
//while ($registro = mysql_fetch_array($tabla)) {
//cantidad de resultados por página (opcional, por defecto 20)
$_pagi_cuantos 15;
$_pagi_nav_num_enlaces9;
$_pagi_nav_estilo "nav";
$_pagi_propagar = array("tabla","termino");
//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include("includes/paginator.inc.php");
//Leemos y escribimos los registros de la página actual

echo"<center><p><span class='Estilo4'>".$_pagi_info."</span></p></center>";
echo
"<center><p>".$_pagi_navegacion."</p></center>";

while(
$row mysql_fetch_array($_pagi_result)){
echo 
'<table width="100%" border="2" bordercolor="#FFFF00" bgcolor="#66FFFF" class="llistaDades">';
echo 
'<tr>';
echo 
'<th width="11%" rowspan="3" scope="col" bgcolor="#FFFFFF">
<img src="modules/Recetas_de_Cocina/imagenes/'
.$row["ImagenCat"].'" width="60" height="60"></th>';
echo 
' <th width="89%" bgcolor="#0099FF" scope="col"><span class="Estilo1">Recetas de  '.$row["Categorias"].'</span></th>';
echo 
' </tr>';
echo 
' <tr>';
echo 
' <th scope="col" bgcolor="#EFEBDE"><span class="Estilo2">'.$row["Nombre"].'&nbsp;&nbsp;&nbsp;&nbsp;
<a href="modules.php?name=Recetas_de_Cocina&file=verreceta&IdRecetas='
.$row["IdRecetas"].'"><img src="modules/Recetas_de_Cocina/images/boton-ver-receta.gif" width="80" height="25"></a></th>';
echo 
'  </tr>';
echo 
' <tr>';
echo 
' <th scope="col" bgcolor="#EFEBDE"><span class="Estilo4">'.$row["Comentario"].'</span></th>';
echo 
' </tr>';
echo 
'</table>';
}

//Incluimos la barra de navegación
echo"<center><p><span class='Estilo4'>".$_pagi_info."</span></p></center>";
echo
"<center><p>".$_pagi_navegacion."</p></center>";
?>
</body>
</html>
  #2 (permalink)  
Antiguo 10/12/2008, 06:57
 
Fecha de Ingreso: mayo-2008
Mensajes: 489
Antigüedad: 16 años
Puntos: 8
Respuesta: Ayuda con Paginator de jpinedo

Felices fiestas ultimsgats, el problema que tienes es que al seleccionar la siguiente página, pierdes el valor de $_POST['txtBusqueda'] (linea 36) por lo que el código vuelve a su estado inicial. lo que yo hago para paginar es recoger el valor del select tambien en la url de los links de paginación, así que al avanzar en el listado puedo regoger denuevo este valor (entu caso categoria)

Código php:
Ver original
  1. if (!empty($_POST['txtBusqueda'])) {
  2.  $categoria=$_POST['txtBusqueda'];
  3. }
  4. esle {
  5.  $categoria=$_GET['txtBusqueda'];
  6. }
  #3 (permalink)  
Antiguo 10/12/2008, 09:04
Avatar de ultimsgats  
Fecha de Ingreso: diciembre-2008
Mensajes: 23
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda con Paginator de jpinedo

Hola abigor66 en primer lugar gracias por tu rapida respuesta y en segundo te dire que he sustituido la linea que me dices y puesto el codigo que me has pasado y me da error en un monton de lineas si haces el favor dime si hay que quitar toda la linea o solo parte.
Gracias y salu2....................
  #4 (permalink)  
Antiguo 10/12/2008, 09:49
 
Fecha de Ingreso: diciembre-2007
Mensajes: 427
Antigüedad: 16 años, 4 meses
Puntos: 35
Respuesta: Ayuda con Paginator de jpinedo

mmm
Pues a mi me sucedia algo parecido pero no tiene q ver con el paginator de jpinedo
sino es q en la url sigue quedando la pagina donde estabas.
Mi problema lo solucione utilizando
$Server['script_name'].
Pruebalo para ver

Código PHP:
<a href="$_SERVER[SCRIPT_NAME]\"?name=Recetas_de_Cocina&file=verreceta&IdRecetas='.$row["IdRecetas"].'"><img src="modules/Recetas_de_Cocina/images/boton-ver-receta.gif" width="80" height="25"></a></th>; 
  #5 (permalink)  
Antiguo 10/12/2008, 10:50
Avatar de ultimsgats  
Fecha de Ingreso: diciembre-2008
Mensajes: 23
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda con Paginator de jpinedo

Hola maxpower2008 agradezco tu intencion pero el problema no va por ese lado pues ese enlace me funciona bien y es para ver todos los datos de un registro en una pagina aparte y como es de uno solo no necesito paginarla. Es en la principal donde tengo el problema pues con este codigo cuando selecciono por categorias solo puedo ver la primera pagina que me genera esa categoria, aunque me reconoce todas las generadas, y al intentar ver otra pagina me carga todas las de la tabla.
Salu2...............................
  #6 (permalink)  
Antiguo 10/12/2008, 16:50
 
Fecha de Ingreso: mayo-2008
Mensajes: 489
Antigüedad: 16 años
Puntos: 8
Respuesta: Ayuda con Paginator de jpinedo

Hola ultimsgats sobre la linea 36 no debes colocar el codigo que te di, eso lo colocas por ejemplo sobre la linea 34 y reemplazas todos los $_POST['txtBusqueda'] por $categoria.

en lo personal creo me parece más simple otro código que anda circulando en la red, más no sé quien es su autor.

Código php:
Ver original
  1. $pagina     = $_GET["pagina"];
  2. $registros  = 10; // Número de resultados por página
  3.  
  4. if (!$pagina) {
  5.  $inicio = 0;
  6.  $pagina = 1;
  7. }
  8. else {
  9.  $inicio = ($pagina - 1) * $registros;
  10. }
  11.  $resultados = mysql_query("SELECT * FROM tabla WHERE campo");
  12.  $total_registros = mysql_num_rows($resultados);
  13.  $resultados = mysql_query("SELECT * FROM tabla WHERE campo LIMIT $inicio, $registros");   
  14.  $total_paginas = ceil($total_registros / $registros);                 
  15.  
  16.  if($total_registros) {
  17.   echo '<p>&nbsp;</p>';
  18.   while($row=mysql_fetch_array($resultados)) {
  19.    if($color=='#f5f9fe') $color ='#ffffff';
  20.    else $color='#f5f9fe';
  21.     echo '<br><div style="width:100%; background-color:'.$color.'">acá iría el contenido</div>';
  22.   }
  23.  mysql_free_result($resultados);
  24.  }
  25.  if($total_registros) {
  26.   echo '<div align="center"><p>&nbsp;</p>';
  27.   if(($pagina - 1) > 0) {
  28.    echo "<a href='".$_SERVER['PHP_SELF']."?pagina=".($pagina-1)."'>&laquo; Anterior</a> ";
  29.   }
  30.   for ($i=1; $i<=$total_paginas; $i++){
  31.    if ($pagina == $i) {echo "<b>".$pagina."</b> ";}
  32.    else {echo "<a href='".$_SERVER['PHP_SELF']."?pagina=$i'>$i</a> ";} 
  33.   }
  34.   if(($pagina + 1)<=$total_paginas) {
  35.    echo " <a href='".$_SERVER['PHP_SELF']."?pagina=".($pagina+1)."'>Siguiente &raquo;</a>";
  36.   }
  37.   echo "</div>";
  38.  }

Suerte
  #7 (permalink)  
Antiguo 11/12/2008, 03:24
Avatar de ultimsgats  
Fecha de Ingreso: diciembre-2008
Mensajes: 23
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda con Paginator de jpinedo

Hola a todos gracias por el interes tomado pero sigo sin encontrar la formula idonea pues como decia en anteriores envios el paginator para el indice general me funciona de maravilla el problema lo tengo al paginar por categorias entonces no se si es que no utilizo el codigo adecuado o es que el paginador no esta diseñado para este tipo de funcion y tedre que buscar otro.
Salu2.........................
  #8 (permalink)  
Antiguo 11/12/2008, 09:28
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
De acuerdo Respuesta: Ayuda con Paginator de jpinedo

aca dejo una funcion que tengo para paginacion, lo unico que faltaria, que seria bueno si alguien daria una mano es cuando son por ejemplo 2 mil paginas, para que muestre algo asi 1 2 3 4 5 6 .... 2000

aca va la funcion

Código PHP:
function paginacion3($perPage, &$page, &$from$extraVars$table$sqlWhere$title$idField ""$showPages TRUE) {
    
// OJO: $page y $from se pasa por referencia 
    
    
if (!$page)                { $page 1; }    
    if (
$page 1)        { $page 1; }    
    if (
$title)             { $title $title ": "; }
    if (
$extraVars)     { $extraVars "&" $extraVars; }
    if (!
$idField)         { $idField "id";    }
    
    
$from = ($page 1) * $perPage;
    
    
$sql "SELECT count(DISTINCT $idField) as n_registros FROM $table $sqlWhere";
    
$result mysql_query($sql);
    
    if (
$line mysql_fetch_array($result)) {
        
$cuantos $line[n_registros];
        
$pages ceil($cuantos $perPage);

        if (
$page 1) {
            
$previous "<a href=\"" $_SERVER['PHP_SELF']  . "?page=" . ($page 1
                    . 
"$extraVars\"><b>&lt; Anterior</b></a> | ";
            
$desde $perPage * ($page 1) + 1;
        }else{
            
$desde 1;
        }

        if (
$desde == $cuantos OR $cuantos $perPage $desde) {
            
$hasta $cuantos;
        }else{
            
$next " | <a href=\"" $_SERVER['PHP_SELF']  . "?page=" . ($page 1
                    . 
"$extraVars\"><b>Siguiente &gt;</b></a>";
            
$hasta $perPage $page;
        }

        if (
$pages 0) {
            
$header "<div>$previous$title<b>$desde-$hasta</b> de <b>$cuantos</b>$next</div>";
    
            if (
$showPages) {
                
$intermedias "<div>Paginas: ";
                
                for (
$n 1$n <= $pages$n++){
                    if (
$n == $page){
                        
$intermedias .= "$sep<b>$n</b>";
                    }else{
                        
$intermedias .= "$sep<a href=\"" $_SERVER['PHP_SELF'] . "?page=$n$extraVars\">$n</a>";
                    }
                    
$sep " ";
                }
                
$intermedias .= "</div>";
            }
        }
        
//$page = ($page - 1) * $perPage;
        
    
}
    
    
$header .= $intermedias
    return 
$header;

uso de la funcion:

Código PHP:
<h1>aldo1982</h1>

<table width="550"  cellpadding="2" cellspacing="1">    
    
    <?
        $perPage 
10;
        
$page $_GET[page];

       
$paging paginacion2($perPage$page$from"""Tabla""""Descripcion Tabla""id_principal_tabla");

    
mysql_query("SET NAMES utf8");
    
$sql "SELECT campo1, campo2 FROM tabla ORDER BY id DESC                    
                    "
;
    
$result mysql_query($sql);
    if (
$row mysql_fetch_array($result)) {
        do {
            
?>
            <tr>
                <td align="center"><?=$row[campo1])?></td>
                <td align="center"><?=$row[campo2])?></td>
            </tr>
            <?
        
} while($row mysql_fetch_array($result));
    } else {
        
?>
        <tr>
            <td colspan="2" id="noRows"><b>No se han encontrado registros</b></td>
        </tr>
        <?
    
}
    
?>

</table>
<div id="pages"><? =$paging?></div>
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA

Última edición por aldo1982; 22/01/2009 a las 05:09 Razón: faltaba poner para que funcione la paginacion jeje
  #9 (permalink)  
Antiguo 11/12/2008, 11:51
Avatar de ultimsgats  
Fecha de Ingreso: diciembre-2008
Mensajes: 23
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda con Paginator de jpinedo

Hola aldo1982 estoy probando tu codigo y visualizo todos los registros pero no consigo paginar nada ni veo donde configurar el numero de registros por pagina. Y otra cosa si eliminas la linea
Código PHP:
  mysql_query("SET NAMES utf8"); 
por lo menos en mi ordenador se ve bien todo el texto sin caracteres raros.

Última edición por ultimsgats; 11/12/2008 a las 11:59
  #10 (permalink)  
Antiguo 22/01/2009, 05:10
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
De acuerdo Respuesta: Ayuda con Paginator de jpinedo

Perdon la demora, ahi correji el codigo asi podes ver la paginacion.

salu2
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
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 06:07.