Foros del Web » Programando para Internet » PHP »

Consulta en Paginacion con PHP

Estas en el tema de Consulta en Paginacion con PHP en el foro de PHP en Foros del Web. Tengo el siguiente script que recibe datos de un formulario y quiero paginarlos ya que el resultado de la consulta da muchos registros y quiero ...
  #1 (permalink)  
Antiguo 11/05/2009, 02:23
 
Fecha de Ingreso: agosto-2007
Mensajes: 248
Antigüedad: 16 años, 8 meses
Puntos: 1
De acuerdo Consulta en Paginacion con PHP

Tengo el siguiente script que recibe datos de un formulario y quiero paginarlos ya que el resultado de la consulta da muchos registros y quiero hacer la paginacion.
El caso es que me funciona en todos los casos salvo cuando recojo un valor del formulario con $POST y por ejemplo hay 2 paginas...la primera se muestra bien,pero la segunda ya no, me pone Query was empty..es como si al poner $POST se perdiera la informacion al paginar los resultados. En cambio si pongo una consulta sin WHERE y por tanto sin ningun $POST me funciona bien. ¿Me podeis dar alguna idea?. Muchas Gracias y espero haberme explicado bien.

También si conoceis alguna clase o fichero en PHP que realice culaquier paginacion me gustaria que me dierais el link.

Lo importante del script es el siguiente:


Código:
//RECOJO DATO FORMULARIO

<?php
$numeropv_buscar = $_POST["numeropv"]; 
........MAS $POST CON MAS DATOS DEL FORMULARIO....................
?>


//INSTANCIO A LA CLASE PAGINATOR QUE MUESTRO MAS ABAJO
<tr>
   <td width="100%" align="center">
    <?php
	  require_once ('paginate/paginate.php');

 $sql_num_filas ="SELECT COUNT(*) FROM t_puntos_venta";

	  $res_numfilas = mysql_query($sql_numfilas) or die (mysql_error());
	  $result_row = mysql_fetch_row($res_numfilas);

	  $pages = new Paginator;
	  $pages->items_total = $result_row[0]; //$num_rows[0];
	  $pages->mid_range = 5;
	  $pages->paginate();
	 
      echo '<b><font color="#003366">';
	  echo $pages->display_pages();
	  
	  echo '<br/><br/>'; 
	  	  
	  echo '<span style=\"text-decoration:none\" style=\"color:#003366\" style="\"margin-left:25px"\">'.$pages->display_jump_menu().$pages->display_items_per_page().'</span>';
	  echo '<br/><br/>';	  
	  echo "Se encuentra en la p&aacute;gina $pages->current_page de $pages->num_pages";  
	  echo '</font></b>';
?>

    </td>
  </tr>  

//CONSULTA QUE QUIERO PAGINAR

$sql_buscar_punto_venta ="SELECT id_punto_venta,nombre_estacion,nif,direccion,poblacion,t_puntos_venta.id_provincia,cp,t_puntos_venta.id_pais,telefono1,telefono2,fax,web,observaciones,t_puntos_venta.id_estado,fecha_alta,fecha_baja,motivo_baja,nombre,apellido1,apellido2,t_puntos_venta.id_clasificacion,nro_estacion,provincia,pais,estado,clasificacion 
FROM t_puntos_venta,t_provincias,t_paises,t_estados,t_clasificaciones
 WHERE t_puntos_venta.id_provincia = t_provincias.id_provincia AND t_puntos_venta.id_pais=t_paises.id_pais AND t_puntos_venta.id_estado=t_estados.id_estado AND t_puntos_venta.id_clasificacion=t_clasificaciones.id_clasificacion
AND t_puntos_venta.nro_estacion='$numeropv_buscar' 
ORDER BY nro_estacion ASC $pages->limit"; 

Tengo la siguiente clase llamada Paginator.

Código:
<?php

class Paginator{

    var $items_per_page;
    var $items_total;
    var $current_page;
    var $num_pages;
    var $mid_range;
    var $low;
    var $high;
    var $limit;
    var $return;
    var $default_ipp = 2; //Cambiar Valor Cuando Haya Mas Resultados que Mostrar

 function Paginator()
 {
  $this->current_page = 1;
  $this->mid_range = 7;
  $this->items_per_page = (!empty($_GET['ipp'])) ? $_GET['ipp']:$this->default_ipp;
 }

    function paginate()
    {
        if($_GET['ipp'] == 'Todo')
        {
            $this->num_pages = ceil($this->items_total/$this->default_ipp);
            $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 = (int) $_GET['page']; // must be numeric > 0
        if($this->current_page < 1 Or !is_numeric($this->current_page)) $this->current_page = 1;
        if($this->current_page > $this->num_pages) $this->current_page = $this->num_pages;
        $prev_page = $this->current_page-1;
        $next_page = $this->current_page+1;

        if($this->num_pages > 10)
        {
            $this->return = ($this->current_page != 1 And $this->items_total >= 10) ? "<a class=\"paginate\" style=\"text-decoration:none\" style=\"color:#003366\" href=\"$_SERVER[PHP_SELF]?page=$prev_page&ipp=$this->items_per_page\">&laquo; Anterior</a> ":"<span style=\"text-decoration:none\" style=\"color:#003366\" class=\"inactive\" href=\"#\">&laquo; Anterior</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] > 2 And $i == $this->range[0]) $this->return .= " ... ";
                // loop through all pages. if first, last, or in range, display
                if($i==1 Or $i==$this->num_pages Or in_array($i,$this->range))
                {
                    $this->return .= ($i == $this->current_page And $_GET['page'] != 'Todo') ? "<a title=\"Go to page $i of $this->num_pages\" class=\"current\" style=\"text-decoration:none\" style=\"color:#003366\" href=\"#\">$i</a> ":"<a class=\"paginate\" style=\"text-decoration:none\" style=\"color:#003366\" title=\"Go to page $i of $this->num_pages\" href=\"$_SERVER[PHP_SELF]?page=$i&ipp=$this->items_per_page\">$i</a> ";
                }
                if($this->range[$this->mid_range-1] < $this->num_pages-1 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'] != 'Todo')) ? "<a class=\"paginate\" style=\"text-decoration:none\" style=\"color:#003366\" href=\"$_SERVER[PHP_SELF]?page=$next_page&ipp=$this->items_per_page\">Siguiente &raquo;</a>\n":"<span class=\"inactive\" style=\"text-decoration:none\" style=\"color:#003366\" href=\"#\">&raquo; Siguiente</span>\n";
            $this->return .= ($_GET['page'] == 'Todo') ? "<a class=\"current\" style=\"margin-left:10px\" style=\"text-decoration:none\" style=\"color:#003366\" href=\"#\">Todo</a> \n":"<a class=\"paginate\" style=\"text-decoration:none\" style=\"color:#003366\" style=\"margin-left:10px\" href=\"$_SERVER[PHP_SELF]?page=1&ipp=Todo\">Todo</a> \n";
        }
        else
        {
            for($i=1;$i<=$this->num_pages;$i++)
            {
                $this->return .= ($i == $this->current_page) ? "<a class=\"current\" style=\"text-decoration:none\" style=\"color:#003366\" href=\"#\">$i</a> ":"<a class=\"paginate\" style=\"text-decoration:none\" style=\"color:#003366\" href=\"$_SERVER[PHP_SELF]?page=$i&ipp=$this->items_per_page\">$i</a> ";
            }
            $this->return .= "<a class=\"paginate\" style=\"text-decoration:none\" style=\"color:#003366\" href=\"$_SERVER[PHP_SELF]?page=1&ipp=Todo\">Todo</a> \n";
        }
        $this->low = ($this->current_page-1) * $this->items_per_page;
        $this->high = ($_GET['ipp'] == 'Todo') ? $this->items_total:($this->current_page * $this->items_per_page)-1;
        $this->limit = ($_GET['ipp'] == 'Todo') ? "":" LIMIT $this->low,$this->items_per_page";
    }


function display_items_per_page()
 {
  $items = '';
  $ipp_array = array(10,25,50,100,'Todo');
  foreach($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\">Resultados por P&aacute;gina:</span><select class=\"paginate\" onchange=\"window.location='$_SERVER[PHP_SELF]?page=1&ipp='+this[this.selectedIndex].value;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\">P&aacute;gina:</span><select class=\"paginate\" onchange=\"window.location='$_SERVER[PHP_SELF]?page='+this[this.selectedIndex].value+'&ipp=$this->items_per_page';return false\">$option</select>\n";
 }


function display_pages()
 {
  return $this->return;
 }

}
?>

Última edición por superdober; 11/05/2009 a las 02:25 Razón: Mejorar Explicación
  #2 (permalink)  
Antiguo 11/05/2009, 05:18
 
Fecha de Ingreso: abril-2009
Mensajes: 106
Antigüedad: 15 años
Puntos: 1
Respuesta: Consulta en Paginacion con PHP

wenas yo tengo un script k descargue en este mismo foro para paginar y la verdad esk me va muy bien, no he tenido ningun problema a la hora de paginar(exepto en una consulta k hice k la construi erroneamente).
puedes probar aver k tal te va con dicho script

el script se llama PHPPaginator y buscandolo en el foro lo encontraras rapidamente.

jpinedo.webcindario.com/scripts/paginator/

de todas maneras ahi tienes un enlace


Saludos!!!
  #3 (permalink)  
Antiguo 12/05/2009, 08:44
 
Fecha de Ingreso: agosto-2007
Mensajes: 248
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Consulta en Paginacion con PHP

Sabes si propaga las variables $POST en un Script esta clase?

Gracias ¡¡¡
  #4 (permalink)  
Antiguo 12/05/2009, 08:58
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Consulta en Paginacion con PHP

Un ppción mas

http://www.forosdelweb.com/f18/pagin...elease-532119/

Y creo que lo que necesitas, este paginador si lo soporta

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
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 16:25.