【问题标题】:Pagination not working after page 1?第 1 页后分页不起作用?
【发布时间】:2014-09-28 06:44:36
【问题描述】:

好的,我现在已经完成了分页,当它使用它时,它完美地显示了数据,但是当点击第 2 页查看接下来的 5 个结果时,它显示为空白,并且 url 也在改变,即 第一次搜索时,检索到的结果页面的 url 是

http://myurl.com/search.php?find=sa&catname=All+Business+Type

当点击第 2 页时,它显示为空白的 url

http://myurl.com/search.php?page=2

我能做些什么来解决它?

 $find = $_GET['find'];
 $find = strtoupper($find); 
 $find = strip_tags($find); 
$find = trim ($find); 
$allcatmain=$_GET['catname'];


 //Now we search for our search term, in the field the user specified 

$page = (int)(!isset($_GET["page"]) ? 1 : $_GET["page"]);
if ($page <= 0) $page = 1;

$per_page = 5; // Set how many records do you want to display per page.

$startpoint = ($page * $per_page) - $per_page;

 $statement = "information 
    WHERE (title LIKE '%".$find."%' AND catname IN $allcat) OR (address LIKE '%".$find."%' AND        catname IN $allcat) ORDER BY id DESC"; 


  $results ="SELECT * FROM ".$statement." LIMIT ".$startpoint.",".$per_page."";
  $data=mysql_query($results);


   //And we display the results 
    while($result = mysql_fetch_array( $data )) 
            { 
    $link=$result['web']; 
   echo $result['title'];
   echo $result['address']; 

   }
    // displaying paginaiton.
   echo pagination($statement,$per_page,$page);

分页功能

         function pagination($query,$per_page=10,$page=1,$url='?'){  

$query = "SELECT COUNT(*) as `num` FROM {$query}";
$row = mysql_fetch_array(mysql_query($query));
$total = $row['num'];
$adjacents = "2";

$prevlabel = "&lsaquo; Prev";
$nextlabel = "Next &rsaquo;";

$page = ($page == 0 ? 1 : $page); 
$start = ($page - 1) * $per_page;                              

$prev = $page - 1;                         
$next = $page + 1;

$lastpage = ceil($total/$per_page);

$lpm1 = $lastpage - 1; // //last page minus 1

$pagination = "";
if($lastpage > 1){  
    $pagination .= "<ul class='pagination'>";


        if ($page > 1) $pagination.= "<li><a href='{$url}page={$prev}'>{$prevlabel}</a></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}'>{$nextlabel}</a></li>";

    $pagination.= "</ul>";       
}

return $pagination;
   }
   ?>

【问题讨论】:

  • 显示分页功能。
  • 已添加功能,见编辑

标签: php mysql function object pagination


【解决方案1】:

您需要将现有查询字符串(部分)传递给 $url:

$url = '?';
foreach ($_GET as $key => $value) {
    if ($key != 'page') {
        $url .= $key . '=' . $value . '&';
    }
}
// displaying paginaiton.
echo pagination($statement,$per_page,$page, $url);

【讨论】:

    猜你喜欢
    • 2014-02-16
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 2022-07-25
    • 2014-04-05
    • 2020-11-18
    • 2017-11-17
    • 1970-01-01
    相关资源
    最近更新 更多