Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: johndi9 en 12 Abril 2012, 15:52 pm



Título: Problema de paginación en MYSQL
Publicado por: johndi9 en 12 Abril 2012, 15:52 pm
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...

Muchas gracias de antemano!!


Título: Re: Problema de paginación en MYSQL
Publicado por: johndi9 en 12 Abril 2012, 16:00 pm
La función paginación por cierto, es la siguiente:

Código:
<?php

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

     $page = ($page == 0 ? 1 : $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 < 7 + ($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 > 5 + ($adjacents * 2))
     {
     if($page < 1 + ($adjacents * 2))
     {
     for ($counter = 1; $counter < 4 + ($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 - (2 + ($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