probleem met pagination en search engine.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Daniyal hussain

daniyal hussain

23/07/2012 18:32:53
Quote Anchor link
Hallo,
Ik ben al heel lang bezig met mij search engine met pagination.
maar ik heb 1 probleem. De probleem is als ik op de volgende pagina klik dat er dan alle mysql data laat zien. bijv als ik voor een topic als pagination zoek dan komt de eerste pagina goed met alle pagination resultaten maar als ik de volgende pagina klik dan laat hij alle resultaten uit de database zien en de pagination veranderdt in plaats van 3 paginas met resultaten naar 20 paginas resultaten.

Dit is de pagination code met query

Quote:
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
<?php
mysql_connect ("localhost", "root", "");
mysql_select_db("results");
    
    $k = ($_GET['k']);
    $tableName="search";        
    $targetpage = "search.php";     
    $limit = 1;
    $terms = explode (" ", $k);
    $searchquery = "WHERE `keywords` LIKE '%$k%'";
     $query = "SELECT COUNT(*) as num FROM search WHERE";

foreach ($terms as $each){

        @
$i++;
    if ($i == 1)
        $query .= "`keywords` LIKE '%$each%' ";
    else
        $query .= "OR `keywords` LIKE '%$each%' ";
}



    $total_pages = <a class="inlineAdmedialink" href="#">mysql</a>_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 * FROM search $searchquery 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?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?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?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?page=1'>1</a>";
                $paginate.= "<a href='$targetpage?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?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?page=$counter'>$counter</a>";}                    
                }
            }
        }

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

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

 echo "<p><<a class="inlineAdmedialink" href="#">font</a> color='#62472C'>$total_pages Result(s)</font> </p>";
 // pagination

 echo $paginate;
  
    
        


?>


Alvast bedankt.
Gewijzigd op 23/07/2012 18:35:03 door Daniyal hussain
 
PHP hulp

PHP hulp

15/11/2024 03:48:00
 
Obelix Idefix

Obelix Idefix

23/07/2012 19:56:49
Quote Anchor link
Geen backticks ` in je query.
Variabelen buiten quotes (ook in query)
Bouw foutafhandeling in.
Zet error-reporting aan.
Geen * maar benoemm het veld/de velden die je wilt opvragen.
Regel 134 moet je volgens mij problemen gaan geven.
Ga debuggen: als je naar 2e pagina gaat, staat dan de juiste info in de url?
Wordt op de juiste plek de juiste info uit de url overgenomen? Wordt de query vervolgens juist opgebouwd?
Zijn allemaal dingen die je zelf kunt testen/proberen om tot een oplossing te komen.
 
Daniyal hussain

daniyal hussain

23/07/2012 20:16:13
Quote Anchor link
Die * moet meerdere rows laten zien dat is geen probleem
 
Kris Peeters

Kris Peeters

24/07/2012 10:24:24
Quote Anchor link
Het draait uiteindelijk hier om, he

Dit haalt de nodige posts.
$query1 = "SELECT * FROM search $searchquery LIMIT $start, $limit";

$limit is 1. Dit vind ik vreemd
Gewijzigd op 24/07/2012 10:26:48 door Kris Peeters
 



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.