pagination van database laat alles zien als pagina nummers

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Erik m

erik m

05/03/2016 03:24:52
Quote Anchor link
ik heb een pagination pagina die wel weer geeft wat die moet weergeven, maar de pagina nummers geeft die van de helepagina weer.

http://cokecollection.web44.net/test2.php?q=glazen

er is data voor de category van 8 pagina's daarna zijn ze leeg de script telt voor alle data wat in het database zit.
hoe kan ik het zo maken dat hij alleen de data telt wat die moet weergeven en niet de hele database?

hier is de script.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
<?php
    $dbhost
                        = "//";
$dbuser                            = "///";
$dbpass                            = "////";
$dbname                            = "////";

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ("Error connecting to database");
mysql_select_db($dbname);
 
  $targetpage = "test2.php";     
    
  $var = @$_GET['q'] ;
  $trimmed = trim($var); //trim whitespace from the stored variable


    $limit = 15;
    
    if ($trimmed == "")
  {

  echo "<p>Please enter a search...</p>";
  exit;
  }


// check for a search parameter
if (!isset($var))
  {

  echo "<p>We dont seem to have a search parameter!</p>";
  exit;
  }



$query = "SELECT COUNT(*) as num FROM cocacola";

    
// next determine if s has been passed to script, if not use 0
  if (empty($s)) {
  $s=0;
  }

    $total_pages = mysql_fetch_array(mysql_query($query));
    $total_pages = $total_pages[num];
    
    $stages = 3;
    $page = mysql_escape_string($_GET['page']);
    if($page){
        $start = ($page - 1) * $limit;
    }
else{
        $start = 0;    
        }
    
    
    // Get page data
    $query1 = "SELECT foto, cat, subcat, id, NULL AS number, 'cocacola' AS Type
# Suppose that the 'Number' column does not exist in this table
FROM   cocacola
WHERE  cat LIKE '%$trimmed%'
OR     subcat  LIKE '%$trimmed%'
order by id LIMIT $start, $limit "
;
$result = mysql_query($query1);
    
    // Initial page num setup
    if ($page == 0){$page = 1;}
    $prev = $page - 1;    
    $next = $page + 1;                            
    $lastpage = ceil($total_pages/$limit);        
    $LastPagem1 = $lastpage - 1;                    
    
    
    $paginate = '';
    if($lastpage > 1)
    {
    
    

    
    
        $paginate .= "<div class='paginate'>";
        // Previous
        if ($page > 1){
            $paginate.= "<a href='$targetpage?q=$trimmed&page=$prev'>previous</a>";
        }
else{
            $paginate.= "<span class='disabled'>previous</span>";    }
            

        
        // Pages    
        if ($lastpage < 7 + ($stages * 2))    // Not enough pages to breaking it up
        {    
            for ($counter = 1; $counter <= $lastpage; $counter++)
            {

                if ($counter == $page){
                    $paginate.= "<span class='current'>$counter</span>";
                }
else{
                    $paginate.= "<a href='$targetpage?q=$trimmed&page=$counter'>$counter</a>";}                    
            }
        }

        elseif($lastpage > 5 + ($stages * 2))    // Enough pages to hide a few?
        {
            // Beginning only hide later pages
            if($page < 1 + ($stages * 2))        
            {

                for ($counter = 1; $counter < 4 + ($stages * 2); $counter++)
                {

                    if ($counter == $page){
                        $paginate.= "<span class='current'>$counter</span>";
                    }
else{
                        $paginate.= "<a href='$targetpage?q=$trimmed&page=$counter'>$counter</a>";}                    
                }

                $paginate.= "...";
                $paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
                $paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";        
            }

            // Middle hide some front and some back
            elseif($lastpage - ($stages * 2) > $page && $page > ($stages * 2))
            {

                $paginate.= "<a href='$targetpage?q=$trimmed&page=1'>1</a>";
                $paginate.= "<a href='$targetpage?q=$trimmed&page=2'>2</a>";
                $paginate.= "...";
                for ($counter = $page - $stages; $counter <= $page + $stages; $counter++)
                {

                    if ($counter == $page){
                        $paginate.= "<span class='current'>$counter</span>";
                    }
else{
                        $paginate.= "<a href='$targetpage?q=$trimmed&page=$counter'>$counter</a>";}                    
                }

                $paginate.= "...";
                $paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1</a>";
                $paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";        
            }

            // End only hide early pages
            else
            {
                $paginate.= "<a href='$targetpage?page=1'>1</a>";
                $paginate.= "<a href='$targetpage?page=2'>2</a>";
                $paginate.= "...";
                for ($counter = $lastpage - (2 + ($stages * 2)); $counter <= $lastpage; $counter++)
                {

                    if ($counter == $page){
                        $paginate.= "<span class='current'>$counter</span>";
                    }
else{
                        $paginate.= "<a href='$targetpage?q=$trimmed&page=$counter'>$counter</a>";}                    
                }
            }
        }

                    
                // Next
        if ($page < $counter - 1){
            $paginate.= "<a href='$targetpage?q=$trimmed&page=$next'>next</a>";
        }
else{
            $paginate.= "<span class='disabled'>next</span>";
            }

            
        $paginate.= "</div>";        
    
    
}

 // pagination
 echo $paginate;
?>


<ul>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
 

         while ($row= mysql_fetch_array($result)) {
  $url = $row["foto"];
   $link = $row["id"];
  
  echo "<a href='page.php?id=$link'><img src=\"$url\" width='200' height='200'></a>" ;
  $count++ ;
  }

    
    ?>
 
PHP hulp

PHP hulp

16/11/2024 05:01:11
 
Thomas van den Heuvel

Thomas van den Heuvel

05/03/2016 14:43:48
Quote Anchor link
$lastpage is het resultaat van ceil($total_pages/$limit).

$total_pages is het resultaat van je COUNT(*) query die alles telt.

Op Regel 40 missen quotes om 'num' trouwens.

Als je $lastpage nu eens baseert op mysql_num_rows() van $result (regel 57)?

Ik heb verder je code niet uitgebreid bestudeert maar het lijkt erop dat je je navigatie baseert op je COUNT(*) query. Ook vind ik het een beetje vreemd dat je dit zelf niet terug kunt zien? Je bent toch zelf de auteur van deze code? :)

Ik zou je ook aanraden over te stappen naar mysqli of PDO, en ook om bovenstaande code wat te fatsoeneren. Ik denk dat deze korter en (stukken) overzichtelijker kan.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.