php 查询结果分原网页显示并分页
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 查询结果分原网页显示并分页相关的知识,希望对你有一定的参考价值。
现在的情况是,我输入一个查询条件,然后选择查询。这个时候,查询结果在本页面内显示(不是跳转到新的页面,然后显示查询结果,也就是说URL地址没有改变)。
现在的问题是:第一页可以正常显示,但一但点击首页、上一页、下一页、尾页。四个中的一个,所有信息就都没有了。
网上查到的结果是,需要传递查询条件到URL。但是我这个是在同一个网页中,没有跳转啊!
以下是【首页】、【上一页】、【下一页】、【尾页】的代码和我的查询代码
$sql=mysql_query("select * from tb_thesis where “.$temp.” order by date limit ".($page-1)*$pagesize.",$pagesize",$conn);
<a href="<?php echo $_SERVER["PHP_SELF"]?>?page=1&id=<?php echo urlencode($id);?>" class="a1"><font color="black">首页</font></a>
<a href="<?php echo $_SERVER["PHP_SELF"]?>?page=<?php
if($page>1) //判断当前页是否大于第一页,如果是则当用户单击“上一页”超级链接时,使变量$page的值减1,从而实现向前翻页的功能
echo $page-1;
else
echo 1;
?>&id=<?php echo urlencode($id);?>" class="a1"><font color="black">上一页</font></a>
<a href="<?php echo $_SERVER["PHP_SELF"]?>?page=<?php
if($page<$pagecount) //判断当前页码是否小于总的页数,如果是则当用户单击“下一页”超级链接时,使变量$page的值加1,从而实现向前翻页的功能
echo $page+1;
else
echo $pagecount;
?>&id=<?php echo $id;?>" class="a1"><font color="black">下一页</font></a>
<a href="<?php echo $_SERVER["PHP_SELF"]?>?page=<?php echo $pagecount;?>&id=<?php echo urlencode($id);?>" class="a1"><font color="black">尾页</font></a></div></td>
</tr>
</table>
//总记录数
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM db_name"),0);
//每页显示
$size = 10;
//总页数
$pagecount = ceil($count/$size);
//获取浏览器传来的PAGE值 去除两边空格 转成整数 无则赋值1
$page = isset($_GET[\'page\']) ? intval(trim($_GET[\'page\'])) : 1;
//如果小于1或大于总页数则等于1
if($page < 1 || $page > $pagecount) $page = 1;
//从第几条记录开始显示
$begin = ($page - 1) * $size;
$sql = mysql_query("SELECT * FROM db_name ORDER BY id DESC LIMIT $begin,$size");
while($count && $arr = mysql_fetch_array($sql))
//这里是你要输出的内容 如:
$id = $arr[\'info_id\'];
echo $id;
//翻页
$last = $page - 1;//前页
$next = $page + 1;//后页
echo <<<html
<a href="?page=1">首页</a>
<a href="?page=$last">前页</a>
第$page/$pagecount页
<a href="?page=$next">后页</a>
<a href="?page=$pagecount">尾页</a>
HTML;
?> 参考技术A 你的判断逻辑有问题(前一页 后一页)。这个是我以前学习类的时候写的分页类,里面有关于逻辑的判断,希望对你有用。
<?php
// 禁止直接访问该页面
if (basename($HTTP_SERVER_VARS['PHP_SELF']) == "pager.class.php")
header("HTTP/1.0 404 Not Found");
class Pager
var $infoCount; /** 总信息数 */
var $pageCount; /** 总页数 */
var $items; /** 每页显示条数 */
var $pageNo; /** 当前页码 */
var $startPos;/** 查询的起始位置 */
var $nextPageNo;
var $prevPageNo;
function Pager($infoCount, $items, $pageNo)
$this->infoCount = $infoCount;
$this->items = $items;
$this->pageNo = $pageNo;
$this->pageCount = $this->GetPageCount();
$this->AdjustPageNo();
$this->startPos = $this->GetStartPos();
function AdjustPageNo()
if($this->pageNo == '' || $this->pageNo < 1)
$this->pageNo = 1;
if ($this->pageNo > $this->pageCount)
$this->pageNo = $this->pageCount;
/**
* 下一页
*/
function GoToNextPage()
$nextPageNo = $this->pageNo + 1;
if ($nextPageNo > $this->pageCount)
$this->nextPageNo = $this->pageCount;
return false;
$this->nextPageNo = $nextPageNo;
return true;
/**
* 上一页
*/
function GotoPrevPage()
$prevPageNo = $this->pageNo - 1;
if ($prevPageNo < 1)
$this->prevPageNo = 1;
return false;
$this->prevPageNo = $prevPageNo;
return true;
function GetPageCount()
return ceil($this->infoCount / $this->items);
function GetStartPos()
return ($this->pageNo - 1) * $this->items;
?> 参考技术B 即使在同一页 但是你的page参数不一样的 就会显示不一样的结果啊追问
的确有page=1.page=2的区别 但第二页还是没有东西……
追答你在输出的时候带入下一页的页码
参考技术C hp echo $_SERVER["PHP_SELF"]?>?page=<?php echo $pagecount;?>&id=<?php echo urlencode($id);?>" class="a1"><font color="black">尾页</font></a></div></td></tr>
使用PHP做分页查询(查询结果也显示为分页)
1.先把数据库里所有的数据分页显示在页面,并在显示数据的表格上方加上查询表单。(加上条件,实现目标结果。)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> </head> <body> <br /> <form action="fenyechaxun.php" method="get"><!--分页查询最好使用get,不要使用post,使用post会变得很复杂。--> <div>关键字:<input type="text" name="key" /> <input type="submit" value="查询" /> </div> </form> <br /> <table width="100%" border="1" cellpadding="0" cellspacing="0"> <tr> <th>地区代号</th><!--坐标头--> <th>地区名称</th> <th>上级代号</th> </tr> <?php include("DBDA.class.php");//引入封装类的页面 $db = new DBDA();//造一个对象 //求数据的总条数 $sall = "select count(*) from chinastates"; $total = $db->StrQuery($sall); include("page.class.php");//引入分页类的页面 $page = new Page($total,20);//造一个分页的对象.第一个参数是数据的总条数,第二个参数是每页显示多少条数据。 $sql = "select * from chinastates ".$page->limit;//调用分页里面的limit方法。 $attr = $db->Query($sql); foreach($attr as $v) { echo "<tr><td>{$v[0]}</td><td>{$v[1]}</td><td>{$v[2]}</td></tr>"; } ?> </table> <?php echo $page->fpage();//显示表格下方的数据和页面的信息。 ?> </body> </html>
2.做分页查询的处理页面
<?php include("DBDA.class.php"); $db = new DBDA(); //查询条件 $tj1 = " 1=1 "; if(!empty($_GET["key"]))//获取提交的关键字 { $tj1 = " areaname like ‘%{$_GET[‘key‘]}%‘"; } $sall = "select count(*) from chinastates where {$tj1}";//把条件拼接到语句中 $total = $db->StrQuery($sall); include("page.class.php"); $page = new Page($total,20); $sql = "select * from chinastates where {$tj1} ".$page->limit;//这里也要加上搜索条件 $attr = $db->Query($sql); foreach($attr as $v) { echo "<tr><td>{$v[0]}</td><td>{$v[1]}</td><td>{$v[2]}</td></tr>"; } ?>
以上是关于php 查询结果分原网页显示并分页的主要内容,如果未能解决你的问题,请参考以下文章