Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Paginador en buscador muestra todos los registros

Estas en el tema de Paginador en buscador muestra todos los registros en el foro de PHP en Foros del Web. Q tal foro , necesito de su ayuda tengo un buscador que me muestra los resultados paginados, el paginador cumple con su objetivo pero solo ...
  #1 (permalink)  
Antiguo 09/05/2013, 14:46
 
Fecha de Ingreso: septiembre-2010
Mensajes: 64
Antigüedad: 9 años, 2 meses
Puntos: 5
Pregunta Paginador en buscador muestra todos los registros

Q tal foro , necesito de su ayuda tengo un buscador que me muestra los resultados paginados, el paginador cumple con su objetivo pero solo me muestra bien la primera pagina ya cuando quiero ver la segunda pagina de los resultados me devuelve todos los registros y no asi con los criterios buscados.

buscar.html
Código HTML:
<html>
<body>
<form id="form1" name="form1" method="POST" action="buscador.php">
            <p>
              <label for="cliente">Numero Id:</label>
              <input type="text" name="id" id="id" />
              <label for="nombre"><br />
                Nombre Nombre:</label>
              <input type="text" name="nombre" id="nombre" />
              <label for="agente"><br />
                Nombre Costo:</label>
              <input type="text" name="costo" id="costo" />
              <label for="zona"><br />
              </label>
            </p>
            <p>
              <input type="submit" name="buscar" id="buscar" value="Buscar" />
            </p>
          </form>
</body>
</html> 
buscador.php
Código PHP:
<?php 
include('paginator.class.2.php');
include(
"conexion.php");
//$id = isset($_POST['id']) ? $_POST['id'] : NULL;  
//$nombre = isset($_POST['nombre']) ? $_POST['nombre'] : NULL;  
//$costo = isset($_POST['costo']) ? $_POST['costo'] : NULL;  
$id$_POST['id'];
$nombre$_POST['nombre'];
$costo$_POST['costo'];

$query "SELECT COUNT(*) FROM items WHERE 
id like '$id%' and 
nombre like '%$nombre%' and  
costo like '$costo%'"
;
$result mysql_query($query) or die(mysql_error());
$num_rows mysql_fetch_row($result);

$pages = new Paginator;
$pages->items_total $num_rows[0];
$pages->mid_range 5// Number of pages to display. Must be odd and > 3
$pages->items_per_page 5;
$pages->paginate();
echo 
$pages->display_pages();
echo 
"<span class=\"\">".$pages->display_jump_menu().$pages->display_items_per_page()."</span>";
$cadena "SELECT id,nombre,costo FROM items WHERE 
id like '$id%' and 
nombre like '%$nombre%' and  
costo like '$costo%' $pages->limit"
;
$result mysql_query($cadena) or die(mysql_error());

while (
$resultado mysql_fetch_array($result)) 

echo 
"id ".$resultado['id']."<br>"
echo 
"nombre ".$resultado['nombre']."<br>"
echo 
"costo ".$resultado['costo']."<br>"
echo 
"<hr><br>"


echo 
$pages->display_pages();
//echo "<p class=\"paginate\">Page: $pages->current_page of $pages->num_pages</p>\n";
//echo "<p class=\"paginate\">SELECT * FROM items $pages->limit (retrieve records $pages->low-$pages->high from table - $pages->items_total item total / $pages->items_per_page items per page)";
?>
y la clase paginator.class.2.php

Código PHP:
<?php
/*
 * PHP Pagination Class
 * @author [email protected] - http://www.catchmyfame.com
 * @version 2.0.0
 * @date October 18, 2011
 * @copyright (c) [email protected] (www.catchmyfame.com)
 * @license CC Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) - http://creativecommons.org/licenses/by-sa/3.0/
 */
class Paginator{
    var 
$items_per_page;
    var 
$items_total;
    var 
$current_page;
    var 
$num_pages;
    var 
$mid_range;
    var 
$low;
    var 
$limit;
    var 
$return;
    var 
$default_ipp;
    var 
$querystring;
    var 
$ipp_array;

    function 
Paginator()
    {
        
$this->current_page 1;
        
$this->mid_range 7;
        
$this->ipp_array = array(10,25,50,100,'All');
        
$this->items_per_page = (!empty($_GET['ipp'])) ? $_GET['ipp']:$this->default_ipp;
    }

    function 
paginate()
    {
        if(!isset(
$this->default_ipp)) $this->default_ipp=25;
        if(
$_GET['ipp'] == 'All')
        {
            
$this->num_pages 1;
//            $this->items_per_page = $this->default_ipp;
        
}
        else
        {
            if(!
is_numeric($this->items_per_page) OR $this->items_per_page <= 0$this->items_per_page $this->default_ipp;
            
$this->num_pages ceil($this->items_total/$this->items_per_page);
        }
        
$this->current_page = (isset($_GET['page'])) ? (int) $_GET['page'] : // must be numeric > 0
        
$prev_page $this->current_page-1;
        
$next_page $this->current_page+1;
        if(
$_GET)
        {
            
$args explode("&",$_SERVER['QUERY_STRING']);
            foreach(
$args as $arg)
            {
                
$keyval explode("=",$arg);
                if(
$keyval[0] != "page" And $keyval[0] != "ipp"$this->querystring .= "&" $arg;
            }
        }

        if(
$_POST)
        {
            foreach(
$_POST as $key=>$val)
            {
                if(
$key != "page" And $key != "ipp"$this->querystring .= "&$key=$val";
            }
        }
        if(
$this->num_pages 10)
        {
            
$this->return = ($this->current_page And $this->items_total >= 10) ? "<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=$prev_page&ipp=$this->items_per_page$this->querystring\">&laquo; Previous</a> ":"<span class=\"inactive\" href=\"#\">&laquo; Previous</span> ";

            
$this->start_range $this->current_page floor($this->mid_range/2);
            
$this->end_range $this->current_page floor($this->mid_range/2);

            if(
$this->start_range <= 0)
            {
                
$this->end_range += abs($this->start_range)+1;
                
$this->start_range 1;
            }
            if(
$this->end_range $this->num_pages)
            {
                
$this->start_range -= $this->end_range-$this->num_pages;
                
$this->end_range $this->num_pages;
            }
            
$this->range range($this->start_range,$this->end_range);

            for(
$i=1;$i<=$this->num_pages;$i++)
            {
                if(
$this->range[0] > And $i == $this->range[0]) $this->return .= " ... ";
                
// loop through all pages. if first, last, or in range, display
                
if($i==Or $i==$this->num_pages Or in_array($i,$this->range))
                {
                    
$this->return .= ($i == $this->current_page And $_GET['page'] != 'All') ? "<a title=\"Go to page $i of $this->num_pages\" class=\"current\" href=\"#\">$i</a> ":"<a class=\"paginate\" title=\"Go to page $i of $this->num_pages\" href=\"$_SERVER[PHP_SELF]?page=$i&ipp=$this->items_per_page$this->querystring\">$i</a> ";
                }
                if(
$this->range[$this->mid_range-1] < $this->num_pages-And $i == $this->range[$this->mid_range-1]) $this->return .= " ... ";
            }
            
$this->return .= (($this->current_page $this->num_pages And $this->items_total >= 10) And ($_GET['page'] != 'All') And $this->current_page 0) ? "<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=$next_page&ipp=$this->items_per_page$this->querystring\">Next &raquo;</a>\n":"<span class=\"inactive\" href=\"#\">&raquo; Next</span>\n";
            
$this->return .= ($_GET['page'] == 'All') ? "<a class=\"current\" style=\"margin-left:10px\" href=\"#\">All</a> \n":"<a class=\"paginate\" style=\"margin-left:10px\" href=\"$_SERVER[PHP_SELF]?page=1&ipp=All$this->querystring\">All</a> \n";
        }
        else
        {
            for(
$i=1;$i<=$this->num_pages;$i++)
            {
                
$this->return .= ($i == $this->current_page) ? "<a class=\"current\" href=\"#\">$i</a> ":"<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=$i&ipp=$this->items_per_page$this->querystring\">$i</a> ";
            }
            
$this->return .= "<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=1&ipp=All$this->querystring\">All</a> \n";
        }
        
$this->low = ($this->current_page <= 0) ? 0:($this->current_page-1) * $this->items_per_page;
        if(
$this->current_page <= 0$this->items_per_page 0;
        
$this->limit = ($_GET['ipp'] == 'All') ? "":" LIMIT $this->low,$this->items_per_page";
    }
    function 
display_items_per_page()
    {
        
$items '';
        if(!isset(
$_GET[ipp])) $this->items_per_page $this->default_ipp;
        foreach(
$this->ipp_array as $ipp_opt$items .= ($ipp_opt == $this->items_per_page) ? "<option selected value=\"$ipp_opt\">$ipp_opt</option>\n":"<option value=\"$ipp_opt\">$ipp_opt</option>\n";
        return 
"<span class=\"paginate\">Items per page:</span><select class=\"paginate\" onchange=\"window.location='$_SERVER[PHP_SELF]?page=1&ipp='+this[this.selectedIndex].value+'$this->querystring';return false\">$items</select>\n";
    }
    function 
display_jump_menu()
    {
        for(
$i=1;$i<=$this->num_pages;$i++)
        {
            
$option .= ($i==$this->current_page) ? "<option value=\"$i\" selected>$i</option>\n":"<option value=\"$i\">$i</option>\n";
        }
        return 
"<span class=\"paginate\">Page:</span><select class=\"paginate\" onchange=\"window.location='$_SERVER[PHP_SELF]?page='+this[this.selectedIndex].value+'&ipp=$this->items_per_page$this->querystring';return false\">$option</select>\n";
    }
    function 
display_pages()
    {
        return 
$this->return;
    }
}
  #2 (permalink)  
Antiguo 09/05/2013, 14:56
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 11 años, 7 meses
Puntos: 47
Respuesta: Paginador en buscador muestra todos los registros

Cuando armas la paginacion, debes pasarle tambien los parámetros con los que has hecho la busqueda... asi de simple.
  #3 (permalink)  
Antiguo 09/05/2013, 15:10
 
Fecha de Ingreso: septiembre-2010
Mensajes: 64
Antigüedad: 9 años, 2 meses
Puntos: 5
Respuesta: Paginador en buscador muestra todos los registros

Ya logre resolverlo el problema era que en mi formulario usaba POST y lo cambie por GET y ya devolvio correctamente los datos, gracias por el comentario alex1084
  #4 (permalink)  
Antiguo 09/05/2013, 15:11
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 11 años, 7 meses
Puntos: 47
Respuesta: Paginador en buscador muestra todos los registros

ok, marca como solucionado el tema entonces

Etiquetas: buscador, html, muestra, mysql, paginador, registro, registros, resultados, select, sql
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 18:25.