首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  PHP+MYSQL编程 » [原创]关于分页显示中页面间传递变量问题  


  作者:liufayong
  注册时间:2005-06-25
  主题/回复:9/6
  积分:452
  等级:★★☆(五级)
  称号:略有小成

  feuw@123.com
  未提供
  www.

 

 发表:2005-09-18 08:11:50 阅读 2887 次 回复 3 次 得分3  |   字号 字色
[原创]关于分页显示中页面间传递变量问题
目的及问题环境:我做显示客户订单部分,有两个主要页面 page2.php,xd.php,其中page2.php里显示的是数据库表的部分字段,并且在每行末有个链接“详细”,单击“详细”后打开xd.php这页面里是我画的表,里边完整输出了数据表里所有的记录。至此显示客户订单完毕。
注:page2.php分页显示,每页10条记录。

page2.php的主要代码:
<?
$connect=mysql_connect("localhost","root","adminsa");
mysql_select_db("test",$connect);
$page_num=10;
if(!$page_no)
{
$page_no=1;
}
$start_num=$page_num*($page_no-1);
$sql="SELECT * FROM biaodan limit $start_num,$page_num";
$result=mysql_query($sql);
$rows=mysql_num_rows($result);
for($i=0;$i<$rows;$i++)
{
  @mysql_data_seek($result,$i);
  $data=mysql_fetch_array($result);
?>
    <tr>
    <td align="center" height="19"><?echo $data[user]?></td>
    <td align="center"><?echo $data[comp]?></td>
    <td align="center"><?echo $data[tel]?></td>
    <td align="center"><?echo $data[pro]?>  <a href="xd.PHP?id=<? echo"$i";?>">详细</a></td>
  </tr>
<?
}
?>
</table>
<?
echo " <a href='page2.php?page_no=" . ($page_no-1) . "'>上一页</a> <a href='page2.php?page_no= " . ($page_no+1) . "'>下一页</a>";
?>
大家不难看出来,我的关键变量$i永远小于等于$page_num的值10因为我的每页最多10条数据。
xd.php主要代码:
<?
$connect=mysql_connect("localhost","root","adminsa");
mysql_select_db("test",$connect);
$sql="SELECT * FROM biaodan where id=$id";
$result=mysql_query($sql);
$data=mysql_fetch_array($result);
?>
大家看这里在页面间传递的关键变量是$sql="SELECT * FROM biaodan where id=$id";中的$id。这两段代码看起来没有错误、其实当我单击了page2.php里每行记录行尾的“详细”链接打开xd.php页面显示此记录的详细数据时,就会发现不管你点击的第几页的第n(n小于等于10肯定)条记录行尾的“详细”链接,都在xd.php页面显示的是所有数据表记录的第n条记录详细内容。也就是第一页的第n条记录。只有把<td align="center"><?echo $data[pro]?>  <a href="xd.PHP?id=<? echo"$i";?>">详细</a>行的id值设置成(当前页码减1)乘以每页显示记录数再加$i,即($page_no-1)*$page_num+$i;才可以避免此错误,可是我不知道用php语法如何表示上边这行。
 
 1#楼  
 
  回复人:Miyahoo
  注册时间:2004-04-04
  主题/回复:39/255
  积分:1210
  等级:★★★☆(七级)
  称号:论坛贤士

   
 1#楼 发表于2005-09-19 19:48:10  评分:1 

没有仔细看你的程序。

看过你的介绍后得出一个我自己的结论:

你混淆了 页面数据ID 和 数据库数据ID 两个概念

前边详细按钮中的ID是你自己设置的。而数据库中的ID是固定不变的。

在你每一页中得ID传递给xd.php时,传递的值都是相同的,显示的结果当然也会是相同的。如果不同就怪了。

解决这个问题的方法就是为每一条信息传建一个唯一ID,在页面中得ID和数据库中的必须保持一致。

同时你可以将页码同时传递给xd.php然后进行相应的计算,以获得正确的信息ID。

我这么说不知道你能看懂不。
 2#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 2#楼 发表于2005-09-19 22:59:10  评分:1 

同意 Louyl
 3#楼  
 
  回复人:sunceenjoy
  注册时间:2005-12-27
  主题/回复:2/6
  积分:416
  等级:★★☆(五级)
  称号:略有小成

   
 3#楼 发表于2006-01-22 18:27:06  评分:1 

我觉得这个$page_num 是不是应该重新计算一下呢,而应该把
limit $start_num,$page_num
中应该满足:$start_num-$page_num===10;
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.006sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版