PHP -SQL-单击按钮上的数据



我以前的问题包含2个问题,而不是将其缩小到1

aim

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

SQL-数据库表(Schooldata)

+-----+--------+------------+------------+----------------+-----------+
|  ID |  Class |   Teacher  |  YearMonth |   Description  |   Status  |
+-----+--------+------------+------------+----------------+-----------+
|  1  |  Alpha |    Sara    |  2017/01   |  Good & Clean  |  Pending  |
+-----+--------+------------+------------+----------------+-----------+
|  2  |  Alpha |    Sara    |  2017/01   |  Has 30 Chairs |  Pending  |
+-----+--------+------------+------------+----------------+-----------+
|  3  |  Alpha |    Sara    |  2017/01   |  Has 30 Tables |  Pending  |
+-----+--------+------------+------------+----------------+-----------+
|  4  |  Alpha |    Sara    |  2017/01   |   5 Subjects   |  Pending  |
+-----+--------+------------+------------+----------------+-----------+
|  5  |  Beta  |    John    |  2016/11   |   Big & Clean  |  Official |
+-----+--------+------------+------------+----------------+-----------+
|  6  |  Beta  |    John    |  2016/11   |   New Student  |  Official |
+-----+--------+------------+------------+----------------+-----------+
|  7  |  Beta  |    John    |  2016/11   | Injured Student|  Official |
+-----+--------+------------+------------+----------------+-----------+
|  8  |  Beta  |    John    |  2016/11   |   6 Subjects   |  Official |
+-----+--------+------------+------------+----------------+-----------+

网页

+---------------------------------------------------------------+
|                                                               |
| |>Select Class<|   |>Select Teacher<|   |>Select Year/Month<| |
|                                                               |
|                         (Search)                              |
|                                                               |
|                                                               |
|>>>>>>>>>>>>>>>>>>>>>>>>>>INPUT<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<|
|                                                               |
|      {Class}           {Teacher}           {Description}      |
|                                                               |
|                                                               |
|                        (Update)                               |
|                                                               |
+---------------------------------------------------------------+
  • 传奇

    下拉列表 - |>&lt; |

    按钮 - ()

    文本输入 - {}


网页描述

UPDATE 按钮将将所选数据的"状态"更改为"待处理"。因此,如果说用户搜索|beta |约翰|2016/11 |然后单击 update 按钮,该数据的"状态"将从"官方"更改为"待处理"

但是,如果工作人员搜索"状态"已经"待处理"的数据,则| alpha | sara | sara | 2017/01 |,更新按钮将被禁用。


html表

<!--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="">

更新按钮(HTML)

<td colspan="1" valign="bottom" align="left">
    <button type="button" class="btn btn-lg update" id="btnUpdate" name="update"> Enable Re-Submit </button>
</td>

更新按钮函数(JavaScript)

$(function (){
    $("button#btnUpdate").on('click', function (e){
        e.preventDefault();
        $("#inputStatus").val("update");
        $.ajax({
            type: 'post',
            url: 'changeClassStatus.php'
        });
    }
}

changeclassstatus.php(php)

<?php
  $class  = trim($_POST['calss']);
  $teacher = trim($_POST['teacher']);
  $date   = $_POST['date'];
  $date   = $date."/01";
  $status = $_POST['status'];
  $empId = $_POST['empId'];
    if($status == 'update'])){
        $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";
    }
?>

问题描述

我已经实施了这些代码,但它们没有更新搜索数据的状态。当我单击 update 按钮时,数据未更新,也不会发生任何事情(没有更改,没有回声消息)

其他注释

这个问题链接到PHP -SQL-禁用,根据数据隐藏或启用按钮。如果我的问题缺乏或不准确的信息或问题,请告诉我。谢谢

在您的if语句中让我们开始,但试图查看是否正确地将所有变量传递到您的查询中,您可以通过写作来做到这一点。

echo $class;
echo $teacher;
etc .... 

在查询之前您的if语句中的内部。

我注意到$class = trim($_POST['calss']);应该是"类"吗?或cals?

让我用您的代码本身向您解释

$("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'
});

在jQuery ajax调用中,将字段变量传递给 data属性,以json格式将php脚本使用$ _post获取字段变量值,将 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脚本将获得值。在条件下,检查空变量,并仅在值不是空时进行更新。

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

最新更新