php在分页时只显示了第一页,后面就不显示了,本来我只查询一张表时是可以正常查到的

<form action="test.php" method="post">
<select name="option"><option selected="selected">请选择..</option>
<option>Mainpost</option>
<option>Replypost</option>
</select>
<input type="submit" name="submit" value="确定" />
</form>
<?php
function printTable( $name, $trow)
{if($name= "Mainpost")
{echo $trow['mainID']." | ";
echo $trow['author']." | ";
echo $trow['title']." | ";
echo $trow['mainContent']." | ";
echo "<br/>";
}
else if($name="Replypost")
{echo $trow['replyID']." | ";
echo $trow['author']." | ";
echo $trow['title']." | ";
echo $trow['replyContent']." | ";
echo "<br/>";
}
}
$serverName = "(local)";
$connectionInfo = array("UID"=>***, "PWD"=>***, "Database"=>***);
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn == false)
{
echo "连接失败!";
die( print_r( sqlsrv_errors(), true));
}
if( isset($_GET['page']) )
$page = intval( $_GET['page'] );
else
$page = 1;

if( isset($_POST['option']) && $_POST['option']!= "请选择.." )
$name= $_POST['option'];
else
$name= NULL;
if($name)
{$id=$name."ID";
$id=str_replace( "post", "", $id);
$page_size = 10;
$sql = "select count(*) as amount from ".$name;
$result =sqlsrv_query($conn, $sql);
$row = sqlsrv_fetch_array($result);
$amount = $row['amount'];
if( $amount ){
if( $amount < $page_size )
$page_count = 1;
if( $amount % $page_size )
$page_count = (int)($amount / $page_size) + 1;
else
$page_count = $amount / $page_size;
}
else
$page_count = 0;
$page_string= "" ;
if( $page == 1 )
$page_string .= "第一页|上一页|";
else
$page_string .= "<a href=?page=1>第一页</a>|<a href=?page=".($page-1).">上一页</a>|";
if( ($page == $page_count) || ($page_count == 0) )
$page_string .= "下一页|尾页";
else
$page_string .= "<a href=?page=".($page+1).">下一页</a>|<a href=?page=".$page_count.">尾页</a>";
if( $amount )
{
$tsql="select top ". $page_size ." * from ".$name."
where (".$id." not in
(select top ". ($page-1)*$page_size .$id." from ".$name."
order by ".$id."))
order by ".$id;
$tresult =sqlsrv_query($conn, $tsql);

if( $tresult === false)
{
echo "Error in query preparation/execution.\n";
die( print_r( sqlsrv_errors(), true));
}

while ($trow =sqlsrv_fetch_array($tresult, SQLSRV_FETCH_ASSOC) )
{ $rowset[] = $trow;
printTable($name, $trow);
}
}
else
$rowset = array();
echo $page_string;
sqlsrv_free_stmt( $tresult);
}
sqlsrv_close( $conn);
?>

送你一个分页类

<?php
class page{
/*
1、我要知道一页有几行数据。
2、当前是多少页
3、最大数据条数
方法一:计算最大页数
方法二:判断页号是否越界
方法三:返回部分分页sql语句
*方法四:动态输出分页URL。

*/
public $pageSize;//一页有多少行
public $maxData;//最大的数据条数
public $nowPage;//当前页面
public $url;

/*1、初始化数据
*/
function __construct($pageSize=10,$maxData,$nowPage=1){
$this->pageSize=$pageSize;
$this->maxData=$maxData;
$this->nowPage=$_GET['page'] ? $_GET['page'] :1;

$this->url=$_SERVER['PHP_SELF'];
}
/*
2、得到limit的起始位置。
*/
function getStart(){
return ($this->nowPage-1)*$this->pageSize;
}

/*
3、输入html链接
*/
function outHtml(){
$str="<a href='test.php?page=".($this->nowPage-1)."'>上一页</a>";
$str.="<a href='test.php?page=".($this->nowPage+1)."'>下一页</a>";
return $str;
}
}
$conn=mysql_connect('localhost','root','1234@abcd');
mysql_select_db('lampoa');
mysql_query('set names utf8');
/*******************************/
$sql="select count(*) as count from lamp_city";
$counts=mysql_query($sql);
$counts=mysql_fetch_assoc($counts);
/*******************************/
$everyPage=10;
$page=new page($everyPage,$counts['count']);//是分页类

//var_dump($page);

$sql1="select * from lamp_city limit ".$page->getStart().",{$everyPage}";
$result=mysql_query($sql1);
while($rows=mysql_fetch_assoc($result)){
var_dump($rows);
}
echo $sql1;
echo '<br />';
echo $page->outHtml();
//那我们个类中肯定要有一个方法返回 limit 0,10
?>
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-24
我怎么感觉你的语句不能分页,分页是这样的语句
select * from 表名 limit 开始行数,结束的行数
写得很复杂,感觉你的逻辑也有点不对。也许你的思路跟我的不一样吧!追问

我用的是sqlserver,不支持limit语句,而且之前用这个语句查到数据了,现在只不过用变量替换上去

追答

原来是这样啊!那你应该把sql语句输出来,贴sqlserver查询器里试试

追问

我觉得sql语句没问题啊,之前是可以查到数据的,而且我写了报错的语句,有问题的话应该会报错吧

追答

看看链接地址下面的参数是不是少参数了

追问

我只传递了一个page的GET变量,难道POST变量也要在链接地址里写吗

追答

你要分页
肯定要带参数了
例如
链接地址:xx.aspx?page=1
sql语句是 select * from table where classid=1
第一次因为带着classid了能查出来数据,第二次就不能了,没有classid了
我们要在分页上绑定classid
链接地址:xx.aspx?page=1&classid=$classid
这样就不会出现不分页的情况了

追问

我用session解决了分页问题,但是在一些页面中只有前几条有数据,我根据ID来查时又发现在数据库中是有这些数据的,不知道为什么显示不出来?

追答

把sql语句输出来,观察变化。可能还是有值丢失了

本回答被网友采纳
第2个回答  2012-09-24
好好检查你的SQL语句

php在分页时只显示了第一页,后面就不显示了,本来我只查询一张表时是可 ...
方法一:计算最大页数 方法二:判断页号是否越界 方法三:返回部分分页sql语句 方法四:动态输出分页URL。\/ public $pageSize;\/\/一页有多少行 public $maxData;\/\/最大的数据条数 public $nowPage;\/\/当前页面 public $url;\/*1、初始化数据 \/ function __construct($pageSize=10,$maxData,$nowP...

PHP为什么点击分页的下一页就不能显示内容了
我估计你是查询后的结果 分页的时候没有把关键字存到session中 结果在此查询没了关键字 。。。 不知道猜对不 如果直接分页 就没什么代码问题了 哈哈哈 对了楼主把分给我哦

thinkphp分页,已经显示了,但是不显示下面的上一页下一页
first:第一页描述信息,默认值是“第一页”last:最后一页描述信息,默认值是“最后一页”可以设置一些分页的显示看看能不能显示

...用php 做分页 当在第一页时,“前一页”不显示,当在最后一页时...
next_page=$page+1; \/\/设置下一页 prev_page=$page-1; \/\/设置上一页 if(page=1 || empty(page)){ echo "第一页" \/\/或者不显示 echo "下一页”;echo "最后一页“;} ...\/\/省略部分代码 第一页 上一页 下一页 最后一页 if(page>=last_page){ echo "第一页“;ech...

PHP分页,在smarty中 只能分到一页,点击下一页就显示不,主要是模板那头...
这么长,谁愿意看呀,真是的,你只要把值传递过去了就行了,你如果分页不了,就只能是数据库接受不到GET的变量,你如果不行的话,用超级全局也可以呀

为什么在做php分页的时候 翻到第二页 数据库里的数组就不能显示 第一...
...一坨坨的,不想看,直接传参,默认传0,50 第0组50个 ,然后点击下一页一次加1,1,50 2,50 用 limit 写sql 就行了!

php 分页 带参数后 第二页不显示了
echo "下一页|尾页";下面的语句:else echo " ".($i)." ";应修改为:else echo " ($i) ";

thinkphp分页 怎样才能不显示第几页,只显示上一页下一页?
TP官方下载完整版,自带有分页类;也可以自己写分页类 p=new Think\\Page($count,$pagesize);\/\/调用分页类 p->setConfig('theme',' %UP_PAGE% %DOWN_PAGE% ');\/\/设置显示的样式

打印excel表,分页预览时,只有第一页有内容,后面空白的怎么也显示啊?
1、选分页预览 2、拖动最下面蓝色的线到虚线位置。再打印就只显示一页了。

php分页查询,需要提前先创好多个显示页面吗
你好,不需要的,是动态查询数据表的记录 要用limt 例子:select * from user order by id desc limit 0,5 开始的5条数据

相似回答