首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php分页编号页面链接

php分页编号页面链接
EN

Stack Overflow用户
提问于 2009-06-30 16:23:39
回答 3查看 6.7K关注 0票数 2

这是一个用于导航的分页代码,你知道如何让这段代码简单地将页面的编号列表显示为链接吗?

代码语言:javascript
复制
if (isset($_GET['pageno'])) {
   $pageno = $_GET['pageno'];
} 
else {
   $pageno = 1;
}
if(isset($_GET['niche']))
{


$query = "SELECT count(*) FROM studies WHERE niche = '{$_GET['niche']}'";
$result = mysql_query($query, $connection) or trigger_error("SQL", E_USER_ERROR);
}


$query_data = mysql_fetch_row($result);
$numrows = $query_data[0];
$rows_per_page = 4;
$lastpage      = ceil($numrows/$rows_per_page);
$pageno = (int)$pageno;
if ($pageno > $lastpage) {
   $pageno = $lastpage;
}
if ($pageno < 1) {
   $pageno = 1;
} // if
$limit = 'LIMIT ' .($pageno - 1) * $rows_per_page .',' .$rows_per_page;
$query = "SELECT * FROM studies WHERE niche = '{$_GET['niche']}' $limit";
$result = mysql_query($query, $connection) or trigger_error("SQL", E_USER_ERROR);

还有..。

代码语言:javascript
复制
if ($pageno == 1) {
   echo "<div class='container'>FIRST PREV ";
} else {
   echo "<div class='container'> <a href='{$_SERVER['PHP_SELF']}?pageno=1&niche={$_GET['niche']}'>FIRST</a> ";
   $prevpage = $pageno-1;
   echo " <a href='{$_SERVER['PHP_SELF']}?pageno=$prevpage&niche={$_GET['niche']}'>PREV</a> ";
} // if
echo " ( Page $pageno of $lastpage ) ";
if ($pageno == $lastpage) {
   echo " NEXT LAST</div><br />";
} else {
   $nextpage = $pageno+1;
   echo " <a href='{$_SERVER['PHP_SELF']}?pageno=$nextpage&niche={$_GET['niche']}'>NEXT</a> ";
   echo " <a href='{$_SERVER['PHP_SELF']}?pageno=$lastpage&niche={$_GET['niche']}'>LAST</a></div><br /> ";
} // if
?>
EN

回答 3

Stack Overflow用户

发布于 2009-06-30 16:32:17

试试这个:

代码语言:javascript
复制
$totalpages = ceil($numrows / $rows_per_page);

if($totalpages >= 1){ $pagelinkcount = 1; } else { $pagelinkcount = 0; }

while($pagelinkcount <= $totalpages && $totalpages > 1) {

     echo "<a href=\"/page/{$pagelinkcount}\">{$pagelinkcount}</a>&nbsp;";

     $pagelinkcount++;

}

另外,正如Ian Elliot在您的问题的注释中指出的那样,在SQL查询中使用$_GET会使您的数据库非常脆弱,因此被认为是一种极不安全的编码实践。您应该在将所需的$_GET数据传递给DB之前对其进行转义和解析。

票数 3
EN

Stack Overflow用户

发布于 2009-06-30 16:37:41

这是一个我已经使用了一段时间的分页函数。如果只有一页,它不返回任何内容,返回最多15页的数字,然后添加一个下拉列表,当页面超过15页时,可以跳到任何第10页。它依赖于一些prev/next图像,但您可以很容易地将其去掉。

代码语言:javascript
复制
function paginate( $items_per_page, $number_of_results ) {

    if( isset( $_REQUEST['page'] ) ) {
        $page = $_REQUEST['page'];
    } else {
        $page = 1;
    }

    $url = htmlentities( preg_replace( '/(\?|&)page=[\d]+/', '', $_SERVER['REQUEST_URI'] ).'&' );

    $html = '';
    $numbers_html = '';
    $navigation_html = '';
    if( $number_of_results > $items_per_page ) {
        $html .= '<div class="pagination">';
        if( $page == 1 or $page == '1' ) {
            $numbers_html .= '<img src="images/prev.png" alt="&larr; prev" class="inactive" /> - ';
        } else {
            $numbers_html .= '<a href="'.$url.'/page'.($page-1).'"><img src="images/prev.png" alt="&larr; prev" /></a> - ';
        }
        $count = 0;
        $total_pages = ceil( $number_of_results / $items_per_page )-1;
        while( $count <= $total_pages ) {
            $count++;
            if( $total_pages > 12 and floor($count / 10) != floor($page / 10) ) {
                while( $count < $total_pages and floor($count / 10) != floor($page / 10) ) {
                    if( $count == 1 ) {
                        $endpage = 9;
                    } elseif( $count + 9 < $total_pages ) {
                        $endpage = $count + 9;
                    } else {
                        $endpage = $total_pages + 1;
                    }
                    $ten_group = floor( $count / 10 );
                    if( $ten_group == 0 ) {
                        $navigation_html .= '<option value="'.$url.'page='.$count.'">page 1</option>';
                    } else {
                        $navigation_html .= '<option value="'.$url.'page='.$count.'">page '.($ten_group*10).'</option>';
                    }
                    $count += 10;
                }
                $count -= 2;
            } else {
                if( $page == $count ) {
                    $numbers_html .= '<span class="current">'.$count.'</span>';
                    if( $count == 1 ) {
                        $endpage = 9;
                    } elseif( $count + 9 < $total_pages ) {
                        $endpage = $count + 9;
                    } else {
                        $endpage = $total_pages + 1;
                    }
                    if( $total_pages > 15 ) {
                        $ten_group = floor( $count / 10 );
                        if( $ten_group == 0 ) {
                            $navigation_html .= '<option value="'.$url.'page='.$count.'" selected="selected">page 1</option>';
                        } else {
                            $navigation_html .= '<option value="'.$url.'page='.$count.'" selected="selected">page '.($ten_group*10).'</option>';
                        }
                    }
                } else {
                    $numbers_html .= '<a href="'.$url.'/page'.$count.'">'.$count.'</a>';
                }
                if( ( $total_pages > 12 and $count % 10 == 9 ) or $count == $total_pages+1 ) {
                } else {
                    $numbers_html .= ' - ';
                }
            }
        }
        if( $page != $count ) {
            $numbers_html .= ' - <a href="'.$url.'/page'.($page+1).'"><img src="images/next.png" alt="next &rarr;" /></a>';
        } else {    
            $numbers_html .= ' - <img src="images/next.png" alt="next &rarr;" class="inactive"/>';
        }
        $count++;
        $html .= '<div class="pagination_numbers">'.$numbers_html.'</div>';
        if( $navigation_html ) {
            $html .= '<div class="pagination_navigation">skip to: <select onchange="window.location=this.value">'.$navigation_html.'</select> of '.($total_pages+1).'</div>';
        }
        $html .= '</div>';
    }
    return $html;
}
票数 1
EN

Stack Overflow用户

发布于 2013-01-07 20:41:05

如果你有很多页面要显示,你可能想要考虑“对数”页面导航,正如我在这里的回答中所描述的那样:

How to do page navigation for many, many pages? Logarithmic page navigation

(示例PHP代码只处理分页显示,而不处理DB查询)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1064662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档