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>

<?php
//总记录数
$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 查询结果分原网页显示并分页的主要内容,如果未能解决你的问题,请参考以下文章

A.PHP读取txt文本文件并分页显示的方法

C#winform如何实现数据库查询并分页

sqlserver2008从一个表中模糊查询并分页

ThinkCMF:多个分类下的文章显示并分页;

JPA分页查询怎么做

查询内容在网页里面分页显示+跳页查看