按照要求是以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>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</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>&nbsp;&nbsp;";
//设置删除超链接
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 "删除失败!";
}
?>

解决方案 »

  1.   

    但是现在只能输出一张空表格,不能添加修改资料-----------------是js触发不了事件不能修改、还是php不能修改? 
    你先装个firebug先调试下先吧。
      

  2.   

    既然是输出一张空表格
    那就是这个分支的问题喽,print_r($_GET);
    if(!$KCName&&!$ZYName)                //课程名和专业都为空则输出一张空表
    {
        for ($i=0;$i<11;$i++)
        {
            echo "<tr height=28><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>";
        }
    }
    或者是SQL语句查询到的结果为空。echo $new_sql;
      

  3.   

    初始状态数据表为空,自然只能输出空表
    你并没给出 按照要求是以GET的方式接受一个文件中表单传来的数值, 所需的表单页你的 AJAX的run()函数触发后并没有完成添加资料的部分
    并且主页面中也没有控制添加的部分
      

  4.   

    那个表单页是一个查询页面,代码如下<?php
    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页面
    ?>
      

  5.   

    你 #6 的代码不完整
    1、没有看到 form 标记
    2、没有看到名为 KCName 的色了传统标记
    请补全