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

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

@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

<a href=\"{$this->url[0]}".($this->page).$this->url[1]."\">上一页</a>

你们PHP这种写法,我也不大明白。但是我觉得应该是你这块获取到的路径是一个相对路径也就是最前面没“/”

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

把前面的地址也加上吧,

换成像这样的

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

返回顶部
顶部