PHP表不会使用AJAX更新Mysql

时间:2018-08-17 17:12:51

标签: php mysql ajax

我无法使用PHP和Ajax更新mysql表。

问题是,当我按下删除按钮时,它仅重定向到主页,而对MYSQL数据没有任何作用。

HTML

 <tbody>
   <?php 
     if($qry->prepare("SELECT * FROM `menus` WHERE `is_deleted` = 0")){
     $qry->execute();
     $result = $qry->get_result();
     if($result->num_rows > 0){
      while($row = $result->fetch_array()){ 
   ?>
        <tr>
        <td><?=  $row['menu_code'] ?></td>
        <td><?=  $row['menu_name'] ?></td>
        <td><?=  $row['menu_desc'] ?></td>
        <td><?=  $row['menu_type'] ?></td>
        <!--<td><?=  $row['menu_code'] ?></td>-->
        <td><?=  $row['menu_price'] ?></td>
        <!--<td><?=  $row['sizes'] ?></td>-->
        <td>
          <input type="submit" class="btn btn-sm btn-info" value="View" >                   
          <form method="POST">                              
          <input type="submit" id="delMenu" class="btn btn-sm btn-danger" value="Delete" >  
          <input type='hidden' id="delID" value=" <?php echo $row['menu_id'];?>" name="iduse">
          </form>
        </td>
        </tr>                                   
   <?php
    }
    }
    }
    ?>
 </tbody>

DeleteMenu.php

<?php
  include '../../configurations/config.php';

  $qry = $con->stmt_init();

  $iduse=$_POST['iduse'];

  $sqlCode="UPDATE menus SET is_deleted = 1 WHERE menu_id = $iduse";

   if($qry->prepare($sqlCode)){

    $qry->execute();

    echo json_encode(array(
    "status" => 200,
    ));

} else {
    echo json_encode(array(
    "status" => 400
    ));
}

Ajax

$(document).on('click', '#delMenu', function(){
   var id = $('#delID').value();
   var ask = confirm('Are you sure you want to delete this item?');
$.ajax({
 url: base_url() + "../functions/DeleteMenu.php",
       method:"POST",
       data: {'menu_id' : id,
              'is_deleted' : '1'},
        dataType: 'json',
        cache: false,
        success:function(result){
                if(result.status == 200){
                    alert('Successfully removed!');
                    $('#content_load').load('views/menus');
                } else {
                    alert('Has not removed!');
                }   
            },
            error:function(result){
                //alert('Fail');
                console.log(result);
            }
        }); 
});

每当我按下“删除”按钮时,我需要将菜单表上的“ is_deleted”列更改为1,以便将其隐藏。我认为我的php操作或ajax代码有问题,但是我很难指出来。任何解释或帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

首先,您需要通过添加以下内容来阻止表单提交:

$(document).on('click', '#delMenu', function(e) {
    e.preventDefault();
    // ... 
}

下一步..您的ajax请求结构是:

{
    'menu_id' : id,
    'is_deleted' : '1'
}

因此在php中,请使用menu_id而不是iduse

$iduse = $_POST['menu_id'];

您必须对其余的代码逻辑进行故障排除,因为似乎存在多个错误,并且您可能会发现更多错误。

希望有帮助

答案 1 :(得分:0)

您同时使用表单和Ajax来更新值。删除表单标签,只使用ajax。尝试如下删除表单标签

 <tbody>
   <?php 
     if($qry->prepare("SELECT * FROM `menus` WHERE `is_deleted` = 0")){
     $qry->execute();
     $result = $qry->get_result();
     if($result->num_rows > 0){
      while($row = $result->fetch_array()){ 
   ?>
        <tr>
        <td><?=  $row['menu_code'] ?></td>
        <td><?=  $row['menu_name'] ?></td>
        <td><?=  $row['menu_desc'] ?></td>
        <td><?=  $row['menu_type'] ?></td>
        <!--<td><?=  $row['menu_code'] ?></td>-->
        <td><?=  $row['menu_price'] ?></td>
        <!--<td><?=  $row['sizes'] ?></td>-->
        <td>
          <input type="submit" class="btn btn-sm btn-info" value="View" >                                                 
          <input type="submit" id="delMenu" class="btn btn-sm btn-danger" value="Delete" >  
          <input type='hidden' id="delID" value="<?php echo $row['menu_id'];?>" name="iduse">
        </td>
        </tr>                                   
   <?php
    }
    }
    }
    ?>
 </tbody>

并在Delmenu.php中,使用ajax传递的属性。

$iduse=$_POST['menu_id'];

答案 2 :(得分:0)

使用此代码更新文件DeleteMenu.php

<?php
  include '../../configurations/config.php';

  $qry = $con->stmt_init();

  $iduse=$_POST['menu_id'];

  $sqlCode="UPDATE menus SET is_deleted = 1 WHERE menu_id = $iduse";

   if($qry->prepare($sqlCode)){

    $qry->execute();

    echo json_encode(array(
    "status" => 200,
    ));

} else {
    echo json_encode(array(
    "status" => 400
    ));
}

因为您要在帖子类型变量中发送“ menu_id”,并且没有名称为“ iduse”的帖子

这是您使用post方法进行ajax调用的代码

method:"POST",
data: {'menu_id' : id,
        is_deleted' : '1'},

因此您可以在DeleteMenu.php中将此数据用作$ _POST ['menu_id']和$ _POST ['is_deleted']。

在提交表单后,使用preventDefault

删除重定向
event.preventDefault();

答案 3 :(得分:0)

  1. 首先,始终为您的表单分配id属性。

2。 AJAX表单:

$(document).on('click', '#delMenu', function(){
   var id = $('#delID').value();
   var ask = confirm('Are you sure you want to delete this item?');
$.ajax({
 url: base_url() + "../functions/DeleteMenu.php",
       method:"POST",
       data: "menu_id="+id + "&is_deleted="+"1",
        //dataType: 'json', /* NO NEED FOR THIS */
        //cache: false,      /* NO NEED FOR THIS */
        success:function(result){
           console.log(result);  /* check console and see whats the error*/
                if(result.status == 200){
                    alert('Successfully removed!');
                    $('#content_load').load('views/menus');
                } else {
                    alert('Has not removed!');
                }   
            },
            error:function(result){
                //alert('Fail');
                console.log(result);
            }
        });
        return false; /* added so that your form submits with ajax*/
});