Javascript PHP-SQL-点击按钮更新数据

Javascript PHP-SQL-点击按钮更新数据,javascript,php,jquery,html,mysql,Javascript,Php,Jquery,Html,Mysql,这个问题是因为我的前一个问题包含2个问题,而不是将其缩小到1个 目标 当用户选择三个变量访问数据时,用户将能够单击按钮更改该数据的一个细节 SQL-数据库表(学校数据) 网页 +---------------------------------------------------------------+ | | | |>Select Class<| |&

这个问题是因为我的前一个问题包含2个问题,而不是将其缩小到1个

目标

当用户选择三个变量访问数据时,用户将能够单击按钮更改该数据的一个细节

SQL-数据库表(学校数据)


网页

+---------------------------------------------------------------+
|                                                               |
| |>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";
    }

    ?>