php 对查询结果集列表修改后,更新结果集列表的问题 php界面刷新 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 传统的页面中,要使页面显示修改的结果,就必须刷新原页面而在刷新时还需要从新提交查询条件你可以使修改的目标页位于 iframe 而避免跳转,从而保证了原来的查询连接不丢失你也可以使用 ajax,用返回的内容替换相应的内容,从而免去了刷新 我的页面关系逻辑是这样的:<html><frameset cols="17%,1%,82%"> <frame src="left.php" scrolling="no" frameBorder=0> <frame src="center.php" scrolling="no" frameBorder=0> <frame src="right.php" name="mainFrame" frameBorder=0></frameset></html><frame src="right.php" name="mainFrame" frameBorder=0> 我的操作都在这个frame中完成的,修改页面就是 right.php 里的一个隐藏div ,确认修改,就会post 到修改内容的php action代码页。我能不能在action 代码也做处理呢。怎么处理呢。可以提供例子看看吗。谢谢 虽然你用的是框架结构,但是对数据的操作都只是在 mainFrame 中完成的这与普通的单页面并无区别,只要刷新页面时带上查询条件就不会有问题 你现在执行是用跳转页面做的,需要把查询条件带过去,再带回来查询。if (isset($_POST['modid']) &&!empty($_POST['modid']) ) { try{ $id=$_POST['modid']; $email=$_POST['modemail']; $qq=$_POST['modqq']; $mobile=$_POST['modmobile']; $search=$_POST['search']; // 获取search,需用点修改按钮时也传过来 $rs = $config[DAOIMPL]->modUser($id,$email,$qq,$mobile); $arr = rs2Array($rs); if ($arr&&$arr[0]['error_no']==0) { #echo '<script language=javascript>alert("修改成功!");window.location.href="../right.php?go=-1</script>'; // 这句不知道你的right.php是怎样写,反正就是跳到你想去的page再加search就可以,用下面这句。 echo '<script language=javascript>alert("修改成功!");window.location.href="view/userSearchResult.php?search='.$search.'"</script>'; // 执行成功后,再搜寻一次,用获取的search条件。 } else{ echo '<script language=javascript>alert("修改失败,数据库操作出错!");"</script>'; } } catch (Exception $e){ echo '<script language=javascript>alert("修改失败,修改操作异常!");"</script>'; }} 再贴上view/userSearchResult.php 查询页代码。<?phpheader("Content-type: text/html;charset=gbk");//输出编码,避免中文乱码$needDb = true; //enable db//$includePath = dirname(__FILE__);require_once "../inc/constant.php";require_once "../inc/config.php";require_once "../dao/dbpool.php";require_once "../dao/wrapper.php";require_once "../dao/implements.php";require_once "../inc/util.php";$page=isset($_GET['page'])?intval($_GET['page']):1; //这句就是获取page=18中的page的值,假如不存在page,那么页数就是1。$searchinfo=isset($_GET['search'])?($_GET['search']):'-1'; $search=($searchinfo=='请输入关键字')?'-1':$searchinfo;$num=10; //每页显示10条数据echo $searchinfo.'</br>';echo $search.'</br>';/*首先咱们要获取数据库中到底有多少数据,才能判断具体要分多少页,具体的公式就是总数据库除以每页显示的条数,有余进一。也就是说10/3=3.3333=4 有余数就要进一。*/ if ($config[NEEDDB]) { //if need db $dbLink = DBPool::getLink($config[DBDRIVER]); $daoImpl = DAOImpl::getImpl($dbLink, $config[TABLEPRE][BACKEND]); $config[DBLINK] = $dbLink; $config[DAOIMPL] = $daoImpl;}$userRs = $config[DAOIMPL]->userSearchCount($search);//$adList = rs2Array($adRs);$userList=mysql_fetch_array($userRs);mysql_free_result($userRs);if(count($userList)>0){ $total=$userList[0]['cn']; //查询所有的数据}else{ $total=0;}echo '总条数:'.$total;$url='view/userSearchResult.php';//获取本页URL//页码计算$pagenum=ceil($total/$num); //获得总页数,也是最后一页$page=min($pagenum,$page);//获得首页$prepg=$page-1;//上一页$nextpg=($page==$pagenum ? 0 : $page+1);//下一页$offset=($page-1)*$num; //获取limit的第一个参数的值,假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。//开始分页导航条代码:$pagenav="显示第 <B>".($total?($offset+1):0)."</B>-<B>".min($offset+10,$total)."</B> 条记录,共 $total 条记录 ";//如果只有一页则跳出函数://if($pagenum<=1) return false;$pagenav.=" <a href=javascript:dopage('result','$url?page=1&search=$search');>首页</a> ";if($prepg) $pagenav.=" <a href=javascript:dopage('result','$url?page=$prepg&search=$search');>前页</a> "; else $pagenav.=" 前页 ";if($nextpg) $pagenav.=" <a href=javascript:dopage('result','$url?page=$nextpg&search=$search');>后页</a> "; else $pagenav.=" 后页 ";$pagenav.=" <a href=javascript:dopage('result','$url?page=$pagenum&search=$search');>尾页</a> ";$pagenav.="</select> 页,共 $pagenum 页";//假如传入的页数参数大于总页数,则显示错误信息If($page>$pagenum){ Echo "Error : Can Not Found The page ".$page; Exit;} $userSearchRs = $config[DAOIMPL]->getUserSearchInfo($search,$offset,$num);While($user=mysql_fetch_array($userSearchRs)){ echo "<div class='sylist_content' id='result'> <div class='sylistu1'> <input type='checkbox' class='sycheck' name='checkbox' id='checkbox".$user['id']."' value='". $user['id']."' /> </div> <div class='sylistu2' >".$user ['user_name']."</div> <div class='sylistu3' >".$user ['email']."</div> <div class='sylistu4' >".$user ['qq']."</div> <div class='sylistu5' >".$user ['mobile']."</div> <div class='sylistu6'>".$user['status']."</div> <div class='sylistu7' >".$user ['if_frozen']."</div> <div class='sylistu8'>".$user['enddate']."</div> <div class='sylistu9' >".$user ['peerid']."</div> </div>";}//显示数据echo "<div class='sylist_content' id='pagein'>".$pagenav."</div>"; ?> 我跳转到的页面right.php 是没有查询操作的,数据的查询是通过right.php页面中按钮来触发的。我能在加载页面后再触发这个按钮事件吗, 把查询条件的数组写进session就好了,没条件也更新成空数组,页码也写进去这样保证他编辑时session里有他最后进入的页面查询条件和页码写session还可以实现一些其他小扩展功能,比如查询历史,用户不小心关掉选项卡再进入还是最后一次查询等等不过它只适合网站后台,频繁写session不能用于大流量的页面 虽然你贴了许多代码,但并没有给解决问题带来线索在你的修改按钮操作代码中使用了 $_POST 变量,但你却没有给出 post 数据的来源返回的 ../right.php?go=-1 虽然不对,但意思是很明显的:表单提交产生了新页面,现在需要退回到原页面getContent 函数是用于刷新数据列表区域的,但从 dopage 函数的调用格式上看,应该是局部刷新的从 rigth.php 引入的 js 文件中,我看到了 ajax 字样。所以你至少有一部分操作是通过 ajax 完成的你可将提交由表单改为 ajax,然后在回调函数中调用 getContent 函数就可以了 [提问]PHP 读取 word COM 组件的错误信息 我很是无语啊!!!! 请问一下ajax从服务端读取返回字符串的长度 有没有限制 是多少呢 iis7.0+php上传特大文件解决方案。 PHP排列组合问题 请教为什么sqlite无法insert ? 菜鸟问题 请问谁能给我一个这个帖子里提到的 data_big5.php PHP的类中什么使用公有变量和私有成员函数? PHP如何调用百度云PCS的实现在客户端上传文件 关于php递归返回值的困惑 PHP的mysql插入请求返回无报错,但数据库未更新 这样做是为什么,帮忙看看好么 - -
而在刷新时还需要从新提交查询条件你可以使修改的目标页位于 iframe 而避免跳转,从而保证了原来的查询连接不丢失你也可以使用 ajax,用返回的内容替换相应的内容,从而免去了刷新
<frame src="center.php" scrolling="no" frameBorder=0>
<frame src="right.php" name="mainFrame" frameBorder=0></frameset></html>
<frame src="right.php" name="mainFrame" frameBorder=0> 我的操作都在这个frame中完成的,修改页面就是 right.php 里的一个隐藏div ,确认修改,就会post 到修改内容的php action代码页。我能不能在action 代码也做处理呢。怎么处理呢。可以提供例子看看吗。谢谢
这与普通的单页面并无区别,只要刷新页面时带上查询条件就不会有问题
try{
$id=$_POST['modid'];
$email=$_POST['modemail'];
$qq=$_POST['modqq'];
$mobile=$_POST['modmobile'];
$search=$_POST['search']; // 获取search,需用点修改按钮时也传过来
$rs = $config[DAOIMPL]->modUser($id,$email,$qq,$mobile);
$arr = rs2Array($rs);
if ($arr&&$arr[0]['error_no']==0) {
#echo '<script language=javascript>alert("修改成功!");window.location.href="../right.php?go=-1</script>'; // 这句不知道你的right.php是怎样写,反正就是跳到你想去的page再加search就可以,用下面这句。
echo '<script language=javascript>alert("修改成功!");window.location.href="view/userSearchResult.php?search='.$search.'"</script>'; // 执行成功后,再搜寻一次,用获取的search条件。
}
else{
echo '<script language=javascript>alert("修改失败,数据库操作出错!");"</script>';
}
}
catch (Exception $e){
echo '<script language=javascript>alert("修改失败,修改操作异常!");"</script>';
}
}
header("Content-type: text/html;charset=gbk");//输出编码,避免中文乱码$needDb = true; //enable db
//$includePath = dirname(__FILE__);
require_once "../inc/constant.php";
require_once "../inc/config.php";
require_once "../dao/dbpool.php";
require_once "../dao/wrapper.php";
require_once "../dao/implements.php";
require_once "../inc/util.php";
$page=isset($_GET['page'])?intval($_GET['page']):1; //这句就是获取page=18中的page的值,假如不存在page,那么页数就是1。
$searchinfo=isset($_GET['search'])?($_GET['search']):'-1';
$search=($searchinfo=='请输入关键字')?'-1':$searchinfo;
$num=10; //每页显示10条数据echo $searchinfo.'</br>';
echo $search.'</br>';
/*
首先咱们要获取数据库中到底有多少数据,才能判断具体要分多少页,具体的公式就是
总数据库除以每页显示的条数,有余进一。
也就是说10/3=3.3333=4 有余数就要进一。
*/
if ($config[NEEDDB]) { //if need db
$dbLink = DBPool::getLink($config[DBDRIVER]);
$daoImpl = DAOImpl::getImpl($dbLink, $config[TABLEPRE][BACKEND]);
$config[DBLINK] = $dbLink;
$config[DAOIMPL] = $daoImpl;
}
$userRs = $config[DAOIMPL]->userSearchCount($search);
//$adList = rs2Array($adRs);$userList=mysql_fetch_array($userRs);
mysql_free_result($userRs);
if(count($userList)>0){
$total=$userList[0]['cn']; //查询所有的数据
}
else{
$total=0;
}echo '总条数:'.$total;
$url='view/userSearchResult.php';//获取本页URL
//页码计算
$pagenum=ceil($total/$num); //获得总页数,也是最后一页
$page=min($pagenum,$page);//获得首页
$prepg=$page-1;//上一页
$nextpg=($page==$pagenum ? 0 : $page+1);//下一页
$offset=($page-1)*$num; //获取limit的第一个参数的值,假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。
//开始分页导航条代码:
$pagenav="显示第 <B>".($total?($offset+1):0)."</B>-<B>".min($offset+10,$total)."</B> 条记录,共 $total 条记录 ";
//如果只有一页则跳出函数:
//if($pagenum<=1) return false;
$pagenav.=" <a href=javascript:dopage('result','$url?page=1&search=$search');>首页</a> ";
if($prepg) $pagenav.=" <a href=javascript:dopage('result','$url?page=$prepg&search=$search');>前页</a> "; else $pagenav.=" 前页 ";
if($nextpg) $pagenav.=" <a href=javascript:dopage('result','$url?page=$nextpg&search=$search');>后页</a> "; else $pagenav.=" 后页 ";
$pagenav.=" <a href=javascript:dopage('result','$url?page=$pagenum&search=$search');>尾页</a> ";
$pagenav.="</select> 页,共 $pagenum 页";
//假如传入的页数参数大于总页数,则显示错误信息
If($page>$pagenum){
Echo "Error : Can Not Found The page ".$page;
Exit;
}
$userSearchRs = $config[DAOIMPL]->getUserSearchInfo($search,$offset,$num);While($user=mysql_fetch_array($userSearchRs)){
echo "<div class='sylist_content' id='result'>
<div class='sylistu1'>
<input type='checkbox' class='sycheck' name='checkbox'
id='checkbox".$user['id']."' value='". $user['id']."' />
</div>
<div class='sylistu2' >".$user ['user_name']."</div>
<div class='sylistu3' >".$user ['email']."</div>
<div class='sylistu4' >".$user ['qq']."</div>
<div class='sylistu5' >".$user ['mobile']."</div>
<div class='sylistu6'>".$user['status']."</div>
<div class='sylistu7' >".$user ['if_frozen']."</div>
<div class='sylistu8'>".$user['enddate']."</div>
<div class='sylistu9' >".$user ['peerid']."</div>
</div>";
}//显示数据echo "<div class='sylist_content' id='pagein'>".$pagenav."</div>";
?>
我跳转到的页面right.php 是没有查询操作的,数据的查询是通过right.php页面中按钮来触发的。我能在加载页面后再触发这个按钮事件吗,
这样保证他编辑时session里有他最后进入的页面查询条件和页码
写session还可以实现一些其他小扩展功能,比如查询历史,用户不小心关掉选项卡再进入还是最后一次查询等等
不过它只适合网站后台,频繁写session不能用于大流量的页面
在你的修改按钮操作代码中使用了 $_POST 变量,但你却没有给出 post 数据的来源
返回的 ../right.php?go=-1 虽然不对,但意思是很明显的:
表单提交产生了新页面,现在需要退回到原页面getContent 函数是用于刷新数据列表区域的,但从 dopage 函数的调用格式上看,应该是局部刷新的
从 rigth.php 引入的 js 文件中,我看到了 ajax 字样。所以你至少有一部分操作是通过 ajax 完成的你可将提交由表单改为 ajax,然后在回调函数中调用 getContent 函数就可以了