php使用sqlserver2005的问题

windsor0646 2009-08-16 11:37:08
我是刚接触PHP的新手,最近为了方便工作就动手写了一个PHP操作sqlserver2005的网页。但是碰到一些问题。我先描述下:

我用的是微软的sqlserver2005的驱动,一切都很正常,查询数据库显示的也正常。但是有时候查询出来1000多条显示在一个页面上很不方便,然后做分页,我写了一个查询结果有很多条的SQL语句,按50条一页来分页,测试是正常的,每页都可以显示出来。
于是我做了一个表单,表单里面用来输入我要查询的条件,SQL语句中的查询条件也用参数代替,参数的值就是表单提交来的。接着我就输入查询条件(和之前测试分页的那个语句的查询条件相同了),查询的结果却出问题了,显示了50条记录,并且分页链接也都正常,总记录数也正常,当点第2页的时候,查询条件失效了,查询出来的结果是我给参数设置的默认值的那种情况的第二页,后面页面情况也一样。

With Test As(

SELECT a.bod_id as id,a.bod_cd as 单据编号,b.team_name as 业务组,c.mate_name as 供应商,CONVERT(varchar(19),a.check_dt,120) as 审核时间,a.bod_amot as 单据金额,a.bod_desc as 备注,e.med_name as 药品名,e.specifi as 规格,d.bat_cd as 批号,d.price as 单价,d.qty as 数量,d.amot as 金额,ROW_NUMBER() OVER (order by a.check_dt) AS ROW_NUMBER
FROM tb_bill a,tb_team b,tb_busimate c,tb_bill_dtl d,tb_medicine e where b.team_name like '%$team_name%' and a.bod_type_id=1 and a.check_dt>'$check_date' and a.src_id=c.mate_id and a.team_id=b.team_id and a.bod_id=d.bod_id and d.med_id=e.med_id)

SELECT * FROM Test where ROW_NUMBER between $start_id and $end_id";


上面是SQLSERVER2005的分页代码,$team_name和$check_date是PHP页面里面的变量,他们的值由表单提交获得。

$start_id=($page-1)*$pageRow+1;
if($page<$pageNum)
$end_id=$page*$pageRow;
else
$end_id=$rows_affected;

记录集分页的参数,$page是当前页,$pageNum是总页数。

for($i=1;$i<=$pageNum;$i++){
$show=($i!=$page)?"<a href='index.php?page=".$i."'>$i</a>":"<b>$i</b>";
Echo $show." ";
}

分页链接

$page=isset($_GET['page'])?intval($_GET['page']):1;

获取分页链接中的page值给$page

...全文
67 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
joking520 2009-08-16
  • 打赏
  • 举报
回复
首先,把表单最好用 get 方式提交,并且用 $_GET 获取查询条件

把查询条件带到下一页的这个链接上面。

21,892

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧