PHP - Problema de paginacion php mysql

   
Vista:

Problema de paginacion php mysql

Publicado por johndi9 (1 intervención) el 12/04/2012 20:06:13
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:

1
2
3
4
5
<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:


1
$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 es que deberia hacer una session de las variables del formulario, pero no estoy seguro que como podría realizarlo...

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?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:

1
SELECT COUNT(*) as `num` FROM `inventario2` WHERE blablabla


Muchas gracias de antemano!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder