【发布时间】:2018-04-04 10:36:30
【问题描述】:
请我想实现这个:提交学生分数onblur表单输入字段这些是我的代码
Form.php
<span id="ref_report"></span><br>
Student One:<input type="text" name='ref_no[]' id='ref_no'><input type="text" name='admin'id="admin" value='st1'><br>
Students Two <input type="text" name='ref_no[]' id='ref_no'><input type="text" name='admin[]'id="admin" value='st2'><br>
Student three <input type="text" name='ref_no[]' id='ref_no'><input type="text" name='admin[]'id="admin" value='st3'><br>
//jquery
$('#ref_no').blur(function(){
var query_string = $(this).val();
if(query_string.length>0)
{
//var filter = /^[0-9a-zA-Z_-]{4,}$/;
//if ( preg_match('/^[a-zA-Z0-9.,()@#!?]+$/', $string) )
var filter = /^[a-zA-Z0-9/#-]{1,}$/;// this allows special characters "/" and "-"
if (!(filter.test(query_string))) {
$('#ref_report').html('<font color=red>This #Ref No. is not accepted</font>');
$('.login-apt').attr('disabled', 'disabled');
return false;
}
$.ajax({
type: 'POST',
url: "validate.php",
//data: query_string,
data: {ref_no:query_string},//ref_no
success: function(data)
{
if(data=='exist')
{
$('#ref_report').html('<font color=red><b>This #Ref. Number does not exist here</b></font>');
$('.login-apt').attr('disabled', 'disabled');
}
else
{
$('#ref_report').html('<img src=yes.png><font color="Green">Accepted</font>');
$('.login-apt').removeAttr('disabled',false);
}
}
});
}
});
下面是我在 validat.php 中使用的 php 代码:
if(isset($_POST['ref_no']))
{
$ref_no = mysql_real_escape_string(trim($_POST['ref_no']));
$admin = mysql_real_escape_string(trim($_POST['admin']));
$sql = "SELECT * FROM `tbl_cms` WHERE `admin`= '$ref_no'";
$myquery = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($myquery) !=0)
{
$row = mysql_fetch_array($myquery);
for($i=0;$i< count($_POST['ref_no']); $i++){
$data = $_POST['ref_no'][$i];
$admin = $_POST['admin'][$i];
$sql="INSERT INTO `tbl_cms` (`admin`, `content`) values('$admin', '" . $data . "')";
mysql_query($sql);
}
echo 'not exist';
}
else
{
echo 'exist';
}
}
我有一个非常简单的 MySQL 表,我希望每个学生及其管理员的分数自动存储为分数的键值。它看起来像这样:
admin Content
std1 3
std2 5
std3 6
.......................................................
我的问题是代码可以工作,但只保存第一个表单字段的内容,即只保存 std1 分数。而不是保存三个学生的分数 请指导我如何完善这一点。谢谢
【问题讨论】:
-
您对多个输入使用相同的 id="ref_no"。尝试使用
.$(".ref_no").blur(function() ...并在每个输入class="ref_no"上添加类属性。请记住,id 属性为 HTML 元素指定了一个唯一的 id(该值在 HTML 文档中必须是唯一的)。 -
警告:如果您只是学习 PHP,请不要学习过时的
mysql_query接口。这很糟糕,已在 PHP 7 中删除。PDO is not hard to learn 之类的替代品和PHP The Right Way 之类的指南有助于解释最佳实践。确保确保您的用户参数为properly escaped,否则您将得到严重的SQL injection bugs。 -
#sayonara 非常感谢,它有效,但我认为我的 validate.php 也有一些问题,请帮助检查一下