Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/04/2012, 08:20
johndi
 
Fecha de Ingreso: diciembre-2006
Mensajes: 16
Antigüedad: 17 años, 4 meses
Puntos: 0
Exclamación Problema de paginación PHP+MYSQL

Hola, buenos días.

Me encuentro realizando una base de datos con MYSQL y estoy intentando paginar los resultados.

Lo que uno se encuentra al entrar es un formulario, que realiza un post hacia la misma página mediante:

Código:
<form action = "" method = "POST">

            <input type = "text" name = "keywords" value="<?php echo $_POST['keywords']?>"/>

</form>
Con ello, mediante $_POST['keywords'] consigo que cada casilla mantenga el valor que se ha escrito en ella.


Ahora bien, cuando se me muestran los resultados, mando paginarlos mediante una función que me devuelve la paginacion mediante paso de variables por url, como por ejemplo:

Código:
$pagination.= "<li><a href='?page=$counter>$counter</a></li>";
El problema que tengo, es que cada vez que realizo una búsqueda (se me quedan marcados los valores escritos en el formulario) y posteriormente pincho para ver la siguiente página de la búsqueda, me sale la siguiente página pero de todos los resultados, no de la búsqueda específica.

Es decir, no se porqué cada vez que pincho para ver la siguiente página de la búsqueda, se me borran los campos del formulario y coge la siguiente página pero de todos los resultados... No sé si alguien sabrá que es lo que ocurre... Pienso que es problema del href que no le estoy pasando una variable para que mantenga el valor el formulario, pero no se como se haría eso...

El método con el que realizo la paginación es:

Código PHP:
<?php

 
   
function pagination($cadenapag$per_page 10$page 1){ 
       
$url '?';     
        
$row mysql_fetch_array(mysql_query($cadenapag));
        
$total $row['num'];
        
$adjacents "2"

        
$page = ($page == $page);  
        
$start = ($page 1) * $per_page;                                
        
        
$prev $page 1;                            
        
$next $page 1;
        
$lastpage ceil($total/$per_page);
        
$lpm1 $lastpage 1;
        
        
$pagination "";
        if(
$lastpage 1)
        {    
            
$pagination .= "<ul class='pagination'>";
                    
$pagination .= "<li class='details'>Page $page of $lastpage</li>";
            if (
$lastpage + ($adjacents 2))
            {    
                for (
$counter 1$counter <= $lastpage$counter++)
                {
                    if (
$counter == $page)
                        
$pagination.= "<li><a class='current'>$counter</a></li>";
                    else
                        
$pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";                    
                }
            }
            elseif(
$lastpage + ($adjacents 2))
            {
                if(
$page + ($adjacents 2))        
                {
                    for (
$counter 1$counter + ($adjacents 2); $counter++)
                    {
                        if (
$counter == $page)
                            
$pagination.= "<li><a class='current'>$counter</a></li>";
                        else
                            
$pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";                    
                    }
                    
$pagination.= "<li class='dot'>...</li>";
                    
$pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>";
                    
$pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>";        
                }
                elseif(
$lastpage - ($adjacents 2) > $page && $page > ($adjacents 2))
                {
                    
$pagination.= "<li><a href='{$url}page=1'>1</a></li>";
                    
$pagination.= "<li><a href='{$url}page=2'>2</a></li>";
                    
$pagination.= "<li class='dot'>...</li>";
                    for (
$counter $page $adjacents$counter <= $page $adjacents$counter++)
                    {
                        if (
$counter == $page)
                            
$pagination.= "<li><a class='current'>$counter</a></li>";
                        else
                            
$pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";                    
                    }
                    
$pagination.= "<li class='dot'>..</li>";
                    
$pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>";
                    
$pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>";        
                }
                else
                {
                    
$pagination.= "<li><a href='{$url}page=1'>1</a></li>";
                    
$pagination.= "<li><a href='{$url}page=2'>2</a></li>";
                    
$pagination.= "<li class='dot'>..</li>";
                    for (
$counter $lastpage - (+ ($adjacents 2)); $counter <= $lastpage$counter++)
                    {
                        if (
$counter == $page)
                            
$pagination.= "<li><a class='current'>$counter</a></li>";
                        else
                            
$pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";                    
                    }
                }
            }
            
            if (
$page $counter 1){ 
                
$pagination.= "<li><a href='{$url}page=$next'>Next</a></li>";
                
$pagination.= "<li><a href='{$url}page=$lastpage'>Last</a></li>";
            }else{
                
$pagination.= "<li><a class='current'>Next</a></li>";
                
$pagination.= "<li><a class='current'>Last</a></li>";
            }
            
$pagination.= "</ul>\n";        
        }
    
    
        return 
$pagination;
    } 
?>
Y $cadenapag es:


Código:
SELECT COUNT(*) as `num` FROM `inventario2` WHERE blablabla
Muchas gracias de antemano!!