编写一个PHP程序,调用一个分页类,可是显示不出来,希望大侠指点!调试成功就给分!
下面是我的php程序
<?php
echo "<B>Hier sind die Tabell der allen Mineralwasser!";
include 'conn.php';
include 'list1.php';
$page=$_GET["page"];
if(empty($page)) $page=1;
$rs = mysql_query ("SELECT * FROM mineralwasser ORDER BY name ASC");
$total=mysql_num_rows($rs);
$obj=new pagec($total,'3','list.php');
//pageft($total,3);
print "<table border='1'>";
print "<th align = 'center'>Name des Produkts</th>";
print "<th align = 'center'>Firma</th>";
print "<th align = 'center'>Wasser Type</th>";
print "<th align = 'center'>Beschreibung des Produkts</th>";
print "<th align = 'center'>Bestandteile des Wassers</th>";
print "<th align = 'center'>Weitere Information</th>";
//'$obj->.pagestart($page).'
$sql="select * from mineralwasser limit '$obj->.pagestart($page).',3";
$result=mysql_query($sql);
//$result = mysql_query ("SELECT * FROM mineralwasser ORDER BY name ASC limit $firstcount,$displaypg");
while ($row = mysql_fetch_array($result))
{
print "<tr> ";
print "<td align = 'center'>{$row["name"]}</td>";
print "<td align = 'center'>{$row["unternehmen_name"]}</td>";
print "<td align = 'center'>{$row["wassertyp"]}</td>";
print "<td align = 'center'>{$row["beschreibung"]}</td>";
print "<td align = 'center'>{$row["enthalt"]}</td>";
print "<td align = 'center'><a href='unternehmen.php?such_id={$row["unternehmen_id"]}' target='_self'>Hier sind weitere Information</a></td><br></n>";
print "</tr> ";
}
print "</table></br>";
//echo $pagenav;
echo $obj->pageindex($page);
echo "<center><a href=http://localhost/Restaurant/count.php>zurück</a>";
?>下面是分页类程序
<?phpclass pagec
{
var $size; //总数 如1000
var $pagesize;//每页条数 如 20
var $url;// 文件名 如 list.php//构造函数。
//参数$pagesize用来指定每页显示多少条记录,如果不指定,表示全部显示而不用分页
//使用方法:
// $obj=new pagec( '1000 ', '20 ', 'list.php ');
//或: $obj=new pagec();
// $obj-> size= "1000 ";
// $obj-> pagesize= "20 ";
// $obj-> url= "list.php ";
function pagec($size,$pagesize,$url)
{
$this->size=$size;
$this->pagesize=$pagesize;
$this->url=$url;
}
//获取当前页开始记录。
//参数$page用来指当前页
//使用方法:
// $obj=new pagec( '1000 ', '20 ', 'list.php ');
// $obj-> pagestart($page);
// $sql = "select * from mytable order by id desc limit ".$obj-> pagestart(1). ", $pagesize "; 第一页
function pagestart($page=1)
{
return ($page-1)*$this->pagesize;
}// 开始分页导航条代码:
// 使用方法:
// echo $obj-> pageindex($page);function pageindex($page)
{
//var $pagenav;
$size=ceil($this->size/$this->pagesize);//共页数//如果只有一页则跳出函数:
if($size<=1)
return pagenav; $pagenav.="<a href='$this->url?page=1'> 首页 </a>";
if($page>1)
{
$ipage = $page-1;
$pagenav.= "<a href='$this->url?page=$ipage'> 前页 </a> ";
}
else
$pagenav.= " 前页 ";if($page<$size)
{
$ipage = $page+1;
$pagenav.="<a href='$this->url?page=$ipage'> 后页 </a>";
}
else
$pagenav.= " 后页 ";
$pagenav.="<a href='$this->url?page=$size'> 尾页 </a> "; //下拉跳转列表,循环列出所有页码:
$pagenav.="到第 <select name='topage' size='1' onchange='window.location=\'$this->url?page=\ '+this.value'>\n"; for($i=1;$i<=ceil($this->size/$this->pagesize);$i++)
{
if($i==$page)
$pagenav.="<option value='$i' selected> $i </option> \n ";
else
$pagenav.="<option value='$i'> $i </option> \n";
}
$pagenav.="</select> 页,共 $size 页 ".$this->size."条记录 ";
return $pagenav;
}
}
?>
下面是我的php程序
<?php
echo "<B>Hier sind die Tabell der allen Mineralwasser!";
include 'conn.php';
include 'list1.php';
$page=$_GET["page"];
if(empty($page)) $page=1;
$rs = mysql_query ("SELECT * FROM mineralwasser ORDER BY name ASC");
$total=mysql_num_rows($rs);
$obj=new pagec($total,'3','list.php');
//pageft($total,3);
print "<table border='1'>";
print "<th align = 'center'>Name des Produkts</th>";
print "<th align = 'center'>Firma</th>";
print "<th align = 'center'>Wasser Type</th>";
print "<th align = 'center'>Beschreibung des Produkts</th>";
print "<th align = 'center'>Bestandteile des Wassers</th>";
print "<th align = 'center'>Weitere Information</th>";
//'$obj->.pagestart($page).'
$sql="select * from mineralwasser limit '$obj->.pagestart($page).',3";
$result=mysql_query($sql);
//$result = mysql_query ("SELECT * FROM mineralwasser ORDER BY name ASC limit $firstcount,$displaypg");
while ($row = mysql_fetch_array($result))
{
print "<tr> ";
print "<td align = 'center'>{$row["name"]}</td>";
print "<td align = 'center'>{$row["unternehmen_name"]}</td>";
print "<td align = 'center'>{$row["wassertyp"]}</td>";
print "<td align = 'center'>{$row["beschreibung"]}</td>";
print "<td align = 'center'>{$row["enthalt"]}</td>";
print "<td align = 'center'><a href='unternehmen.php?such_id={$row["unternehmen_id"]}' target='_self'>Hier sind weitere Information</a></td><br></n>";
print "</tr> ";
}
print "</table></br>";
//echo $pagenav;
echo $obj->pageindex($page);
echo "<center><a href=http://localhost/Restaurant/count.php>zurück</a>";
?>下面是分页类程序
<?phpclass pagec
{
var $size; //总数 如1000
var $pagesize;//每页条数 如 20
var $url;// 文件名 如 list.php//构造函数。
//参数$pagesize用来指定每页显示多少条记录,如果不指定,表示全部显示而不用分页
//使用方法:
// $obj=new pagec( '1000 ', '20 ', 'list.php ');
//或: $obj=new pagec();
// $obj-> size= "1000 ";
// $obj-> pagesize= "20 ";
// $obj-> url= "list.php ";
function pagec($size,$pagesize,$url)
{
$this->size=$size;
$this->pagesize=$pagesize;
$this->url=$url;
}
//获取当前页开始记录。
//参数$page用来指当前页
//使用方法:
// $obj=new pagec( '1000 ', '20 ', 'list.php ');
// $obj-> pagestart($page);
// $sql = "select * from mytable order by id desc limit ".$obj-> pagestart(1). ", $pagesize "; 第一页
function pagestart($page=1)
{
return ($page-1)*$this->pagesize;
}// 开始分页导航条代码:
// 使用方法:
// echo $obj-> pageindex($page);function pageindex($page)
{
//var $pagenav;
$size=ceil($this->size/$this->pagesize);//共页数//如果只有一页则跳出函数:
if($size<=1)
return pagenav; $pagenav.="<a href='$this->url?page=1'> 首页 </a>";
if($page>1)
{
$ipage = $page-1;
$pagenav.= "<a href='$this->url?page=$ipage'> 前页 </a> ";
}
else
$pagenav.= " 前页 ";if($page<$size)
{
$ipage = $page+1;
$pagenav.="<a href='$this->url?page=$ipage'> 后页 </a>";
}
else
$pagenav.= " 后页 ";
$pagenav.="<a href='$this->url?page=$size'> 尾页 </a> "; //下拉跳转列表,循环列出所有页码:
$pagenav.="到第 <select name='topage' size='1' onchange='window.location=\'$this->url?page=\ '+this.value'>\n"; for($i=1;$i<=ceil($this->size/$this->pagesize);$i++)
{
if($i==$page)
$pagenav.="<option value='$i' selected> $i </option> \n ";
else
$pagenav.="<option value='$i'> $i </option> \n";
}
$pagenav.="</select> 页,共 $size 页 ".$this->size."条记录 ";
return $pagenav;
}
}
?>
Web开发是今后分布式程式开发的主流,通常的web开发都要涉及到与数据库打交道,客户端从服务器端读取通常都是以分页的形式来显示,一页一页的阅读起来既方便又美观。所以说写分页程序是web开发的一个重要组成部分,在这里,我们共同来研究分页程序的编写。 一、分页程序的原理 分页程序有两个非常重要的参数:每页显示几条记录($pagesize)和当前是第几页($page)。有了这两个参数就可以很方便的写出分页程序,我们以MySql数据库作为数据源,在MySQL里如果要想取出表内某段特定内容可以使用的T-SQL语句:select * from table limit offset,rows来实现。这里的offset是记录偏移量,它的计算方法是offset=$pagesize*($page-1),rows是要显示的记录条数,这里就是$page。也就是说select * from table limit 10,10这条语句的意思是取出表里从第11条记录开始的20条记录。 二、主要代码解析 $pagesize=10; //设置每一页显示的记录数
$conn=mysql_connect("localhost","root",""); //连接数据库
$rs=mysql_query("select count(*) from tb_product",$conn); //取得记录总数$rs
$myrow = mysql_fetch_array($rs);
$numrows=$myrow[0];//计算总页数$pages=intval($numrows/$pagesize);//判断页数设置if (isset($_GET['page'])){
$page=intval($_GET['page']);
}
else{
$page=1; //否则,设置为第一页
}
三、创建用例用表myTable
create table myTable
(id int NOT NULL auto_increment,news_title varchar(50),
news_cont text,add_time datetime,PRIMARY KEY(id))
四、完整代码 <html>
<head>
<title>php分页示例</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head><body>
<?php
$conn=mysql_connect("localhost","root","");
//设定每一页显示的记录数
$pagesize=1;
mysql_select_db("mydata",$conn);
//取得记录总数$rs,计算总页数用
$rs=mysql_query("select count(*) from tb_product",$conn);
$myrow = mysql_fetch_array($rs);
$numrows=$myrow[0];
//计算总页数 $pages=intval($numrows/$pagesize);
if ($numrows%$pagesize)
$pages++;
//设置页数
if (isset($_GET['page'])){
$page=intval($_GET['page']);
}
else{
//设置为第一页
$page=1;
}
//计算记录偏移量
$offset=$pagesize*($page - 1);
//读取指定记录数
$rs=mysql_query("select * from myTable
order by id desc limit $offset,$pagesize",$conn);
if ($myrow = mysql_fetch_array($rs))
{
$i=0;
?>
<table border="0" width="80%">
<tr>
<td width="50%" bgcolor="#E0E0E0">
<p align="center">标题</td>
<td width="50%" bgcolor="#E0E0E0">
<p align="center">发布时间</td>
</tr>
<?php
do {
$i++;
?>
<tr>
<td width="50%"><?=$myrow["news_title"]?></td>
<td width="50%"><?=$myrow["news_cont"]?></td>
</tr>
<?php
}
while ($myrow = mysql_fetch_array($rs));
echo "</table>";
}
echo "<div align='center'>共有".$pages."页(".$page."/".$pages.")";
for ($i=1;$i< $page;$i++)
echo "<a href='fenye.php?page=".$i."'>[".$i ."]</a> ";
echo "[".$page."]";
for ($i=$page+1;$i<=$pages;$i++)
echo "<a href='fenye.php?page=".$i."'>[".$i ."]</a> ";
echo "</div>";
?>
</body>
</html> 五、总结 本例代码在windows2000 server+php4.4.0+mysql5.0.16上运行正常。该示例显示的分页格式是[1][2][3]…这样形式。假如想显示成“首页 上一页 下一页 尾页”这样形式,请加入以下代码:
$first=1;
$prev=$page-1;
$next=$page+1;
$last=$pages;if ($page > 1)
{
echo "<a href='fenye.php?page=".$first."'>首页</a> ";
echo "<a href='fenye.php?page=".$prev."'>上一页</a> ";
}if ($page < $pages)
{
echo "<a href='fenye.php?page=".$next."'>下一页</a>
echo "<a href='fenye.php?page=".$last."'>尾页</a> ";
} 其实,写分页显示代码是很简单的,只要掌握了它的工作原理。
这是错误信息!