伪静态后,PHP分页不进行跳转。

七网科技 发布于 2014/10/07 09:59
阅读 368
收藏 1
PHP

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

@CrazyHarry 你好,想跟您请教个问题:伪静态后,其他页面访问正常,但是PAGE分页出现了问题,伪静态后,格式变换了,分页不能进行跳转。

然后我将$urls=$parse['path']."?";修改为$urls=$parse['path']."/&";翻页正常,但是出现了

这样的问题

大神求帮助。熬夜到现在都没解决!没办法鸟!

代码如下:

<?php
/**
 * page.class.php 分页类
 *
 * @copyright  (C) 2005-2010 战线
 * @license  V3.1.2
 * @lastmodify 2014-05-21
 */


class  page {


private $total; //总条数
private $num; //显示条数
private $url; //没有&page的URL
private $limit; //限制显示条数
private $page; //当前页数
private $pagetotal; //一共多少页数 
private $pageurl; //外部定义分页url


public function config($total,$num,$page,$pageurl=''){ 
$this->total=$total; 
$this->num=$num;
$this->pageurl=$pageurl; 
$this->pagetotal=ceil($this->total/$this->num);
$this->page=$this->get_url_page($page);
$this->url=$this->geturl();
$this->limit=$this->setlimit();


//主入口
public  function show($style='',$ret=''){
$style=strtolower(trim($style)); 
switch($style){ 
case "one" : //普通的样式 
return $this->ordinary($ret); 
break; 
case "two" :
return $this->pagelist($ret);
break; 
default: 
return $this->pagelist($ret);
break; 

}


// 普通的样式
private function ordinary($ret){
$Prev=$this->page-1;
$next=$this->page+1;
$html_l="<ul id='Page_Ul'>";
$html=''; 
if($Prev!=0){
$html.="<li id='Page_Prev'><a href=\"{$this->url[0]}{$Prev}{$this->url[1]}\">上一页</a></li>"; 
}else{
$html.="<li id='Page_Prev'><a href=\"javascript:void(0);\">上一页</a></li>"; 

if($next<=$this->pagetotal){
$html.="<li id='Page_Next'><a href=\"{$this->url[0]}{$next}{$this->url[1]}\">下一页</a></li>";
}else{
$html.="<li id='Page_Next'><a href=\"javascript:void(0);\">下一页</a></li>"; 
}
$html.="<li id='Page_One'><a href=\"{$this->url[0]}1{$this->url[1]}\">首页</a></li>"; 
$html.="<li id='Page_End'><a href=\"{$this->url[0]}{$this->pagetotal}{$this->url[1]}\">尾页</a></li>"; 
$html_r="</ul>";
if($this->total==0){
return;
}else{
if($ret=='li'){
return $html;
}else{
return $html_l.$html.$html_r;
}
}
}

// 默认的样式-列表样式
private function pagelist($ret){ 

$listnum=floor(7/2); 
$html_l="<ul id='Page_Ul'>";
$html='';
$html.="<li id='Page_Total'>{$this->total}条";
$html.="<li id='Page_One'><a href=\"{$this->url[0]}1{$this->url[1]}\">首页</a></li>";
if($this->page==1){
$html.="<li id='Page_Prev'><a href=\"{$this->url[0]}".($this->page).$this->url[1]."\">上一页</a></li>";
}else{
$html.="<li id='Page_Prev'><a href=\"{$this->url[0]}".($this->page-1).$this->url[1]."\">上一页</a></li>";
}
for($i=$listnum;$i>=1;$i--){
$page=$this->page-$i;

if($page<1){
continue; 
}else{
$html.="<li class='Page_Num'><a href=\"{$this->url[0]}{$page}{$this->url[1]}\">{$page}</a></li>";
}

}

$html.="<li class='Page_This'>{$this->page}</li>";

for($i=1;$i<=$listnum;$i++){

$page=$this->page+$i;
if($page<=$this->pagetotal){
$html.="<li class='Page_Num'><a href=\"{$this->url[0]}{$page}{$this->url[1]}\">{$page}</a></li>";
}else{
continue; 
}
}
if($this->page==$this->pagetotal){
$html.="<li id='Page_Next'><a href=\"{$this->url[0]}".($this->page).$this->url[1]."\">下一页</a></li>";
}else{
$html.="<li id='Page_Next'><a href=\"{$this->url[0]}".($this->page+1).$this->url[1]."\">下一页</a></li>";

$html.="<li id='Page_End'><a href=\"{$this->url[0]}{$this->pagetotal}{$this->url[1]}\">尾页</a></li>";
$html_r="</ul>";

if($this->total==0){
return;
}else{
if($ret=='li'){
return $html;
}else{
return $html_l.$html.$html_r;
}
}

}


//获取URL
private function geturl(){ 
$url=array(0=>'',1=>''); 
$urls=get_web_url();
global $_cfg;
$urls = WEB_PATH.'/'.$_cfg['param_arr']['url'];
//$urls = str_ireplace("/index.php/","/",$urls);

$urls=trim($urls,'/');
$parse=parse_url($urls);
if(isset($parse['query'])){ 
parse_str($parse['query'],$parses); 
unset($parses['p']); 
if(empty($parses)){
$urls=$parse['path']."?";
}else{ 
$urls=$parse['path']."?".http_build_query($parses).'&'; 
$urls = str_ireplace("%2f",'/',$urls);
$urls = str_ireplace("=&",'/&',$urls);

}else{
$urls=$parse['path']."?";

$urls  =   preg_replace("#\/\/#","/",$urls);
$url[0]=$urls.'p='; 
return $url;
}


private function get_url_page($page=1){
/*
global $_cfg; 
$param = end($_cfg['param_arr']);
if(empty($param)){ 
$_cfg['param_arr']['url']=$_cfg['param_arr']['url'].'/p1q';
$page = 1;
}else{
preg_match_all("/p(.*)q/i", $param,$matches,PREG_SET_ORDER);
if(isset($matches[0][1])){
$page = abs(intval($matches[0][1])); 
}else{ 
$_cfg['param_arr']['url']=$_cfg['param_arr']['url'].'/p1q';
$page = 1;

}
*/
$page = abs(intval($page));
if(!$page)$page=1;
if($page>$this->pagetotal){
$page=$this->pagetotal;

return $page;

}

private function get_this_url(){
global $_cfg; 
$urls = WEB_PATH.'/'.$_cfg['param_arr']['url'];
$urls = explode('/',$urls); 
array_pop($urls); 
$urls = implode('/',$urls);
return array($urls.'/p',"q");
}

//设置LIMIT
private function setlimit(){
return "LIMIT ".($this->page-1)*$this->num.",".$this->num;
}


//使外部能访问limit
public function __get($value){
return $this->$value; 
}


}

我将红色标注的代码修改为

$urls=$parse['path']."/&";

翻页正常

但是又出现以下问题:

加载中
0
buglife
buglife
该评论暂时无法显示,详情咨询 QQ 群:点此入群
七网科技
七网科技
对,我也发现了,但是我不知道从哪里下手了。汗死了。我查了一晚上。到现在都木有解决。直接要爆表了。
0
七网科技
七网科技
@crazyharry 有没有什么方法能解决呢!我已经是穷兵黩武了~~郁闷纠结~不知道咋下手!
buglife
buglife
这个好办啊,定义个全局变量把前面公用部分路径赋值给变量,后面在每块在把后面的在href里给+上去
0
欣儿
欣儿

把前面的地址也加上吧,

换成像这样的

http://www.oschina.net/question/1859481_159170?sort=default&p=2#answers

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部