按照要求是以GET的方式接受一个文件中表单传来的数值,再以表格形式输出的,
而且用了AJAX的run()函数,函数触发后会将数值给另一个页面处理.本
来应该可以添加,删除资料的.但是现在只能输出一张空表格,不能添加修改资料<?php
require "fun.php";
header("Content-type:text/html;charset=utf-8");
$KCName=$_GET['KCName'];
$ZYName=$_GET['ZYName'];
echo "<br><div align=center class=STYLE2>$KCName</div>"; //输出课程名
echo "<table width=450 border=1 align=center cellpadding=0 cellspacing=0 class=STYLE1>";
echo "<tr bgcolor=#CCCCCC height=25 align=center><td>学号</td>";
echo "<td>姓名</td>";
echo "<td>成绩</td>";
echo "<td width=160>操作</td></tr>";
if(!$KCName&&!$ZYName) //课程名和专业都为空则输出一张空表
{
for ($i=0;$i<11;$i++)
{
echo "<tr height=28><td> </td><td> </td><td> </td><td> </td>";
}
}
else
{
if($KCName=="请选择") //如果未选择课程则进行相应提示
echo "<script>alert('请选择课程!');location.href='AddStuScore.php';</script>";
else
{
$total=0; //初始化总记录数的值为0
if($ZYName=="请选择")
{
$XS_sql="select XH,XM from XSB";
}
else
{
$XS_sql="select XH,XM from XSB where ZY='$ZYName'";
}
$XS_result=mysql_query($XS_sql);
$total=mysql_num_rows($XS_result);
//获取地址栏中page的值不存在则设为1
$page=isset($_GET['page'])?intval($_GET['page']):1;
$url='AddStuScore.php';
//页码计算
$num=10; //每页显示10条记录
$pagenum=ceil($total/$num); //获得总页数,也是最后一页
$page=min($pagenum,$page); //获得首页
$prepg=$page-1; //上一页
$nextpg=($page==$pagenum?0:$page+1); //下一页
$offset=($page-1)*$num; //获得本页记录数的起始值
$endnum=$offset+$num; //获得本页记录数最大值
//查找从($offset+1)行到($endnum)行的记录
$new_sql=$XS_sql."limit".($page-1)*$num.",".$num;
$new_result=mysql_query($new_sql); //执行查询语句
while($new_row=mysql_fetch_array($new_result))
{
list($number,$name)=$new_row; //列出结果值
//查找成绩的SQL语句
$CJ_sql="select CJ from CJB where XH='$number' and KCH=(select KCH from KCB where KCM='$KCName')";
$CJ_result=mysql_query($CJ_sql);
$CJ_row=mysql_fetch_array($CJ_result);
$points=$CJ_row['CJ']; //取出成绩值
//设置一个隐藏控件用于存放课程名
echo "<input type=hidden value=$KCName id='course'>";
//输出学号
echo "<tr class=STYLE1 align=center><td width=110>$number</td>";
echo "<td width=110>$name</td>"; //输出姓名
//在文本框中输出成绩
echo "<td width=110><input id='points-$number' type=text siza=12 value=$points></td>";
//设置保存超链接,单击超链接时调用run()函数
echo "<td><a href=# onclick=\"run(this.id,'$number')\" id='keep-$number'>保存</a> ";
//设置删除超链接
echo "<td><a href=# onclick=\"run(this.id,'$number')\" id='delete-$number'>删除</a></td></tr>";
}
echo "</table>";
//开始分页导航条代码
$pagenav="";
if($prepg)
$pagenav.="<a href='$url?page=$prepg&KCName=$KCName&ZYName=$ZYName'>上一页</a>";
for($i=1;$i<=$pagenum;$i++)
{
if($page==$i) $pagenav.=$i."";
else
$pagenav.="<a href='$url?page=$i&KCName=$KCName&ZYName=$ZYName'>$i</a>";
}
if($nextpg)
$pagenav.="<a href='$url?page=$nextpg&KCName=$KCName&ZYName=$ZYName'>下一页</a>";
$pagenav.="共(".$pagenum.")页";
echo "<br><div align=center class=STYLE1><b>".$pagenav."</b></div>"; //输出分页导航
}
}
?>
<script>
//是用AJAX无刷新技术
var xmlHttp; //定义一个XMLHTTP变量
function GetXmlHttpObject() //XMLHTTP的实例化函数用于创建一个XMLHTTP对象
{
var xmlHttp=null;
try
{
xmlHttp=new XMLHttpRequest();
}
catch(e)
{
try
{
ttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
mlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
//run()函数的参数str是超链接的id,num是成绩文本框id的后缀
function run(str,num)
{
//调用GetXmlHttpObject()创建一个XMLHTTP对象
xmlHttp=GetXmlHttpObject();
var kcname=document.getElementById("course").value; //得到课程名
var points=document.getElementById("points-"+num).value; //得到文本框中的成绩值
var url="StuCJ.php"; //服务器端在StuCJ,php中处理
url=url+"?id="+str+"&points="+points+"&kcname="+kcname; //url地址,以GET方式传递
//添加一个随机数,以防服务器是使用缓存的文件
url=url+"&sid="+Math.random();
//通过给定的URL打开XMLHTTP对象
xmlHttp.open("GET",url,TRUE);
xmlHttp.send(null); //向服务器发送HTTP请求
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4||xmlHttp.readyState=="complete")
{
alert(xmlHttp.responseText); //弹出对话框提示操作结果
//如果执行课删除动作就将成绩文本框中的值清空
if(xmlHttp.responseText=='删除成功!')
document.getElementById("points-"+num).value="";
}
}
}
</script>下面是处理资料可以进行添加修改的代码<?php
require "fun.php";
header("Content-type:text/html;charset=utf-8");
$id=$_GET['id']; //单击超链接获得ID值
$kcname=@$_GET['kcname'];
$points=$_GET['points'];
$array=explode("-",$id); //将字符串$id分解成数组
$action=$array[0]; //数组第一个值为单击的超链接的动作,keep或delete
$number=$array[1]; //第二个值为当前行的学号
//查询课程号
$kc_sql="select KCH grom KCB where KCM='$kcname'";
$kc_result=mysql_query($kc_sql);
$kc_row=mysql_fetch_array($kc_result);
$kcnumber=$kc_row['KCH'];
if($action=="keep") //如果单击了保存超链接
{
if($points)
{
//调用储存过程CJ_DATA实现成绩的插入和修改
$cj_sql="CALL CJ_DATA('$number','$kcnumber',$points)";
$cj_result=mysql_query($cj_sql);
if($cj_result)
echo "保存成功!";
else
echo "保存失败!";
}
else
echo "成绩值为空,请输入成绩!";
}
if($action=="delete") //如果单击了删除链接
{
//调用储存过程CJ_DATA,成绩参数的值设为-1
$cj_sql="CALL CJ_DATA('$number','$kcnumber',-1)";
$cj_result=mysql_query($cj_sql);
if(mysql_affected_rows($conn)!=0)
echo "删除成功!";
else
echo "删除失败!";
}
?>
而且用了AJAX的run()函数,函数触发后会将数值给另一个页面处理.本
来应该可以添加,删除资料的.但是现在只能输出一张空表格,不能添加修改资料<?php
require "fun.php";
header("Content-type:text/html;charset=utf-8");
$KCName=$_GET['KCName'];
$ZYName=$_GET['ZYName'];
echo "<br><div align=center class=STYLE2>$KCName</div>"; //输出课程名
echo "<table width=450 border=1 align=center cellpadding=0 cellspacing=0 class=STYLE1>";
echo "<tr bgcolor=#CCCCCC height=25 align=center><td>学号</td>";
echo "<td>姓名</td>";
echo "<td>成绩</td>";
echo "<td width=160>操作</td></tr>";
if(!$KCName&&!$ZYName) //课程名和专业都为空则输出一张空表
{
for ($i=0;$i<11;$i++)
{
echo "<tr height=28><td> </td><td> </td><td> </td><td> </td>";
}
}
else
{
if($KCName=="请选择") //如果未选择课程则进行相应提示
echo "<script>alert('请选择课程!');location.href='AddStuScore.php';</script>";
else
{
$total=0; //初始化总记录数的值为0
if($ZYName=="请选择")
{
$XS_sql="select XH,XM from XSB";
}
else
{
$XS_sql="select XH,XM from XSB where ZY='$ZYName'";
}
$XS_result=mysql_query($XS_sql);
$total=mysql_num_rows($XS_result);
//获取地址栏中page的值不存在则设为1
$page=isset($_GET['page'])?intval($_GET['page']):1;
$url='AddStuScore.php';
//页码计算
$num=10; //每页显示10条记录
$pagenum=ceil($total/$num); //获得总页数,也是最后一页
$page=min($pagenum,$page); //获得首页
$prepg=$page-1; //上一页
$nextpg=($page==$pagenum?0:$page+1); //下一页
$offset=($page-1)*$num; //获得本页记录数的起始值
$endnum=$offset+$num; //获得本页记录数最大值
//查找从($offset+1)行到($endnum)行的记录
$new_sql=$XS_sql."limit".($page-1)*$num.",".$num;
$new_result=mysql_query($new_sql); //执行查询语句
while($new_row=mysql_fetch_array($new_result))
{
list($number,$name)=$new_row; //列出结果值
//查找成绩的SQL语句
$CJ_sql="select CJ from CJB where XH='$number' and KCH=(select KCH from KCB where KCM='$KCName')";
$CJ_result=mysql_query($CJ_sql);
$CJ_row=mysql_fetch_array($CJ_result);
$points=$CJ_row['CJ']; //取出成绩值
//设置一个隐藏控件用于存放课程名
echo "<input type=hidden value=$KCName id='course'>";
//输出学号
echo "<tr class=STYLE1 align=center><td width=110>$number</td>";
echo "<td width=110>$name</td>"; //输出姓名
//在文本框中输出成绩
echo "<td width=110><input id='points-$number' type=text siza=12 value=$points></td>";
//设置保存超链接,单击超链接时调用run()函数
echo "<td><a href=# onclick=\"run(this.id,'$number')\" id='keep-$number'>保存</a> ";
//设置删除超链接
echo "<td><a href=# onclick=\"run(this.id,'$number')\" id='delete-$number'>删除</a></td></tr>";
}
echo "</table>";
//开始分页导航条代码
$pagenav="";
if($prepg)
$pagenav.="<a href='$url?page=$prepg&KCName=$KCName&ZYName=$ZYName'>上一页</a>";
for($i=1;$i<=$pagenum;$i++)
{
if($page==$i) $pagenav.=$i."";
else
$pagenav.="<a href='$url?page=$i&KCName=$KCName&ZYName=$ZYName'>$i</a>";
}
if($nextpg)
$pagenav.="<a href='$url?page=$nextpg&KCName=$KCName&ZYName=$ZYName'>下一页</a>";
$pagenav.="共(".$pagenum.")页";
echo "<br><div align=center class=STYLE1><b>".$pagenav."</b></div>"; //输出分页导航
}
}
?>
<script>
//是用AJAX无刷新技术
var xmlHttp; //定义一个XMLHTTP变量
function GetXmlHttpObject() //XMLHTTP的实例化函数用于创建一个XMLHTTP对象
{
var xmlHttp=null;
try
{
xmlHttp=new XMLHttpRequest();
}
catch(e)
{
try
{
ttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
mlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
//run()函数的参数str是超链接的id,num是成绩文本框id的后缀
function run(str,num)
{
//调用GetXmlHttpObject()创建一个XMLHTTP对象
xmlHttp=GetXmlHttpObject();
var kcname=document.getElementById("course").value; //得到课程名
var points=document.getElementById("points-"+num).value; //得到文本框中的成绩值
var url="StuCJ.php"; //服务器端在StuCJ,php中处理
url=url+"?id="+str+"&points="+points+"&kcname="+kcname; //url地址,以GET方式传递
//添加一个随机数,以防服务器是使用缓存的文件
url=url+"&sid="+Math.random();
//通过给定的URL打开XMLHTTP对象
xmlHttp.open("GET",url,TRUE);
xmlHttp.send(null); //向服务器发送HTTP请求
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4||xmlHttp.readyState=="complete")
{
alert(xmlHttp.responseText); //弹出对话框提示操作结果
//如果执行课删除动作就将成绩文本框中的值清空
if(xmlHttp.responseText=='删除成功!')
document.getElementById("points-"+num).value="";
}
}
}
</script>下面是处理资料可以进行添加修改的代码<?php
require "fun.php";
header("Content-type:text/html;charset=utf-8");
$id=$_GET['id']; //单击超链接获得ID值
$kcname=@$_GET['kcname'];
$points=$_GET['points'];
$array=explode("-",$id); //将字符串$id分解成数组
$action=$array[0]; //数组第一个值为单击的超链接的动作,keep或delete
$number=$array[1]; //第二个值为当前行的学号
//查询课程号
$kc_sql="select KCH grom KCB where KCM='$kcname'";
$kc_result=mysql_query($kc_sql);
$kc_row=mysql_fetch_array($kc_result);
$kcnumber=$kc_row['KCH'];
if($action=="keep") //如果单击了保存超链接
{
if($points)
{
//调用储存过程CJ_DATA实现成绩的插入和修改
$cj_sql="CALL CJ_DATA('$number','$kcnumber',$points)";
$cj_result=mysql_query($cj_sql);
if($cj_result)
echo "保存成功!";
else
echo "保存失败!";
}
else
echo "成绩值为空,请输入成绩!";
}
if($action=="delete") //如果单击了删除链接
{
//调用储存过程CJ_DATA,成绩参数的值设为-1
$cj_sql="CALL CJ_DATA('$number','$kcnumber',-1)";
$cj_result=mysql_query($cj_sql);
if(mysql_affected_rows($conn)!=0)
echo "删除成功!";
else
echo "删除失败!";
}
?>
你先装个firebug先调试下先吧。
那就是这个分支的问题喽,print_r($_GET);
if(!$KCName&&!$ZYName) //课程名和专业都为空则输出一张空表
{
for ($i=0;$i<11;$i++)
{
echo "<tr height=28><td> </td><td> </td><td> </td><td> </td>";
}
}
或者是SQL语句查询到的结果为空。echo $new_sql;
你并没给出 按照要求是以GET的方式接受一个文件中表单传来的数值, 所需的表单页你的 AJAX的run()函数触发后并没有完成添加资料的部分
并且主页面中也没有控制添加的部分
require "fun.php";
header("Content-type:text/html;charset=utf-8");
$kc_sql="select distinct KCM from KCB"; //查找课程名
$kc_result=mysql_query($kc_sql);
while($kc_row=mysql_fetch_array($kc_result))
{
echo "<option>".$kc_row['KCM']."</option>"; //输出课程名到下拉框中
}
?>
</select></td>
<td width="60" class="STYLE1" bgcolor="#CCCCCC">专业:</td>
<td width="50"><select name="ZYName" class="STYLE1">
<option value="请选择">请选择</option>
<?php
$zy_sql="select distinct ZY from XSB"; //查找专业
$zy_result=mysql_query($zy_sql);
while($zy_row=mysql_fetch_array($zy_result))
{
echo "<option>".$zy_row['ZY']."</option>"; //输出专业名到下拉框中
}
?>
</select></td>
<td width="60" align="center">
<input type="submit" name="Query" class="STYLE1" value="查询"></td></tr>
</table>
</form>
<?php
@include "InsertScore.php"; //包含InertScore.php页面
?>
1、没有看到 form 标记
2、没有看到名为 KCName 的色了传统标记
请补全