使用ajax逐个将循环值提交到数据库

时间:2017-06-20 05:20:59

标签: php html ajax

开发成果管理系统,讲师可以登录并更新学生的成绩。 该系统确定所有提供该课程单元的学生,并且讲师更新标记。 我发现讲师单击一个按钮为每个学生提交结果非常单调,但他们是非常多的学生,并且每个学生提取的按钮都很多,然后我想用AJAX在“ONCHANGE呼叫事件”上提交结果”

简单的AJAX脚本运行良好,即使您尝试为其他学生存储结果,它也会选择循环中的最后一个学生并将结果与​​他的ID保持一致。它只会更新最后一批学生的成绩。

这是我的循环学生的代码。

Marks.php

<?php

$row=mysql_fetch_assoc($sql);//course unit information

if(mysql_num_rows(mysql_query("SELECT * FROM allocations WHERE courseunitid='".$row['courseunitid']."' AND acid='".$_POST['acid']."' AND semester='".$_POST['semester']."' AND adminid='".$_SESSION['adminid']."'"))<1){

echo "<b><i><font color=red>Sorry! This course unit was not allocated to you in the specified search</font></i></b>";

}else{

echo"<hr size=1>";
echo "<table>
<tr>

    <td colspan=4><b>UPDATE RESULTS OF BELOW STUDENTS</b></td>

</tr>
<tr>

    <td><b>NO</b></td>
    <td><b>REG NO</b></td>
    <td><b>NAME</b></td>
    <td><b>TEST</b></td>
    <td><b>EXAMS</b></td>

</tr>

";

$x=1;

$sql_results=mysql_query("SELECT students.*,results.* FROM results INNER JOIN students ON results.stid=students.stid WHERE results.courseunitid='".$row['courseunitid']."' AND results.acid='".$_POST['acid']."' AND results.regsem='".$_POST['semester']."' AND results.adminid='".$_SESSION['adminid']."'");

while($rows=mysql_fetch_assoc($sql_results)){
?>  
<tr><td><?php echo $x++?> . </td><td> <?php echo strtoupper($rows['regno']) ?></td><td><?php echo ucwords($rows['fname']).'&nbsp;'.ucwords($rows['mname']).'&nbsp;'.ucwords($rows['lname']) ?></td><td><input type='text' name='test' value='<?php echo $rows['test'] ?>' style='width:40px;height:26px' maxlength='2' onblur='enter_results("test",this.value)'></td><td><input type='text' maxlength='3' name='exams' value='<?php echo $rows['exams']?> ' style='width:40px;height:26px' onblur='enter_results("exams",this.value)'></td><td id='<?php echo $rows['stid']?>'><?php echo $rows['stid'] ?></td></tr>

<script>

//Ajax Script for picking values (Marks)
function enter_results(marksname,marksvalue){

    if(marksname=='test'){

        document.getElementById('<?php echo $rows['stid'] ?>').innerHTML="<font color=green><i>Saving test marks...</i></font>";

    }else{

        document.getElementById('<?php echo $rows['stid'] ?>').innerHTML="<font color=green><i>Saving exam marks...</i></font>";

    }

    var xhttp=new XMLHttpRequest();

    xhttp.onreadystatechange=function(){

        if(xhttp.readyState==4 && xhttp.status==200){

            if(marksname=='test' || marksname=='exams' ){

                document.getElementById('<?php echo $rows['stid'] ?>').innerHTML=xhttp.responseText;

            }



        }

    }

    xhttp.open('GET','../ajax_calls/ajax_call.php?marksname='+marksname+'&marksvalue='+marksvalue+'&rid=<?php echo $rows['rid']?>',true);

    xhttp.send();

}

</script>

<?php 

}

echo "</table>";
?>

1 个答案:

答案 0 :(得分:0)

第1次:你在while循环中创建多个javascript函数是错误的方法。你需要创建单个函数并使用动态参数调用。

image.png

注意:在函数调用中添加了onblur='enter_results("test",this.value,"<?php echo $rows[\'stid\'] ?>","<?php echo $rows[\'rid\'] ?>")'> student id作为第三个和第四个参数。

PHP

row id

Javascript :脚本应该在while循环之外。

<hr size=1>

<table>

    <tr>

    <td colspan=4><b>UPDATE RESULTS OF BELOW STUDENTS</b></td>

    </tr>
    <tr>

    <td><b>NO</b></td>
    <td><b>REG NO</b></td>
    <td><b>NAME</b></td>
    <td><b>TEST</b></td>
    <td><b>EXAMS</b></td>

    </tr>

    <?php

    $x=1;

    ?>  



    //while loop start here 
    <tr>
        <td><?php echo $x++?> . </td>
        <td> <?php echo strtoupper($rows['regno']) ?></td>
        <td><?php echo ucwords($rows['fname']).'&nbsp;'.ucwords($rows['mname']).'&nbsp;'.ucwords($rows['lname']) ?></td>
        <td><input type='text' name='test' value='<?php echo $rows['test'] ?>' style='width:40px;height:26px' maxlength='2' onblur='enter_results("test",this.value,"<?php echo $rows[\'stid\'] ?>","<?php echo $rows[\'rid\'] ?>")'></td>
        <td><input type='text' maxlength='3' name='exams' value='<?php echo $rows['exams']?> ' style='width:40px;height:26px' onblur='enter_results("exams",this.value)'></td>
        <td id='<?php echo $rows['stid']?>'><?php echo $rows['stid'] ?></td>
    </tr>

    //while loop end here 

    </table>