Javascript PHP-SQL-点击按钮更新数据
这个问题是因为我的前一个问题包含2个问题,而不是将其缩小到1个 目标 当用户选择三个变量访问数据时,用户将能够单击按钮更改该数据的一个细节 SQL-数据库表(学校数据)Javascript PHP-SQL-点击按钮更新数据,javascript,php,jquery,html,mysql,Javascript,Php,Jquery,Html,Mysql,这个问题是因为我的前一个问题包含2个问题,而不是将其缩小到1个 目标 当用户选择三个变量访问数据时,用户将能够单击按钮更改该数据的一个细节 SQL-数据库表(学校数据) 网页 +---------------------------------------------------------------+ | | | |>Select Class<| |&
网页
+---------------------------------------------------------------+
| |
| |>Select Class<| |>Select Teacher<| |>Select Year/Month<| |
| |
| (Search) |
| |
| |
|>>>>>>>>>>>>>>>>>>>>>>>>>>INPUT<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<|
| |
| {Class} {Teacher} {Description} |
| |
| |
| (Update) |
| |
+---------------------------------------------------------------+
<!--Those data are setting for checking data existance in the database -->
<input type="hidden" name="class" value=" <?php echo $class; ?>" >
<input type="hidden" name="date" value=" <?php echo $getDate; ?>">
<input type="hidden" name="teacher" value=" <?php echo $teacher; ?>" >
<input type="hidden" id="inputStatus" name="status" value="">
changeClassStatus.php(php)
在If语句中,允许启动,但要查看是否所有变量都正确地传递到查询中,可以通过编写
echo $class;
echo $teacher;
etc ....
在查询之前的if语句内部
我注意到$class=trim($_POST['calss'])代码>它应该是“类”吗?还是calss?让我用代码本身向您解释一下
$("button#btnUpdate").on('click', function (e){
e.preventDefault();
$("#inputStatus").val("update");
$.ajax({
type: 'post',
url: 'changeClassStatus.php'
});
}
在服务器端,PHP希望从AJAX post请求中获得以下变量
$class = trim($_POST['calss']);
$teacher = trim($_POST['teacher']);
$date = $_POST['date'];
$date = $date."/01";
$status = $_POST['status'];
$empId = $_POST['empId'];
因此,您的AJAX请求应该按照下面给定的语法重写
上述AJAX请求不包含任何post参数。您应该向其添加数据属性。请参见下面的示例
$.ajax({
url: 'url',
type: 'GET',
data: { field1: "hello", field2 : "hello2"} ,
contentType: 'application/json;
charset=utf-8'
});
在jQueryAjax调用中,当php脚本使用$\uPOST获取字段变量值时,将字段变量以JSON格式传递给data
属性,使用type
作为POST
$.ajax({
url: 'changeClassStatus.php',
type: 'POST',
data: { calss: "hello", teacher : "hello2", date : "01/01/2017", status: "Active", empId : 12 },
contentType: 'application/json; charset=UTF-8',
success: function (response) {
console.log(response.status);
},
error: function () {
alert("error");
}
});
在这里,如果在ajax调用中传入data
属性,您的php脚本将获得值。在if条件下,检查空变量,并仅在值不为空时更新
<?php
$class = trim($_POST['calss']);
$teacher = trim($_POST['teacher']);
$date = $_POST['date'];
$date = $date."/01";
$status = $_POST['status'];
$empId = $_POST['empId'];
if((!empty($status) && $status == 'update') && !empty($class) && !empty($teacher) && !empty($date) && !empty($empId)){
$sqlUpdate = mysqli_query($conn,"UPDATE SchoolData SET Status='Pending' WHERE (Class=$class AND Teacher=$teacher AND ID='".$id[$i]."' AND YEAR(MonthYear)= YEAR('$date') AND MONTH(MonthYear)= MONTH('$date'));";
$sqlExecute=$conn->query($sqlUpdate)or exit("Error code ({$conn->errno}): {$conn->error}");
echo "Data Status Changed";
}
?>
什么是错误?在提供的代码中,您没有向服务器发送任何数据。无需更新/实际上您需要通过ajax post方法发送所有数据,以便php代码能够正常工作。您没有发送任何数据请添加表HTML(2-3条记录HTML),这样我们可以告诉您如何获取所有数据并发送到PHP$conn->query($sqlUpdate)
将给您一个错误,因为您之前已经在行中执行了查询,并且您正在执行更新,因此mysqli\u query
返回一个布尔值。谢谢,我会尝试一下,然后再给你回复。我也将很快编辑我的问题=啊,这是一个打字错误,它应该是类。我会让你知道回音信息的。我将很快编辑我的问题。谢谢=t这里没有回音消息。这意味着没有发送任何内容:(另一行看起来不正确的代码是:如果($status=='update']),请确保修复语法错误。我将很快编辑我的问题。谢谢你的回复。我会试试看,然后再打给你
$class = trim($_POST['calss']);
$teacher = trim($_POST['teacher']);
$date = $_POST['date'];
$date = $date."/01";
$status = $_POST['status'];
$empId = $_POST['empId'];
$.ajax({
url: 'url',
type: 'GET',
data: { field1: "hello", field2 : "hello2"} ,
contentType: 'application/json;
charset=utf-8'
});
$.ajax({
url: 'changeClassStatus.php',
type: 'POST',
data: { calss: "hello", teacher : "hello2", date : "01/01/2017", status: "Active", empId : 12 },
contentType: 'application/json; charset=UTF-8',
success: function (response) {
console.log(response.status);
},
error: function () {
alert("error");
}
});
<?php
$class = trim($_POST['calss']);
$teacher = trim($_POST['teacher']);
$date = $_POST['date'];
$date = $date."/01";
$status = $_POST['status'];
$empId = $_POST['empId'];
if((!empty($status) && $status == 'update') && !empty($class) && !empty($teacher) && !empty($date) && !empty($empId)){
$sqlUpdate = mysqli_query($conn,"UPDATE SchoolData SET Status='Pending' WHERE (Class=$class AND Teacher=$teacher AND ID='".$id[$i]."' AND YEAR(MonthYear)= YEAR('$date') AND MONTH(MonthYear)= MONTH('$date'));";
$sqlExecute=$conn->query($sqlUpdate)or exit("Error code ({$conn->errno}): {$conn->error}");
echo "Data Status Changed";
}
?>