动态分页表格中循环创建checkbox按钮(导致checkbox名称一样),要求实现功能选定一行中的checkbox时候知道选定的是哪一行,然后将cgid传递到一个变量中去。
根据这个cgid进行数据库操作。
代码:
<!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=gb2312" />
<title>物资入库</title>
<script language='javascript'>
function sendRequest(){
var a=document.getElementById('chkRefId').value;
alert(a);
}
</script>
<style type="text/css">
<!--
.STYLE1 {
font-family: "汉仪雪君体简";
font-size: 30px;
color: #CC3300;
}
.STYLE2{
font-family: "汉仪雪君体简";
font-size: 20px;
color: #CC3300;
}
.STYLE3{
font-family: "汉仪雪君体简";
font-size: 10px;
color: #CC3300;
}
-->
</style>
</head><body>
<table width="1000" height="512" border="0" align="center">
<tr>
<td height="100" align="center" class="STYLE1">入库</td>
</tr>
<tr align="center">
<td height="300" valign="top" align="center">
<table width="856" align="center">
<tr bgcolor="#FF9933" align="center">
<td width="150" height="30" align="center">计划单号</td>
<td width="150" align="center">时间</td>
<td width="120" align="center">物资名称</td>
<td width="120" align="center">采购部门</td>
<td width="120" align="center">采购数量</td>
<td width="120" align="center">采购人</td>
<td width="50" align="center"></td>
</tr>
<?php
$conn = mssql_connect("(local)","sa","123456"); //链接SQL SERVER
$dbname = mssql_select_db("wzgl") or die("数据库不存在或不可用".mssql_error()); //选择数据库
$sql = "select * from cg where wc=0 order by cgid desc";
$result = mssql_query($sql);
$result1 = mssql_query($sql);
$count=0;
if(!$rs1=mssql_fetch_array($result1)){
echo "<script>alert('非常抱歉没有未完成的计划单')</script>";
}
else{
while($rs=mssql_fetch_array($result)){
$count++;
}
}
$pageSize=5;
if($_REQUEST['page']){
$page=$_REQUEST['page'];
if($count>0)//如果总记录数大于0
{
if($count<$pageSize) {$pageCount=1;}//总页数为1
if($count%$pageSize==0){ $pageCount=$count/$pageSize;}//获取它们相除的商,作为总页数
else{ $pageCount=intval($count/$pageSize)+1;}//获取它们相除的商,取其整数部分再加1,作为总页数
$offset=$pageSize*($page-1);
$sql = "select top ".$pageSize."* from rk where cgid not in (select top ".$offset."cgid from rk order by cgid desc )order by cgid desc";
$result = mssql_query($sql);
while($rs=mssql_fetch_array($result)){
?>
<tr bgcolor="#CCCCCC">
<td width="120" align="center">
<?php echo $rs['cgid']; ?></td>
<td width="180" align="center">
<?php echo $rs['cgtime'];?></td>
<td width="120" align="center">
<?php echo $rs['wzname']; ?></td>
<td width="120" align="center">
<?php echo $rs['bm'];?></td>
<td width="120" align="center">
<?php echo $rs['cgsl']; ?></td>
<td width="120" align="center">
<?php echo $rs['cgname']; ?></td>
<td width="50" align="center"><input name="chkRefId" type="checkbox" onclick="sendRequest();" value="<?php echo $rs['cgid']?>"/></td>
</tr>
<?php
}
}
}
?>
<tr>
<td height="50" colspan="8" bgcolor="#FFFFFF">
<div align="center" > 共 <b>
<?php echo $count ;?>
</b> 计划单, 页次: <b><font color=red>
<?php
echo $_REQUEST['page'];
?>
</font>/
<?php echo $pageCount;?>
</b>
<?php
if($_REQUEST['page']==1){
echo '<a href="rk.php?page='.($page+1).'">下一页</a>';}
else if($_REQUEST['page']==$pageCount)
{echo '<a href="rk.php?page='.($page-1).'"> 上一页</a>';}
else if($_REQUEST['page']<$pageCount&&$_REQUEST['page']>1){
echo '<a href="rk.php?page='.($page+1).'"> 上一页</a>';
echo '<a href="rk.php?page='.($page-1).'"> 下一页</a>';}
?></div> </td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
现在有2个问题:1.上面Javascript为测试用,但是得到始终是第一个checkbox的值;
2.我现在有2个方案
1是在本页面中判断哪个checkbox被选定并得到cgid的值,那么在什么地方触发checkbox的事件,因为还有1个确定按钮没有做,当单击确定按钮的时候根据cgid的值传送到PHP服务器端进行数据库操作,使用URL变量传递。
2是在选定的时候什么也不再,然后在提交的时候在服务器根据checkbox的check属性,得到其value值进行数据库操作。
哪一个方案好一点?具体怎么实现。
谢谢了,问题好像很多,就多给点分!
根据这个cgid进行数据库操作。
代码:
<!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=gb2312" />
<title>物资入库</title>
<script language='javascript'>
function sendRequest(){
var a=document.getElementById('chkRefId').value;
alert(a);
}
</script>
<style type="text/css">
<!--
.STYLE1 {
font-family: "汉仪雪君体简";
font-size: 30px;
color: #CC3300;
}
.STYLE2{
font-family: "汉仪雪君体简";
font-size: 20px;
color: #CC3300;
}
.STYLE3{
font-family: "汉仪雪君体简";
font-size: 10px;
color: #CC3300;
}
-->
</style>
</head><body>
<table width="1000" height="512" border="0" align="center">
<tr>
<td height="100" align="center" class="STYLE1">入库</td>
</tr>
<tr align="center">
<td height="300" valign="top" align="center">
<table width="856" align="center">
<tr bgcolor="#FF9933" align="center">
<td width="150" height="30" align="center">计划单号</td>
<td width="150" align="center">时间</td>
<td width="120" align="center">物资名称</td>
<td width="120" align="center">采购部门</td>
<td width="120" align="center">采购数量</td>
<td width="120" align="center">采购人</td>
<td width="50" align="center"></td>
</tr>
<?php
$conn = mssql_connect("(local)","sa","123456"); //链接SQL SERVER
$dbname = mssql_select_db("wzgl") or die("数据库不存在或不可用".mssql_error()); //选择数据库
$sql = "select * from cg where wc=0 order by cgid desc";
$result = mssql_query($sql);
$result1 = mssql_query($sql);
$count=0;
if(!$rs1=mssql_fetch_array($result1)){
echo "<script>alert('非常抱歉没有未完成的计划单')</script>";
}
else{
while($rs=mssql_fetch_array($result)){
$count++;
}
}
$pageSize=5;
if($_REQUEST['page']){
$page=$_REQUEST['page'];
if($count>0)//如果总记录数大于0
{
if($count<$pageSize) {$pageCount=1;}//总页数为1
if($count%$pageSize==0){ $pageCount=$count/$pageSize;}//获取它们相除的商,作为总页数
else{ $pageCount=intval($count/$pageSize)+1;}//获取它们相除的商,取其整数部分再加1,作为总页数
$offset=$pageSize*($page-1);
$sql = "select top ".$pageSize."* from rk where cgid not in (select top ".$offset."cgid from rk order by cgid desc )order by cgid desc";
$result = mssql_query($sql);
while($rs=mssql_fetch_array($result)){
?>
<tr bgcolor="#CCCCCC">
<td width="120" align="center">
<?php echo $rs['cgid']; ?></td>
<td width="180" align="center">
<?php echo $rs['cgtime'];?></td>
<td width="120" align="center">
<?php echo $rs['wzname']; ?></td>
<td width="120" align="center">
<?php echo $rs['bm'];?></td>
<td width="120" align="center">
<?php echo $rs['cgsl']; ?></td>
<td width="120" align="center">
<?php echo $rs['cgname']; ?></td>
<td width="50" align="center"><input name="chkRefId" type="checkbox" onclick="sendRequest();" value="<?php echo $rs['cgid']?>"/></td>
</tr>
<?php
}
}
}
?>
<tr>
<td height="50" colspan="8" bgcolor="#FFFFFF">
<div align="center" > 共 <b>
<?php echo $count ;?>
</b> 计划单, 页次: <b><font color=red>
<?php
echo $_REQUEST['page'];
?>
</font>/
<?php echo $pageCount;?>
</b>
<?php
if($_REQUEST['page']==1){
echo '<a href="rk.php?page='.($page+1).'">下一页</a>';}
else if($_REQUEST['page']==$pageCount)
{echo '<a href="rk.php?page='.($page-1).'"> 上一页</a>';}
else if($_REQUEST['page']<$pageCount&&$_REQUEST['page']>1){
echo '<a href="rk.php?page='.($page+1).'"> 上一页</a>';
echo '<a href="rk.php?page='.($page-1).'"> 下一页</a>';}
?></div> </td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
现在有2个问题:1.上面Javascript为测试用,但是得到始终是第一个checkbox的值;
2.我现在有2个方案
1是在本页面中判断哪个checkbox被选定并得到cgid的值,那么在什么地方触发checkbox的事件,因为还有1个确定按钮没有做,当单击确定按钮的时候根据cgid的值传送到PHP服务器端进行数据库操作,使用URL变量传递。
2是在选定的时候什么也不再,然后在提交的时候在服务器根据checkbox的check属性,得到其value值进行数据库操作。
哪一个方案好一点?具体怎么实现。
谢谢了,问题好像很多,就多给点分!
又及,input的id和name在ie中有个小bug,所以两个都写比较好 = =<input name="chkRefId<?php echo $rs['cgid']; ?>" id="chkRefId<?php echo $rs['cgid']; ?>" type="checkbox" onclick="var a= document.getElementById('chkRefId<?php echo $rs['cgid']; ?>').value;
alert(a);" value<?php echo $rs['cgid']?>"/>
楼主是想选中那一个,就提交那个;还是说只要是checkbox=ture的全部都提交?
唔…还想提醒一下,上面写的不小心少打了个等号和引号 = =||
用jquery实现起来比较简单.如果有一个被选中,就让button变可用.如果没有被选中,button是禁用的.
至于提交,可以用form提交,也可以用ajax获取checkbox是否选中来提交.jQuery(function($){
$(".tomt").each(function(){
$(this).change(function(){
if(this.checked && $('#StartMT').attr('disabled'))
{
$('#StartMT').attr('disabled', false);
return;
} if(!this.checked && !$('#StartMT').attr('disabled'))
{
var flag = true;
$("#list .tomt").each(function(){
if(this.checked)
{
flag = false;
return false;
}
});
$('#StartMT').attr('disabled', flag);
return;
}
});//change
});//list .tomt $('#StartMT').click(function(){
if(confirm("Do you want to change those ips's status to 'Awaiting_MT'?"))
$("form")[0].submit();
});
});<form name='ttt' method='post' action=''>
<input type='button' name='StartMT' id='StartMT' disabled value='StartToMT'/><input class='tomt' type='checkbox' name='mt[]' value='12'/>
<input class='tomt' type='checkbox' name='mt[]' value='11'/>
<input class='tomt' type='checkbox' name='mt[]' value='13'/>
</form>
var xmlHttp;
function sendRequest(cgid,a){
if(a==true){
createXMLHTTP();
var url="response1.php?cgid="+cgid;
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=updatesl;
xmlHttp.send(null);
}}
function createXMLHTTP(){
if(window.XMLHttpRequest){xmlHttp=new XMLHttpRequest();}
else if(window.ActiveXObject){
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){}
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){}
if(!xmlHttp){
window.alert("不能创建XMLHttpRequest对象实例");
return false;
}
}
}
function updatesl(){
if(xmlHttp.readyState==4){
if(xmlHttp.status==200){
if(xmlHttp.responseText){
alert("入库成功");
location.href='rk.php?page=1';
}
else{
alert("入库失败");
location.href='rk.php?page=1';
}
}
}
}
</script>通过url="response1.php?cgid="+cgid;将cgid的值传递到response1.php中执行:<?php
$conn = mssql_connect("(local)","sa","123456"); //链接SQL SERVER
$dbname = mssql_select_db("wzgl") or die("数据库不存在或不可用".mssql_error()); //选择数据库
$cgid=$_REQUEST['cgid'];
$sql1="select * from rk where cgid='".$cgid."'";
$result1=mssql_query($sql1);
$rs1=mssql_fetch_array($result1);
if($rs1){
$cgsl=$rs1['cgsl'];
$wzname=$rs1['wzname'];
}
$sql2="update cg set wc=1 where cgid='".$cgid."'";
$result2=mssql_query($sql2);
$sql3="select * from wzkc where wzname='".$wzname."'";
$result3=mssql_query($sql3);
$rs3=mssql_fetch_array($result3);
if($rs3){
$kcsl1=$rs3['kcsl1'];
}
$cgsl1=$cgsl+$kcsl1;
$sql4="update wzkc set kcsl1 =".$cgsl1." where wzname ='".$wzname."'";
$result4=mssql_query($sql4);
echo "true";
?>这样实现了无页面跳转的刷新数据项了