热搜:NVER node 开发 php

PHP分页问题,求大神指导

2024-09-12 18:15:01
PHP分页问题,求大神指导

    

输入关键字:

<?php$key = $_POST["key"]; if($key==""){ echo "请输入搜索条件"; return;}//取得页码$page = @$_GET['page'];//定义每页显示信息条数$page_size = 10;//当页码参数为空时,将页码设为1if ($page == ""){ $page = 1;}$wsdl="http://pica.chalwin.com/service/JsAccessWebService.asmx?wsdl";$client = new SoapClient($wsdl);$param = array('NodeId'=>'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}

输入关键字:
<?=$_SESSION[key] ?>

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

输入关键字:
<?=$_SESSION[key] ?>


大清早,迷糊写错了。。


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

输入关键字:
<?=$_SESSION[key] ?>


大清早,迷糊写错了。。

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


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

输入关键字:
<?=$_SESSION[key] ?>


大清早,迷糊写错了。。


输入关键字:

果然还是迷糊了。应该写在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标签这里报错了~

    

输入关键字:

<?php//$key = $_POST["key"]; $key = ($_POST["key"]=='')? $_GET["key"]:$_POST["key"];if($key==""){ echo "请输入搜索条件"; return;}else{ $_SESSION['key'] = $key;//这里把KEY保存到session}//取得页码$page = @$_GET['page'];//定义每页显示信息条数$page_size = 10;//当页码参数为空时,将页码设为1if ($page == ""){ $page = 1;}$wsdl="http://pica.chalwin.com/service/JsAccessWebService.asmx?wsdl";$client = new SoapClient($wsdl);$param = array('NodeId'=>'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绑定都有错。
是不是我哪里写错了呢

    

输入关键字:

<?php//$key = $_POST["key"]; $key = ($_POST["key"]=='')? $_GET["key"]:$_POST["key"];if($key==""){ echo "请输入搜索条件"; return;}else{ $_SESSION['key'] = $key;//这里把KEY保存到session}//取得页码$page = @$_GET['page'];//定义每页显示信息条数$page_size = 10;//当页码参数为空时,将页码设为1if ($page == ""){ $page = 1;}$wsdl="http://pica.chalwin.com/service/JsAccessWebService.asmx?wsdl";$client = new SoapClient($wsdl);$param = array('NodeId'=>'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绑定都有错。
是不是我哪里写错了呢

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


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


    

输入关键字:

<?php//$key = $_POST["key"]; $key = ($_POST["key"]=='')? $_GET["key"]:$_POST["key"];if($key==""){ echo "请输入搜索条件"; return;}else{ $_SESSION['key'] = $key;//这里把KEY保存到session}//取得页码$page = @$_GET['page'];//定义每页显示信息条数$page_size = 10;//当页码参数为空时,将页码设为1if ($page == ""){ $page = 1;}$wsdl="http://pica.chalwin.com/service/JsAccessWebService.asmx?wsdl";$client = new SoapClient($wsdl);$param = array('NodeId'=>'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绑定都有错。
是不是我哪里写错了呢

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


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


    

输入关键字:

<?php//$key = $_POST["key"]; $key = ($_POST["key"]=='')? $_GET["key"]:$_POST["key"];if($key==""){ echo "请输入搜索条件"; return;}else{ $_SESSION['key'] = $key;//这里把KEY保存到session}//取得页码$page = @$_GET['page'];//定义每页显示信息条数$page_size = 10;//当页码参数为空时,将页码设为1if ($page == ""){ $page = 1;}$wsdl="http://pica.chalwin.com/service/JsAccessWebService.asmx?wsdl";$client = new SoapClient($wsdl);$param = array('NodeId'=>'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绑定都有错。
是不是我哪里写错了呢

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


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

<?phpsession_start();$_SESSION['key'] = $_POST["key"] ;?>    

输入关键字:

<?php$key = $_POST["key"]; if($key==""){ echo "请输入搜索条件"; return; }else{ unset($_SESSION['key']);}//取得页码$page = @$_GET['page'];//定义每页显示信息条数$page_size = 10;//当页码参数为空时,将页码设为1if ($page == ""){ $page = 1;}$wsdl="http://pica.chalwin.com/service/JsAccessWebService.asmx?wsdl";$client = new SoapClient($wsdl);$param = array('NodeId'=>'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'; } ?>


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

<?phpsession_start();$_SESSION['key'] = $_POST["key"] ;?>    

输入关键字:

<?php$key = $_POST["key"]; if($key==""){ echo "请输入搜索条件"; return; }else{ unset($_SESSION['key']);}//取得页码$page = @$_GET['page'];//定义每页显示信息条数$page_size = 10;//当页码参数为空时,将页码设为1if ($page == ""){ $page = 1;}$wsdl="http://pica.chalwin.com/service/JsAccessWebService.asmx?wsdl";$client = new SoapClient($wsdl);$param = array('NodeId'=>'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语句来判断结果。

<?phpsession_start ();$_SESSION['key'] = $_POST["key"] ;?>    
 

 输入关键字:
 "/> 

 

  

 
 <?php $key = $_POST["key"]; if($key==""){ echo "请输入搜索条件"; return; }else{ unset($_SESSION['key']);}//取得页码$page = @$_GET['page'];//定义每页显示信息条数$page_size = 10;//当页码参数为空时,将页码设为1if ($page == ""){ $page = 1;}$wsdl="http://pica.chalwin.com/service/JsAccessWebService.asmx?wsdl";$client = new SoapClient($wsdl);$param = array('NodeId'=>'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  $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  $totalPage)        {            $pageend = $totalPage;        }        //一次向前翻$pageNumber行        if ($page > $pageNumber)        {            echo '';        }        //输出动态生成的页码链接        for ($i = $pagebegin; $i ' . $i . '';            }            else            {                echo '' . $i . '';            }        }        //一次向后翻$pageNumber行        if (($totalPage - $page) > 5)        {            echo '>>';        }        //输出下一页链接        if ($page  $totalPage)        {            echo 'Next';            echo 'Last';        }        else        {   &nbsp