PHP分页问题
我对一个项目的PHP分页有问题 它几乎可以工作,但似乎无法正确显示数字 我只想在所选页面之后再显示6个页码,在所选页面之前再显示一个页码; (如果您在第1页上,请在之后显示7) 例如: 如果在第1页:1/2/3/4/5/6/7/8 如果在第2页:1/2/3/4/5/6/7/8 如果在第5页:4/5/6/7/8/9/10/11 如果在第10页:9/10/11/12/13/14/15/16 这是我目前的代码…PHP分页问题,php,Php,我对一个项目的PHP分页有问题 它几乎可以工作,但似乎无法正确显示数字 我只想在所选页面之后再显示6个页码,在所选页面之前再显示一个页码; (如果您在第1页上,请在之后显示7) 例如: 如果在第1页:1/2/3/4/5/6/7/8 如果在第2页:1/2/3/4/5/6/7/8 如果在第5页:4/5/6/7/8/9/10/11 如果在第10页:9/10/11/12/13/14/15/16 这是我目前的代码… if($page == ceil($NumOfPages) && $pag
if($page == ceil($NumOfPages) && $page != 1){
for($i = 1; $i <= ceil($NumOfPages)-1; $i++){
if($i > 0){
echo "<a href=\"/{$i}\">{$i}</a>";
}
}
}
if ($page == ceil($NumOfPages) ) {
$startPage = $page;
}else{
$startPage = 1;
}
for ($i = $startPage; $i <= $page+6; $i++){
if ($i <= ceil($NumOfPages)){
if($i == $page) {
echo "<a href='/page/$i/' title='View movies page $i' id='pagelisel'>$i</a> ";
}else{
echo "<a href='/page/$i/' title='View movies page $i' id='pageli'>$i</a> ";
}
}
}
if($page==ceil($numopages)&&$page!=1){
对于($i=1;$i 0){
回声“;
}
}
}
如果($page==ceil($NumOfPages)){
$startPage=$page;
}否则{
$startPage=1;
}
对于($i=$startPage;$i我假设(部分是为了我自己…;):
$page
是所选页面
$startPage
是要显示的第一个页码
$numPages
已经ceil
-ed
首先,您需要找到$startPage
。取决于$page
是否为第一个(即值为1,另一个假设)。您的支票有点不符,因为它会检查支票是否与最后一页相等
if($page == 1) {
$startPage = 1;
} else {
$startPage = $page - 1;
}
然后,您需要找出要打印的最后一个页码($lastPage
)。因此,检查$startPage
是否接近末尾,并相应地设置~$lastPage`:
if($startPage + 7 > $numPages) {
$endPage = $numPages;
} else {
$endPage = $startPage + 7;
}
最后,使用您的进行
-循环,这似乎还可以,但可以从$startPage
循环到$endPage
以下是一种也适用于您的替代方法:
$pageCurrent = $page;
$pagePrevious = $pageCurrent-1;
$pageClass = '';
$pageStart = 1;
$pageEnd = $pageCurrent+6;
$pageMax = ceil($NumOfPages);
if($pageCurrent==1){
echo "<a href=\"/page/1\" class=\"selected\">1</a>";
}else{
echo "<a href=\"/page/$pagePrevious\">$pagePrevious</a>";
}
for($i = $pageStart; $i <= $pageEnd; $i++){
if($i <= $pageEnd){
if($i == 1 && $pageCurrent != 1){
$pageClass = 'selected';
}else{
$pageClass = '';
}
echo "<a href=\"/page/$i\" title=\"View movies page $i\" class=\"$pageClass\">$i</a>";
}
}
$pageCurrent=$page;
$pagePrevious=$pageCurrent-1;
$pageClass='';
$pageStart=1;
$pageEnd=$pageCurrent+6;
$pageMax=ceil($numopages);
如果($pageCurrent==1){
回声“;
}否则{
回声“;
}
对于($i=$pageStart;$i为什么你在$numopages上调用'ceil',它不应该总是一个整数吗?(我还在读你的代码,只是想问一下)@TigerTrussell:可能是因为像$numopages=$posts/$posterpage
这样的东西,你是个天才:)总是一个字符把整个事情搞砸了,我可以从这里开始。谢谢维格!我误解了你的代码,我的解释不正确。我会更新我的答案…;)在您的for
-循环中,选择一个数字后,也会选择以下所有数字。