php 对查询结果集列表修改后,更新结果集列表的问题

鄙人姓胡 2014-06-14 03:11:59
问题描述:通过查询按钮查询出对应结果集后,在页面上绘制能列表,然后通过增删改操作按钮对数据进行操作,操作完成后,希望能再刷新结果集列表(查询条件还是修改前的查询条件)。
我现在是显示了查询,修改等操作,然后卡在修改后再次刷新结果集这个问题上了
贴上我实现的代码:
查询操作:

<div class="syss">
<div class="sylg_search">
<input type="text" class="sylg_s_txt" id="search" onfocus="if(this.value=='请输入关键字') {this.value='';}" onblur="if(this.value==''){this.value='请输入关键字'}" value="请输入关键字" />
</div>
</div>
<div class="syssbtn">
<input type="button" class="sylg_s_btn" value="" onclick="getContent()"/>
</div>
<div class='sylist_content' id="result">
//查询结果展示区
</div>
///查询按钮对应的function
function getContent(){
var search=document.getElementById("search").value;
dopage('result', 'view/userSearchResult.php?search='+search);

}


//function 中dopage 就是我的查询处理页(负责查询,分页)






修改按钮操作代码:

if (isset($_POST['modid']) &&!empty($_POST['modid']) ) {
try{
$id=$_POST['modid'];
$email=$_POST['modemail'];
$qq=$_POST['modqq'];
$mobile=$_POST['modmobile'];
$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>';

}
else{
echo '<script language=javascript>alert("修改失败,数据库操作出错!");"</script>';
}
}
catch (Exception $e){
echo '<script language=javascript>alert("修改失败,修改操作异常!");"</script>';
}
}



修改操作代码说明:当修改操作执行成功后,我希望能后刷新查新区域div class='sylist_content' id="result"> </div>;
目前这样写只能让界面跳转到我的查询初始界面不能执行查询操作。这个地方不知道怎么做了。
求大神指点
...全文
614 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2014-06-15
  • 打赏
  • 举报
回复
虽然你贴了许多代码,但并没有给解决问题带来线索 在你的修改按钮操作代码中使用了 $_POST 变量,但你却没有给出 post 数据的来源 返回的 ../right.php?go=-1 虽然不对,但意思是很明显的: 表单提交产生了新页面,现在需要退回到原页面 getContent 函数是用于刷新数据列表区域的,但从 dopage 函数的调用格式上看,应该是局部刷新的 从 rigth.php 引入的 js 文件中,我看到了 ajax 字样。所以你至少有一部分操作是通过 ajax 完成的 你可将提交由表单改为 ajax,然后在回调函数中调用 getContent 函数就可以了
智商众筹 2014-06-14
  • 打赏
  • 举报
回复
把查询条件的数组写进session就好了,没条件也更新成空数组,页码也写进去 这样保证他编辑时session里有他最后进入的页面查询条件和页码 写session还可以实现一些其他小扩展功能,比如查询历史,用户不小心关掉选项卡再进入还是最后一次查询等等 不过它只适合网站后台,频繁写session不能用于大流量的页面
鄙人姓胡 2014-06-14
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
虽然你用的是框架结构,但是对数据的操作都只是在 mainFrame 中完成的 这与普通的单页面并无区别,只要刷新页面时带上查询条件就不会有问题
我跳转到的页面right.php 是没有查询操作的,数据的查询是通过right.php页面中按钮来触发的。我能在加载页面后再触发这个按钮事件吗,
鄙人姓胡 2014-06-14
  • 打赏
  • 举报
回复
再贴上view/userSearchResult.php 查询页代码。

<?php
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>";
   
?>
鄙人姓胡 2014-06-14
  • 打赏
  • 举报
回复
贴上rigth.php 代码


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<meta name="viewport" content="user-scalable=no"></meta>
<title>首页</title>
<link href="css/sy.css" rel="stylesheet" type="text/css"></link>
<link href="css/tc.css" rel="stylesheet" type="text/css"></link>
<link rel="stylesheet" type="text/css" href="css/style.css" media="screen"/> 
<script src="js/popdiv.js"></script>
<script src="js/cookie.js"></script>
<script src="js/bus.js"></script>
<script src="js/ajaxpage.js"></script>

<style type="text/css">
.msgDiv {
	position: absolute;
	margin:0 auto;
	display: none;
}

.msgDiv h1 {
	margin: 0px;
	padding: 5px 3px 0px 3px;
	height: 20px;
	background: #F4FAFF;
	font-weight: normal;
	font-size: 12px;
}

.msgDiv h1 span {
	float: right
}
</style>
<script>
function modUserInfo()
{
var str=document.getElementsByName("checkbox");
var objarray=str.length;
var chestr="";
for (i=0;i<objarray;i++)
{
  if(str[i].checked == true)
  {
   chestr+=str[i].value;
   
   break;
  } 
}
if(chestr){
updateData(chestr);
controlDiv('xgDiv',1);
}
else{alert("请选择一条数据进行操作");}
}

function viewUserInfo()
{
var str=document.getElementsByName("checkbox");
var objarray=str.length;
var viewID="";
for (i=0;i<objarray;i++)
{
  if(str[i].checked == true)
  {
	  viewID+=str[i].value;  
   break;
  } 
}
if(viewID){	
updateData01(viewID);
controlDiv('ckDiv',1);
}
else{
	alert("请选择一条数据进行操作");
}
}


function delUserInfo()
{
var str=document.getElementsByName("checkbox");
var objarray=str.length;
var chestr="";
for (i=0;i<objarray;i++)
{
  if(str[i].checked == true)
  {
   chestr+=str[i].value;
   
   break;
  } 
}
if(chestr){
controlDiv('scDiv',1);
}
else{alert("请选择一条数据进行操作");}
}

function extendUser()
{
var str=document.getElementsByName("checkbox");
var objarray=str.length;
var chestr="";
for (i=0;i<objarray;i++)
{
  if(str[i].checked == true)
  {
   chestr+=str[i].value;
   
   break;
  } 
}
if(chestr){
controlDiv('yqDiv',1);
}
else{alert("请选择一条数据进行操作");}
}


function getContent(){		
	var search=document.getElementById("search").value;
	alert(search);
	dopage('result', 'view/userSearchResult.php?search='+search);

}

function freezeUser()
{

var str=document.getElementsByName("checkbox");
var objarray=str.length;
var chestr="";
for (i=0;i<objarray;i++)
{
  if(str[i].checked == true)
  {
   chestr+=str[i].value;
   
   break;
  } 
}
if(chestr){
controlDiv('djDiv',1);
}
else{alert("请选择一条数据进行操作");}
}



function unfreezeUser()
{
var str=document.getElementsByName("checkbox");
var objarray=str.length;
var chestr="";
for (i=0;i<objarray;i++)
{
  if(str[i].checked == true)
  {
   chestr+=str[i].value;
   
   break;
  } 
}
if(chestr){
//updateData(chestr);
controlDiv('jdDiv',1);
}
else{alert("请选择一条数据进行操作");}
}

function grantUser()
{
var str=document.getElementsByName("checkbox");
var objarray=str.length;
var chestr="";
for (i=0;i<objarray;i++)
{
  if(str[i].checked == true)
  {
   chestr+=str[i].value;
   
   break;
  } 
}
if(chestr){
//updateData(chestr);
controlDiv('sqDiv',1);
}
else{alert("请选择一条数据进行操作");}
}

</script>
</head>
<body>
	<div style="width: 100%; height: auto;">


		<!---右边-->
		<div class="syright">
			<div class="syrighta">
				<div class="syss">
					<div class="sylg_search">
						<input type="text" class="sylg_s_txt" id="search" onfocus="if(this.value=='请输入关键字') {this.value='';}"  onblur="if(this.value==''){this.value='请输入关键字'}" value="请输入关键字" />
					</div>
				</div>
				<div class="syssbtn">
					<input type="button" class="sylg_s_btn" value="" onclick="getContent()"/>
				</div>

				<div style="width: 20%; height: 80px; float: right;">
					<div class="sylg_wz" style="float: right; margin-right: 20px;">
						您好,admin<br /> <a href="logout.php" target='_top'>退出</a>
					</div>
				</div>

			</div>

			<div class="syright_content">
				<div class="syline" style="width: 100%;"></div>				
				<div class="sybtn_div"
					style="width: 100%; text-align: right; float: right;">
					<input type="button" class="syadda" onclick="controlDiv('xzDiv',1)" />
					<input type="button" class="sydelete"
						onclick="delUserInfo()" /> <input type="button"
						class="symodify" onclick="modUserInfo()"/> <input
						type="button" class="syview" onclick="viewUserInfo()" />
						<input type="button"
						class="sygrant" onclick="grantUser()"/>
						<input type="button"
						class="syfreeze" onclick="freezeUser()"/>
						<input type="button"
						class="syunfreeze" onclick="unfreezeUser()"/>
						<input type="button"
						class="syextend" onclick="extendUser()"/>
				</div>

				
				<div class="sylist_div" style="text-align: center;" >
				
				<div id="demo2"></div>
				<div class='sylist_title'>
						<div class='sylistu1a'>
							<input type='checkbox' class='check' />
						</div>
						<div class='sylistu2a'>用户名</div>
						<div class='sylistu3a'>邮件</div>
						<div class='sylistu4a'>QQ</div>
						<div class='sylistu5a'>电话</div>						
						<div class='sylistu6a'>是否正式客户</div>
						<div class='sylistu7a'>是否冻结</div>
						<div class='sylistu8a'>截止日期</div>
						<div class='sylistu9a'>PeerID</div>
					</div>
					<div class='sylist_content' id="result">	     
					
					</div>
				</div>

			</div>
		
		</div>
</div>
	<!-- 修改用户信息div -->
	<div id="xgDiv" class="msgDiv">	
 <?php 	

	 require_once 'view/tc_xg.php';
	?>
 </div>

	<!-- 删除用户信息div -->
	<div id="scDiv" class="msgDiv">
 <?php
	require_once 'view/tc_sc.php';
	?>
 </div>
	<!-- 新增用户信息div -->
	<div id="xzDiv" class="msgDiv">
 <?php
	require_once 'view/tc_xz.php';
	?>
 </div>
	<!-- 查看用户信息div -->
	<div id="ckDiv" class="msgDiv">
 <?php
	require_once 'view/tc_ck.php';
	?>
 </div>
   <!-- 用户授权信息div -->
	<div id="sqDiv" class="msgDiv">
 <?php
	require_once 'view/tc_sq.php';
	?>
 </div>
 <!-- 冻结用户信息div -->
	<div id="djDiv" class="msgDiv">
 <?php
	require_once 'view/tc_dj.php';
	?>
 </div>
 <!-- 解冻用户信息div -->
	<div id="jdDiv" class="msgDiv">
 <?php
	require_once 'view/tc_jd.php';
	?>
 </div>
  <!-- 延期用户信息div -->
	<div id="yqDiv" class="msgDiv">
 <?php
	require_once 'view/tc_yq.php';
	?>
 </div>
</body>
</html>
傲雪星枫 2014-06-14
  • 打赏
  • 举报
回复
你现在执行是用跳转页面做的,需要把查询条件带过去,再带回来查询。

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>';
    }
}
xuzuning 2014-06-14
  • 打赏
  • 举报
回复
虽然你用的是框架结构,但是对数据的操作都只是在 mainFrame 中完成的 这与普通的单页面并无区别,只要刷新页面时带上查询条件就不会有问题
鄙人姓胡 2014-06-14
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
传统的页面中,要使页面显示修改的结果,就必须刷新原页面 而在刷新时还需要从新提交查询条件 你可以使修改的目标页位于 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 代码也做处理呢。怎么处理呢。可以提供例子看看吗。谢谢
xuzuning 2014-06-14
  • 打赏
  • 举报
回复
传统的页面中,要使页面显示修改的结果,就必须刷新原页面 而在刷新时还需要从新提交查询条件 你可以使修改的目标页位于 iframe 而避免跳转,从而保证了原来的查询连接不丢失 你也可以使用 ajax,用返回的内容替换相应的内容,从而免去了刷新
鄙人姓胡 2014-06-14
  • 打赏
  • 举报
回复
求大神,求大神
鄙人姓胡 2014-06-14
  • 打赏
  • 举报
回复
自己顶起来。

21,893

社区成员

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

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