当前位置:Gxlcms > PHP教程 > PHP分页问题,求大神指导

PHP分页问题,求大神指导

时间:2021-07-01 10:21:17 帮助过:2人阅读

     '1','key'=>$key,'pageIndex'=>$page,'pageSize'=>$page_size);//传参$ret = $client->NewsSearch($param);//执行获取新闻的方法//print_r ($ret);if(isset($ret)&&$ret){ foreach($ret->NewsSearchResult->InheritanceNews as $item) 	{   		echo "\n\n";		echo "\n";		echo "";	}}	else	{		echo 'no user';	}	//总页数		$totalPage = ceil(($item->NewsCount)/$page_size);		//上一页链接		$Prev = $page - 1;		if ($Prev < 1)		{			$Prev = 1;		}		//下一页链接		$Next = $page + 1;		if ($Next > $totalPage)		{			$Next = $totalPage;		}		//输出上一页链接		if ($page <> 1)		{			echo 'First ';			echo 'Prev';		}		else		{			echo 'First';			echo 'Prev';		}		//页码数字链接		//显示的数字个数		$pageNumber = 5;		//页码数算法		$pagebegin = $page - $pageNumber;		if ($page == 1)		{			$pageend = $pageNumber;		}		else		{			$pageend = $page + $pageNumber;		}		if ($pagebegin <= 0)		{			$pagebegin = 1;		}		if ($pageend > $totalPage)		{			$pageend = $totalPage;		}		//一次向前翻$pageNumber行		if ($page > $pageNumber)		{			echo '<<';		}		//输出动态生成的页码链接		for ($i = $pagebegin; $i <= $pageend; $i++)		{			if ($i == $page)			{				echo '' . $i . '';			}			else			{				echo '' . $i . '';			}		}		//一次向后翻$pageNumber行		if (($totalPage - $page) > 5)		{			echo '>>';		}		//输出下一页链接		if ($page <> $totalPage)		{			echo 'Next';			echo 'Last';		}		else		{			echo 'Next';			echo 'Last';		}	?>
代码如上:
初始查询结果如下:

问题1:分页显示的为啥在最后一条数据的上面呢?
问题2:点击下一页的时候 ,搜索条件没了?

问题3: 点击最后一页的时候报错了。


Ps:本人PHP初学者,搞得有点头大了~ 求大神们帮忙看下,万分感谢


回复讨论(解决方案)

有没有人啊

foreach循环最后少加上了一个

$item->Title

网上有分页的类,下一个看看

foreach循环最后少加上了一个吧
是的,这里确实少了一个,感谢哈

网上有分页的类,下一个看看
初学者,你不知道啊,太复杂的看起来打都看不懂。


还有人吗?剩下的2个问题都是头大问题

if($key==""){  echo "请输入搜索条件";    return;   $_SESSION['key'] = $key;//这里把KEY保存到session}

输入关键字:

if($key==""){  echo "请输入搜索条件";    return;   $_SESSION['key'] = $key;//这里把KEY保存到session}

输入关键字:


大清早,迷糊写错了。。


if($key==""){  echo "请输入搜索条件";    return;   $_SESSION['key'] = $key;//这里把KEY保存到session}

输入关键字:


大清早,迷糊写错了。。

iput报错了~Value这里绑定报错啦


if($key==""){  echo "请输入搜索条件";    return;   $_SESSION['key'] = $key;//这里把KEY保存到session}

输入关键字:


大清早,迷糊写错了。。


 

果然还是迷糊了。应该写在else里面,如果$key不为空再写进session。

加上引号
我再看看第三个

首先,这里你得明白一个原理:url带参数过来的是GET提交的,需要用$_GET接收数据

还有,分页的时候链接需要把所有参数传递过去,比如你这里的就应该把key这个参数传递过去,即形式如:
a.php?key=$key&page=2 这样的格式
最后一点:$key = $_POST["key"]; 要改成$key = ($_POST["key"]=='')? $_GET["key"]:$_POST["key"];
最后用下面这个放在你的input里

果然还是迷糊了。应该写在else里面,如果$key不为空再写进session。

加上引号
我再看看第三个
加上引号还是有错哦。

首先,这里你得明白一个原理:url带参数过来的是GET提交的,需要用$_GET接收数据

还有,分页的时候链接需要把所有参数传递过去,比如你这里的就应该把key这个参数传递过去,即形式如:
a.php?key=$key&page=2 这样的格式
最后一点:$key = $_POST["key"]; 要改成$key = ($_POST["key"]=='')? $_GET["key"]:$_POST["key"];
最后用下面这个放在你的input里

还是input标签这里报错了~

     '1','key'=>$key,'pageIndex'=>$page,'pageSize'=>$page_size);//传参$ret = $client->NewsSearch($param);//执行获取新闻的方法//print_r ($ret);if(isset($ret)&&$ret){ foreach($ret->NewsSearchResult->InheritanceNews as $item) 	{   		echo "\n\n";		echo "\n";		echo "";		echo "
$item->Title
"; }} else { echo 'no user'; } //总页数 $totalPage = ceil(($item->NewsCount)/$page_size); //上一页链接 $Prev = $page - 1; if ($Prev < 1) { $Prev = 1; } //下一页链接 $Next = $page + 1; if ($Next > $totalPage) { $Next = $totalPage; } //
输出上一页链接 if ($page <> 1) { echo 'First '; echo 'Prev'; } else { echo 'First'; echo 'Prev'; } //页码数字链接 //显示的数字个数 $pageNumber = 5; //页码数算法 $pagebegin = $page - $pageNumber; if ($page == 1) { $pageend = $pageNumber; } else { $pageend = $page + $pageNumber; } if ($pagebegin <= 0) { $pagebegin = 1; } if ($pageend > $totalPage) { $pageend = $totalPage; } //一次向前翻$pageNumber行 if ($page > $pageNumber) { echo '<<'; } //
输出动态生成的页码链接 for ($i = $pagebegin; $i <= $pageend; $i++) { if ($i == $page) { echo '' . $i . ''; } else { echo '' . $i . ''; } } //一次向后翻$pageNumber行 if (($totalPage - $page) > 5) { echo '>>'; } //输出下一页链接 if ($page <> $totalPage) { echo 'Next'; echo 'Last'; } else { echo 'Next'; echo 'Last'; } ?>
现在代码这样的

Value不管是这样绑定还是前面那位大神说的_SESSION绑定都有错。
是不是我哪里写错了呢

     '1','key'=>$key,'pageIndex'=>$page,'pageSize'=>$page_size);//传参$ret = $client->NewsSearch($param);//执行获取新闻的方法//print_r ($ret);if(isset($ret)&&$ret){ foreach($ret->NewsSearchResult->InheritanceNews as $item) 	{   		echo "\n\n";		echo "\n";		echo "";		echo "
$item->Title
"; }} else { echo 'no user'; } //总页数 $totalPage = ceil(($item->NewsCount)/$page_size); //上一页链接 $Prev = $page - 1; if ($Prev < 1) { $Prev = 1; } //下一页链接 $Next = $page + 1; if ($Next > $totalPage) { $Next = $totalPage; } //
输出上一页链接 if ($page <> 1) { echo 'First '; echo 'Prev'; } else { echo 'First'; echo 'Prev'; } //页码数字链接 //显示的数字个数 $pageNumber = 5; //页码数算法 $pagebegin = $page - $pageNumber; if ($page == 1) { $pageend = $pageNumber; } else { $pageend = $page + $pageNumber; } if ($pagebegin <= 0) { $pagebegin = 1; } if ($pageend > $totalPage) { $pageend = $totalPage; } //一次向前翻$pageNumber行 if ($page > $pageNumber) { echo '<<'; } //输出动态生成的页码链接 for ($i = $pagebegin; $i <= $pageend; $i++) { if ($i == $page) { echo '' . $i . ''; } else { echo '' . $i . ''; } } //一次向后翻$pageNumber行 if (($totalPage - $page) > 5) { echo '>>'; } //输出下一页链接 if ($page <> $totalPage) { echo 'Next'; echo 'Last'; } else { echo 'Next'; echo 'Last'; } ?>
现在代码这样的

Value不管是这样绑定还是前面那位大神说的_SESSION绑定都有错。
是不是我哪里写错了呢

你可能没开短标签支持吧。,


我这里现在运行良好,至于第三个问题。应该不是你的问题
你搜索新闻的时候最后一页会出现错误。。
你把关键词改成 ‘如何’ 试试 看最后一页还会不会报错。
他的信息流好像是有问题


     '1','key'=>$key,'pageIndex'=>$page,'pageSize'=>$page_size);//传参$ret = $client->NewsSearch($param);//执行获取新闻的方法//print_r ($ret);if(isset($ret)&&$ret){ foreach($ret->NewsSearchResult->InheritanceNews as $item) 	{   		echo "\n\n";		echo "\n";		echo "";		echo "
$item->Title
"; }} else { echo 'no user'; } //总页数 $totalPage = ceil(($item->NewsCount)/$page_size); //上一页链接 $Prev = $page - 1; if ($Prev < 1) { $Prev = 1; } //下一页链接 $Next = $page + 1; if ($Next > $totalPage) { $Next = $totalPage; } //
输出上一页链接 if ($page <> 1) { echo 'First '; echo 'Prev'; } else { echo 'First'; echo 'Prev'; } //页码数字链接 //显示的数字个数 $pageNumber = 5; //页码数算法 $pagebegin = $page - $pageNumber; if ($page == 1) { $pageend = $pageNumber; } else { $pageend = $page + $pageNumber; } if ($pagebegin <= 0) { $pagebegin = 1; } if ($pageend > $totalPage) { $pageend = $totalPage; } //一次向前翻$pageNumber行 if ($page > $pageNumber) { echo '<<'; } //输出动态生成的页码链接 for ($i = $pagebegin; $i <= $pageend; $i++) { if ($i == $page) { echo '' . $i . ''; } else { echo '' . $i . ''; } } //一次向后翻$pageNumber行 if (($totalPage - $page) > 5) { echo '>>'; } //输出下一页链接 if ($page <> $totalPage) { echo 'Next'; echo 'Last'; } else { echo 'Next'; echo 'Last'; } ?>
现在代码这样的

Value不管是这样绑定还是前面那位大神说的_SESSION绑定都有错。
是不是我哪里写错了呢

你可能没开短标签支持吧。,


我这里现在运行良好,至于第三个问题。应该不是你的问题
你搜索新闻的时候最后一页会出现错误。。
你把关键词改成 ‘如何’ 试试 看最后一页还会不会报错。
他的信息流好像是有问题
还是不行,短标签支持怎么开?


     '1','key'=>$key,'pageIndex'=>$page,'pageSize'=>$page_size);//传参$ret = $client->NewsSearch($param);//执行获取新闻的方法//print_r ($ret);if(isset($ret)&&$ret){ foreach($ret->NewsSearchResult->InheritanceNews as $item) 	{   		echo "\n\n";		echo "\n";		echo "";		echo "
$item->Title
"; }} else { echo 'no user'; } //总页数 $totalPage = ceil(($item->NewsCount)/$page_size); //上一页链接 $Prev = $page - 1; if ($Prev < 1) { $Prev = 1; } //下一页链接 $Next = $page + 1; if ($Next > $totalPage) { $Next = $totalPage; } //
输出上一页链接 if ($page <> 1) { echo 'First '; echo 'Prev'; } else { echo 'First'; echo 'Prev'; } //页码数字链接 //显示的数字个数 $pageNumber = 5; //页码数算法 $pagebegin = $page - $pageNumber; if ($page == 1) { $pageend = $pageNumber; } else { $pageend = $page + $pageNumber; } if ($pagebegin <= 0) { $pagebegin = 1; } if ($pageend > $totalPage) { $pageend = $totalPage; } //一次向前翻$pageNumber行 if ($page > $pageNumber) { echo '<<'; } //输出动态生成的页码链接 for ($i = $pagebegin; $i <= $pageend; $i++) { if ($i == $page) { echo '' . $i . ''; } else { echo '' . $i . ''; } } //一次向后翻$pageNumber行 if (($totalPage - $page) > 5) { echo '>>'; } //输出下一页链接 if ($page <> $totalPage) { echo 'Next'; echo 'Last'; } else { echo 'Next'; echo 'Last'; } ?>
现在代码这样的

Value不管是这样绑定还是前面那位大神说的_SESSION绑定都有错。
是不是我哪里写错了呢

你可能没开短标签支持吧。,


我这里现在运行良好,至于第三个问题。应该不是你的问题
你搜索新闻的时候最后一页会出现错误。。
你把关键词改成 ‘如何’ 试试 看最后一页还会不会报错。
他的信息流好像是有问题
第三个问题是,如果我输出的是一条数据就会报错,这是为啥呢

     '1','key'=>$key,'pageIndex'=>$page,'pageSize'=>$page_size);//传参$ret = $client->NewsSearch($param);//执行获取新闻的方法//print_r ($ret);if(isset($ret)&&$ret){ foreach($ret->NewsSearchResult->InheritanceNews as $item)     {           echo "\n\n";        echo "\n";        echo ""."
$item->Title
"; }} else { echo 'no user'; } //总页数 $totalPage = ceil(($item->NewsCount)/$page_size); //上一页链接 $Prev = $page - 1; if ($Prev < 1) { $Prev = 1; } //下一页链接 $Next = $page + 1; if ($Next > $totalPage) { $Next = $totalPage; } //
输出上一页链接 if ($page <> 1) { echo 'First '; echo 'Prev'; } else { echo 'First'; echo 'Prev'; } //页码数字链接 //显示的数字个数 $pageNumber = 5; //页码数算法 $pagebegin = $page - $pageNumber; if ($page == 1) { $pageend = $pageNumber; } else { $pageend = $page + $pageNumber; } if ($pagebegin <= 0) { $pagebegin = 1; } if ($pageend > $totalPage) { $pageend = $totalPage; } //一次向前翻$pageNumber行 if ($page > $pageNumber) { echo '<<'; } //输出动态生成的页码链接 for ($i = $pagebegin; $i <= $pageend; $i++) { if ($i == $page) { echo '' . $i . ''; } else { echo '' . $i . ''; } } //一次向后翻$pageNumber行 if (($totalPage - $page) > 5) { echo '>>'; } //输出下一页链接 if ($page <> $totalPage) { echo 'Next'; echo 'Last'; } else { echo 'Next'; echo 'Last'; } ?>

上面这段代码运行良好,在搜索‘新闻’的时候最后一页会出非法字符。
搜索‘如何’没有错误。搜索‘英语’也没错误。

     '1','key'=>$key,'pageIndex'=>$page,'pageSize'=>$page_size);//传参$ret = $client->NewsSearch($param);//执行获取新闻的方法//print_r ($ret);if(isset($ret)&&$ret){ foreach($ret->NewsSearchResult->InheritanceNews as $item)     {           echo "\n\n";        echo "\n";        echo ""."
$item->Title
"; }} else { echo 'no user'; } //总页数 $totalPage = ceil(($item->NewsCount)/$page_size); //上一页链接 $Prev = $page - 1; if ($Prev < 1) { $Prev = 1; } //下一页链接 $Next = $page + 1; if ($Next > $totalPage) { $Next = $totalPage; } //
输出上一页链接 if ($page <> 1) { echo 'First '; echo 'Prev'; } else { echo 'First'; echo 'Prev'; } //页码数字链接 //显示的数字个数 $pageNumber = 5; //页码数算法 $pagebegin = $page - $pageNumber; if ($page == 1) { $pageend = $pageNumber; } else { $pageend = $page + $pageNumber; } if ($pagebegin <= 0) { $pagebegin = 1; } if ($pageend > $totalPage) { $pageend = $totalPage; } //一次向前翻$pageNumber行 if ($page > $pageNumber) { echo '<<'; } //输出动态生成的页码链接 for ($i = $pagebegin; $i <= $pageend; $i++) { if ($i == $page) { echo '' . $i . ''; } else { echo '' . $i . ''; } } //一次向后翻$pageNumber行 if (($totalPage - $page) > 5) { echo '>>'; } //输出下一页链接 if ($page <> $totalPage) { echo 'Next'; echo 'Last'; } else { echo 'Next'; echo 'Last'; } ?>

上面这段代码运行良好,在搜索‘新闻’的时候最后一页会出非法字符。
搜索‘如何’没有错误。搜索‘英语’也没错误。
不知道为什么,就是最后只有一条数据的时候报错,搜索新闻第三页只有一条数据了就报错了,其他都没错
那个传值的没问题了。感谢你哈

你搜索‘田径运动会’,看是不是还出那个错误。如果出,就用我下面的代码
在foreach加了个if语句来判断结果。

     '1','key'=>$key,'pageIndex'=>$page,'pageSize'=>$page_size);//传参$ret = $client->NewsSearch($param);//执行获取新闻的方法//print_r ($ret);if(isset($ret)&&$ret){    if (is_array($ret->NewsSearchResult->InheritanceNews)) {        foreach($ret->NewsSearchResult->InheritanceNews as $item) {           echo "\n\n";        echo "\n";        echo ""."
$item->Title
"; } }else{ echo "\n\n"; echo "\n"; echo ""."
$ret->NewsSearchResult->InheritanceNews->title
"; }} else { echo 'no user'; } //总页数 $totalPage = ceil(($item->NewsCount)/$page_size); //上一页链接 $Prev = $page - 1; if ($Prev < 1) { $Prev = 1; } //下一页链接 $Next = $page + 1; if ($Next > $totalPage) { $Next = $totalPage; } //
输出上一页链接 if ($page <> 1) { echo 'First '; echo 'Prev'; } else { echo 'First'; echo 'Prev'; } //页码数字链接 //显示的数字个数 $pageNumber = 5; //页码数算法 $pagebegin = $page - $pageNumber; if ($page == 1) { $pageend = $pageNumber; } else { $pageend = $page + $pageNumber; } if ($pagebegin <= 0) { $pagebegin = 1; } if ($pageend > $totalPage) { $pageend = $totalPage; } //一次向前翻$pageNumber行 if ($page > $pageNumber) { echo '<<'; } //输出动态生成的页码链接 for ($i = $pagebegin; $i <= $pageend; $i++) { if ($i == $page) { echo '' . $i . ''; } else { echo '' . $i . ''; } } //一次向后翻$pageNumber行 if (($totalPage - $page) > 5) { echo '>>'; } //输出下一页链接 if ($page <> $totalPage) { echo 'Next'; echo 'Last'; } else {  

人气教程排行