流光鸟大哥,这个东西你知道吗,
我再把原来那个问题发下。
比如说数据库中有21条,每页为10条,那么就分成3页,url为:
http://127.0.0.1/new3.php?pagenum=1
http://127.0.0.1/new3.php?pagenum=2
http://127.0.0.1/new3.php?pagenum=3
但是做其他模糊查询的时候,出现了错误,我把执行的sql语句“$strSQL="SELECT * from rkgl";”换成其他获取参数之后进行判断的SQL语句之后第一次提交后显示的http://127.0.0.1/new3.php是正确的分页,但按下下一页就变成了执行“$strSQL="SELECT * from rkgl";”的
http://127.0.0.1/new3.php?pagenum=2的分页内容。再按上一页就成了最先的那个http://127.0.0.1/new3.php?pagenum=1再也回不了第二次的分页了,而,直接改“$strSQL="SELECT * from rkgl”为“$strSQL="SELECT * from rkgl where 单价<100”却可以出现正确的结果。感觉是参数丢失了。
程序是:
<?PHP
$conn=mssql_connect("localhost","sa","1" ) or die("Could not connect: " );
mssql_Select_db("njc2",$conn);
$binAddedWhere=false;
$strSQL="SELECT 入库编号,品名,单价,数量,采购人,入库经手人 from rkgl";
if ($_POST['cgr']!="")
{if(!$binAddedWhere)
{$strSQL=$strSQL." where ";
$binAddedWhere=true;}
$strSQL=$strSQL." 采购人 LIKE '%{$_POST['cgr']}%'";
}
......
.....类似的查询语句
..$result = mssql_query($strSQL);
$total = mssql_num_rows($result);
$pagesize=10;
if (($total%$pagesize)!=0)
$totalpage=intval($total/$pagesize)+1;
else
$totalpage=intval($total/$pagesize);
if (empty($_GET['pagenum'])){
$_GET['pagenum']=1; }
if($total!=0){
mssql_data_seek($result,(($_GET['pagenum']-1)*$pagesize));
}
$i=1;
?>
<table border="0" >
<?PHP
while($row=mssql_fetch_row($result))
{?>
<tr>
<td><?=$row[0];?></td>
<td><?=$row[1];?></td>
<td><?=$row[2];?></td>
<td><?=$row[3];?></td>
<td><?=$row[4];?></td>
<td><a href="play.php?id=<?=$row[0];?>"><?=$row[3];?></a></td>
</tr>
<? $i++;
if ($i>$pagesize)
break;
else
continue;
}
?>
<b>第<?=$_GET['pagenum'];?>页,共<?=$totalpage;?>页.......共<?=$total;?>条记录
</table><br/>
<?PHP
echo "<a href=".$_SERVER['PHP_SELF']."?pagenum=1>首页</a> ";
if ($_GET['pagenum']>1){
$temp_current=$_GET['pagenum']-1;
echo "<a href=".$_SERVER['PHP_SELF']."?pagenum=".$temp_current.">上一页</a> "; }
if ($_GET['pagenum']<$totalpage){
$temp_current=$_GET['pagenum']+1;
echo "<a href=".$_SERVER['PHP_SELF']."?pagenum=".$temp_current.">下一页</a> "; }
echo "<a href=".$_SERVER['PHP_SELF']."?pagenum=".$totalpage.">尾页</a> ";
?>就是这样的一个程序
我用echo "$strSQL";查到开始分页的$strSQL的值为SELECT 入库编号,品名,单价,数量,采购人,入库经手人 from rkgl where 单价 >1000 and 数量 >1000 ORDER BY 入库编号
但点下一页echo "$strSQL";的值就成了SELECT 入库编号,品名,单价,数量,采购人,入库经手人 from rkgl 发生了传值丢失的问题?,不知道是怎么回事啊,大家帮帮忙把。
我再把原来那个问题发下。
比如说数据库中有21条,每页为10条,那么就分成3页,url为:
http://127.0.0.1/new3.php?pagenum=1
http://127.0.0.1/new3.php?pagenum=2
http://127.0.0.1/new3.php?pagenum=3
但是做其他模糊查询的时候,出现了错误,我把执行的sql语句“$strSQL="SELECT * from rkgl";”换成其他获取参数之后进行判断的SQL语句之后第一次提交后显示的http://127.0.0.1/new3.php是正确的分页,但按下下一页就变成了执行“$strSQL="SELECT * from rkgl";”的
http://127.0.0.1/new3.php?pagenum=2的分页内容。再按上一页就成了最先的那个http://127.0.0.1/new3.php?pagenum=1再也回不了第二次的分页了,而,直接改“$strSQL="SELECT * from rkgl”为“$strSQL="SELECT * from rkgl where 单价<100”却可以出现正确的结果。感觉是参数丢失了。
程序是:
<?PHP
$conn=mssql_connect("localhost","sa","1" ) or die("Could not connect: " );
mssql_Select_db("njc2",$conn);
$binAddedWhere=false;
$strSQL="SELECT 入库编号,品名,单价,数量,采购人,入库经手人 from rkgl";
if ($_POST['cgr']!="")
{if(!$binAddedWhere)
{$strSQL=$strSQL." where ";
$binAddedWhere=true;}
$strSQL=$strSQL." 采购人 LIKE '%{$_POST['cgr']}%'";
}
......
.....类似的查询语句
..$result = mssql_query($strSQL);
$total = mssql_num_rows($result);
$pagesize=10;
if (($total%$pagesize)!=0)
$totalpage=intval($total/$pagesize)+1;
else
$totalpage=intval($total/$pagesize);
if (empty($_GET['pagenum'])){
$_GET['pagenum']=1; }
if($total!=0){
mssql_data_seek($result,(($_GET['pagenum']-1)*$pagesize));
}
$i=1;
?>
<table border="0" >
<?PHP
while($row=mssql_fetch_row($result))
{?>
<tr>
<td><?=$row[0];?></td>
<td><?=$row[1];?></td>
<td><?=$row[2];?></td>
<td><?=$row[3];?></td>
<td><?=$row[4];?></td>
<td><a href="play.php?id=<?=$row[0];?>"><?=$row[3];?></a></td>
</tr>
<? $i++;
if ($i>$pagesize)
break;
else
continue;
}
?>
<b>第<?=$_GET['pagenum'];?>页,共<?=$totalpage;?>页.......共<?=$total;?>条记录
</table><br/>
<?PHP
echo "<a href=".$_SERVER['PHP_SELF']."?pagenum=1>首页</a> ";
if ($_GET['pagenum']>1){
$temp_current=$_GET['pagenum']-1;
echo "<a href=".$_SERVER['PHP_SELF']."?pagenum=".$temp_current.">上一页</a> "; }
if ($_GET['pagenum']<$totalpage){
$temp_current=$_GET['pagenum']+1;
echo "<a href=".$_SERVER['PHP_SELF']."?pagenum=".$temp_current.">下一页</a> "; }
echo "<a href=".$_SERVER['PHP_SELF']."?pagenum=".$totalpage.">尾页</a> ";
?>就是这样的一个程序
我用echo "$strSQL";查到开始分页的$strSQL的值为SELECT 入库编号,品名,单价,数量,采购人,入库经手人 from rkgl where 单价 >1000 and 数量 >1000 ORDER BY 入库编号
但点下一页echo "$strSQL";的值就成了SELECT 入库编号,品名,单价,数量,采购人,入库经手人 from rkgl 发生了传值丢失的问题?,不知道是怎么回事啊,大家帮帮忙把。
解决方案 »
- 安装了wamp后,是否还需要安装IIS?
- 在加载程序是显示进度条,加载完后隐藏
- 请问谁有phpbb论坛较完善的版本可下载?
- mysql_insert_id 的问题
- jpgraph用过的请进,知道怎么在饼图中显示百分比,而在图例中显示我传进去的数字伐?
- 关于SOCKET的问题,如何安装socket server,如何启动 socket server,具体的配置是怎么样的?
- 如何在fclose之前把fwrite的内容刷新到文件中去?
- mysql中一个库最多可以建多少个表后,效率开始大幅度下降?
- phpexcel 为何无法创建xlsx文件
- tp5 存入路径 出现问题 大家遇到的进来看看吧 出出主意
- 大家现在多用什么工具编写和调试php 脚本?
- 问一个很菜的问题 关于空链接的
$fileself="base.php?var1=$var1&var2=$var2";
//var1 var2 为要传递的参数$strSQL="SELECT 入库编号,品名,单价,数量,采购人,入库经手人 from rkgl where 入库编号>0";if ($var1!="")
{
$strSQL.="and 字段1='$var1'";
}if ($var2!="")
{
$strSQL.="and 字段2='$var2'";
}...........<b>第<?=$_GET['pagenum'];?>页,共<?=$totalpage;?>页.......共<?=$total;?>条记录
</table><br/>
<?PHP
echo "<a href=".$fileself."&pagenum=1>首页</a> ";
if ($_GET['pagenum']>1){
$temp_current=$_GET['pagenum']-1;
echo "<a href=".$fileself."&pagenum=".$temp_current.">上一页</a> "; }
if ($_GET['pagenum']<$totalpage){
$temp_current=$_GET['pagenum']+1;
echo "<a href=".$fileself."&pagenum=".$temp_current.">下一页</a> "; }
echo "<a href=".$fileself."&pagenum=".$totalpage.">尾页</a>
“因为$_SERVER['PHP_SELF']只能得到“base.php?p1=$p1&p2=p2"你后面又用
echo "<a href=".$_SERVER['PHP_SELF']."?pagenum=".$totalpage.">尾页</a> ";
也就是讲你在参数的传递的时候出现了二个"?"
即base.php?p1=$p1&p2=p2?pagenum=....所以出错,后面的应改为&
$_SESSION['cgr']=$_POST['cgr'];分页函数给你一个~~~
/******************************************
函数:Pagination($total,$per)
功能:分页
参数:$total 总记录数 $per 每页显示数
备注:http://yubeinet.com
******************************************/
function Pagination($total,$per)
{
$n=$total/$per;
$page_num=ceil($n);
if ($page_num==1)
{
return false;
}
$url=basename($_SERVER['PHP_SELF']);
$query_array=explode("&",$_SERVER['argv'][0]);
foreach ($query_array as $key => $value)
{
if (strstr($value,"page="))
{
unset($query_array[$key]);
}
}
$query_string=implode("&",$query_array);
for ($page=1;$page<=$page_num;$page++)
{
if ($_GET['page']==$page)
{
$pages.=" [{$page}]";
continue;
}
if (empty($_GET['page']) and $page==1)
{
$pages.=" [{$page}]";
continue;
}
$pages.=" <a href=\"{$url}?{$query_string}&page={$page}\">$page</a> ";
}
$pages.="<br />";
return $pages;
}
改了之后,点submit
然后出现几个问题,
1.本来上一页,下一页的超联接,变成了
1000&pagenum=1>首页 1000&pagenum=2>下一页 1000&pagenum=2>尾页
而联接地址变成了:http://127.0.0.1/new6.php?单价
我查询的是单价>1000的记录,感觉>号丢失了。
1000&pagenum=1>则直接显示在屏幕上了而, echo $fileself输出的$fileself为:new6.php?单价>1000&
这个没错,
url此时为..\new6.php
按下一页,url为http://127.0.0.1/new6.php?单价
出来的是select * from TABLENAME 分页的第二页,也就是说参数全丢了,
echo 一下$fileself 出来的是:http://127.0.0.1/new6.php?
参数也全丢了。
不服气:自己打入http://127.0.0.1/new6.php?单价<1000
或者http://127.0.0.1/new6.php?入库编号=5
出来的是全选分页的第一页。就是说,没有用。大家再帮帮忙把,这个东西怎么这么难弄哦。
<?PHP
$conn=mssql_connect("localhost","sa","1" ) or die("Could not connect: " );
mssql_Select_db("njc2",$conn);
$binAddedWhere=false;
$fileself="new6.php";
$strSQL="SELECT 入库编号,品名,单价,数量,采购人,入库经手人 from rkgl";
if ($_POST['cgr']!="")
{if(!$binAddedWhere)
{$strSQL=$strSQL." where ";
$fileself=$fileself."?";
$binAddedWhere=true;}
$strSQL=$strSQL." 采购人 LIKE '%{$_POST['cgr']}%'";
$fileself=$fileself."采购人={$_POST['cgr']}";
}
.....类似查询:
if(!$binAddedWhere)
{
$fileself=$fileself."?";
$binAddedWhere=true;
}
else
{$fileself=$fileself."&";
}
$result = mssql_query($strSQL);
$total = mssql_num_rows($result);
$pagesize=10;
if (($total%$pagesize)!=0)
$totalpage=intval($total/$pagesize)+1;
else
$totalpage=intval($total/$pagesize);
if (empty($_GET['pagenum'])){
$_GET['pagenum']=1; }
if($total!=0){
mssql_data_seek($result,(($_GET['pagenum']-1)*$pagesize));
}
$i=1;
?>
<table border="0" >
<?PHP
while($row=mssql_fetch_row($result))
{?>
<tr>
<td><?=$row[0];?></td>
<td><?=$row[1];?></td>
<td><?=$row[2];?></td>
<td><?=$row[3];?></td>
<td><?=$row[4];?></td>
<td><?=$row[5];?></td>
<td><a href="play.php?id=<?=$row[0];?>"><?=$row[3];?></a></td>
</tr>
<? $i++;
if ($i>$pagesize)
break;
else
continue;
}
?>
<b>第<?=$_GET['pagenum'];?>页,共<?=$totalpage;?>页.......共<?=$total;?>条记录
</table><br/>
<?PHP
echo "<a href=".$fileself."pagenum=1>首页</a> ";
if ($_GET['pagenum']>1){
$temp_current=$_GET['pagenum']-1;
echo "<a href=".$fileself."pagenum=".$temp_current.">上一页</a> "; }
if ($_GET['pagenum']<$totalpage){
$temp_current=$_GET['pagenum']+1;
echo "<a href=".$fileself."pagenum=".$temp_current.">下一页</a> "; }
echo "<a href=".$fileself."pagenum=".$totalpage.">尾页</a> ";
echo "$strSQL<BR\n>";
echo"$fileself"
?>
$fileself=$fileself."采购人={$_POST['cgr']}";
$_POST 改为$_GET
function vPage(page){
document.page.page.value=page;
document.page.submit();
}二。相应的上一页下一页的连接就可以写成
<a onclick="vPage(3)">上一页</a>三。相应的隐藏表单就可以根据需要些,把查询条件都写到hidden里
$fileself=$fileself."采购人={$_POST['cgr']}";
$_POST 改为$_GET
------------------------------
这位太搞笑了,呵呵,不过谢谢进来了。
----------------------------------
大哥说的是,我还是菜鸟啊,这个还不太懂。
点submit
.本来上一页,下一页的超联接,变成了
1000&pagenum=1>首页 1000&pagenum=2>下一页 1000&pagenum=2>尾页
而点这个“1000&pagenum=1>首页”的 联接地址,出来的url是:http://127.0.0.1/new6.php?单价
页面是select * from tablename 的第二页。那个单价>1000的>丢掉了,大家看看是不是我下面这句话有语法错误啊。具体的程序在上面了。。
echo "<a href=".$fileself."pagenum=".$temp_current.">上一页</a> ";
if (!empty($_POST['keyword']))//提交的时候注册一个SESSION,留着分页的时候用
{
$_SESSION['keyword']=$_POST['keyword'];
$keyword=$_POST['keyword'];
}
elseif (!empty($_SESSION['keyword']))//如果SESSION不为空,则把SESSION的关键词和查询类型写入变量
{
$keyword=$_SESSION['keyword'];
}
指出你两个问题。
1、页面中又是_GET,又是 _POST 是不行的,要知道通过页号的连接过来以后,你的_POST根本取不到值。上面有个兄弟已经指出了来了。3、我没有用过mssql_data_seek,但是我感觉你用的有错误。看文档说的是这个函数是移动row 指针,并没有控制大小的成分在里面,所以你输出的时候肯定要加上循环才是。无论你用什么数据库,用标准的SQL肯定没有问题。
1、你是想通过url参数来传递查询条件的。其实用session保存查询条件来的要简单些,但不是非要这样不可
2、首先,查询条件的提交表单不要用post方式的,而用get方式的,这样无论是第一页还是后续页的处理方式都是一样的
3、当然表单也可以用post方式的,但在提交后要先做$_GET=$_POST;处理。以后就与后续页的处理没有什么不同了
4、生成的导航连接的url部分要用引号括起
这样的写法 echo "<a href=".$fileself."pagenum=".$temp_current.">上一页</a> ";
产生的html代码是这样的
<a href=http://127.0.0.1/new6.php?pagenum=单价>1000&pagenum=1>首页</a>
单价后面的>将被解释成a标记的结束,显然是不对的
只有这样才不会错:
<a href='http://127.0.0.1/new6.php?pagenum=单价>1000&pagenum=1'>首页</a>
所以程序要写成
echo "<a href='".$fileself."pagenum=".$temp_current."'>首页</a> ";
aomeng(冰雪六月)那个查询可以这么用的,你用过就知道了,第一个地方多谢提醒了,谢谢拉。
Tryecho "<a href=".$fileself."pagenum=1>首页</a> ";
if ($_GET['pagenum']>1){
$temp_current=$_GET['pagenum']-1;
echo "<a href=".$fileself."pagenum=".$temp_current.">上一页</a> "; }
if ($_GET['pagenum']<$totalpage){
$temp_current=$_GET['pagenum']+1;
echo "<a href=".$fileself."pagenum=".$temp_current.">下一页</a> "; }
echo "<a href=".$fileself."pagenum=".$totalpage.">尾页</a> ";===>echo "<a href=".$fileself."?pagenum=1>首页</a> ";
if ($_GET['pagenum']>1){
$temp_current=$_GET['pagenum']-1;
echo "<a href=".$fileself."?pagenum=".$temp_current.">上一页</a> "; }
if ($_GET['pagenum']<$totalpage){
$temp_current=$_GET['pagenum']+1;
echo "<a href=".$fileself."?pagenum=".$temp_current.">下一页</a> "; }
echo "<a href=".$fileself."?pagenum=".$totalpage.">尾页</a> ";
用URL来传递参数的话,URL与第一个变量间以"?"链接。而变量间(带多个变量的时候)用"&"链接。
兄弟,用你上次那个程序能实现url参数传递分页吗,能不能弄个简单的模糊查询分页演示一下,我现在在搞session存储分页,不过希望把url传参也弄明白一下
谢拉!!!
还是我帮你写一个吧。
<?php
//在查询表单中放一个 hidden 类型的 submitflag
$pagesize = 20;
if(isset($_POST["submitflag"])){ //得到搜索关键字
$searchkey = $_POST["key"];
$page = 1;
}else{
$page = $_GET["key"];
$serchkey = $_GET["key"];
}
$querysql = "select * from dbname where field like '%$serchkey%' ";
$result = mysql_query($querysql);
$total = mysql_num_rows($result);
$query = sprintf("%s Limit %s,'%%s%'",$querysql, $page*$pagesize,$pagesize);
if($total>$pagesize){
while($page*$pagesize<$total){
printf("<a href='page=%s&key=%s'>%s</a>",$page,$key,$page);
$page++;
}
}
/*
数据处理
*/
?>我没有测试过,基本原理是这样的。
比如 test.php?a=1 取的a的值就是 $_GET["a"];
if(isset($_POST["submitflag"])){ //得到搜索关键字
$searchkey = $_POST["key"];
$page = 1;
}else{
$page = $_GET["key"];*********
$serchkey = $_GET["key"];这句有点疑问,是不是说我的查询关键字是一个人名,最后打出的page就是人名了》
比如test.php?page=人名