我有一个页面,我可以从数据库动态生成大量学生行(最多约50个)。该页面允许教师一次为每个学生输入成绩。这些行是使用AJAX / jQuery生成的,看起来像这样:
$("#tbodystudents").append('<tr><td class="studentid" style="display:none">'+value[0]+'</td><td class="subjectid" style="display:none">'+value[1]+'</td><td><input class="inpmark" type="number"></td>/tr>');
然后我将它发送到我的PHP文件中:
$("#btnaddmarks").click(function(){
var marks= $("input.inpmark").map(function(){
return $(this).val();
}).get().map();
var studentids= $(".studentid").map(function() {
return $(this).text();
}).get().map();
var subjectids= $(".subjectid").map(function() {
return $(this).text();
}).get().join();
$.ajax({
type: "POST",
url: "modules/addmarks.php",
dataType: 'json',
data: {s:studentids,m:marks,subj:subjectids},
cache: false,
}) // etc..
});
和我的PHP,addmarks.php:
<?php
$inputvalues = $_POST;
$errors = false;
$returnResult;
$result = false;
include_once '../../../includes/database.php';
$studentids = $inputvalues['s'];
$marks = $inputvalues['m'];
$subjectids= $inputvalues['subj'];
$studentid = explode(",",$studentids);
$mark= explode(",",$marks);
$subjectid= explode(",",$subjectids);
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if( !$errors ) {
$sql = "INSERT INTO `marks` (`studentid`, `subjectid`,`mark`) VALUES (?,?,?)";
$stmts = $mysqli->prepare($sql);
$stmts->bind_param('iii',$studentid,$subjectid,$mark);
$result = $stmts->execute();
$returnResult = "Success";
}
mysqli_close($mysqli);
echo json_encode(['result' => $returnResult, 'errors' => $errors]);
exit;
?>
所以我的问题是,
1)如何循环覆盖值并将相应的值插入到我的数据库中?
2)这是解决此问题的最佳方法吗?如果没有,那是什么?
3)如何确保输入正确的值,这意味着studentids数组中的第一个值和marks数组中的第一个值相互连接并相应地输入到DB中。 / p>
4)使用AJAX将此数据发送到后端是否安全?我计划稍后使用HTTPS。
感谢您的帮助。
答案 0 :(得分:1)
如果您正在使用AJAX,我会寻求一个不错的用户体验解决方案,其中包括反馈是否已保存输入的数据。另外,出于数据完整性的原因,我会在输入字段上使用数据集,例如
<input class="inpmark" type="number" data-studentid="123" data-subjectid="45">
这样,输入的值默认绑定到学生和主题ID,您不需要稍后映射各种数组。
通过在这样的输入字段上使用blur
事件,可以发送AJAX请求以更新该单个值(inpmark)以及学生和主题ID,如果请求返回&#34; ok&# 34;,输入的背景可以变为绿色,例如通知用户信息现在保存在数据库中(focus
事件可以再次删除背景颜色。)
关于你的问题,