Php 使用AJAX从数据库中删除记录

Php 使用AJAX从数据库中删除记录,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我有一个显示数据库数据的PHP文件。我正在使用while()显示每个记录 我的PHP文件: <?php $flightTicketsSQL = "SELECT * FROM `flightbookings` WHERE username='$user' AND cancelled='no'"; $flightTicketsQuery = $conn->query($flightTicketsSQL); while($flightTicketsRow = $

我有一个显示数据库数据的PHP文件。我正在使用
while()
显示每个记录

我的PHP文件:

<?php

    $flightTicketsSQL = "SELECT * FROM `flightbookings` WHERE username='$user' AND cancelled='no'";
    $flightTicketsQuery = $conn->query($flightTicketsSQL);

    while($flightTicketsRow = $flightTicketsQuery->fetch_assoc()) { ?>

    <tr>
        <td class="tableElementTags text-center"><?php echo $flightTicketsRow["bookingID"]; ?></td>
        <td class="tableElementTags text-center"><?php echo $flightTicketsRow["origin"]; ?></td>
        <td class="tableElementTags text-center"><?php echo $flightTicketsRow["destination"]; ?></td>
        <td class="tableElementTags text-center"><?php echo $flightTicketsRow["date"]; ?></td>
        <td class="tableElementTags text-center"><?php echo $flightTicketsRow["mode"]; ?></td>
        <td class="text-center"><span class="fa fa-remove tableElementTags pullSpan" id="deleteAccount"></span></td>
    </tr>

<?php } ?>
我的cancel.php文件:

<?php

    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "database";

    $conn = new mysqli($servername, $username, $password, $dbname);

    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    $user = $_SESSION["username"];
    $id = $_POST["bookingID"];


    $cancelFlightBookingsSQL = "UPDATE `flightbookings` SET cancelled='yes' WHERE bookingID='$id'";
    $cancelFlightBookingsQuery = $conn->query($cancelFlightBookingsSQL);

这里有几个问题。首先,您需要为
span
使用
class
,而不是
id
,否则它将被PHP循环复制到DOM中,这将导致无效的HMTL,从而中断单击事件处理程序

完成后,需要在单击处理程序中设置
id
变量值,以便可以找到与单击元素相关的
td
。您可以这样做:

$('#deleteAccount').click(function() {
    var id = $(this).closest('tr').find('.bookingID').data('booking');
    // the rest of your click handler
});

$('.deleteCount')。单击(函数(){
var id=$(this).closest('tr').find('td:first').text().trim();
$.ajax({
类型:“POST”,
url:'cancelTicket.php',
数据:{
预订id:id
},
成功:函数(){
警报(“取消”);
}
});
});

从单击的元素:

$('#deleteAccount').click(function() {
您可以在DOM中导航以找到所需的元素。首先,向该目标元素添加一个类:

<td class="tableElementTags text-center bookingID"><?php echo $flightTicketsRow["bookingID"]; ?></td>

实际单击的
id=“deleteAccount”
元素在哪里?1。您没有
#deleteCount
元素。2.确保没有在每行上重复该
id
。3.使用
this
引用从单击处理程序中的按钮获取
id
,以获取单击的element@David它将出现在
中。我没有添加它。我将编辑问题并添加它。哪个
td
保存请求中应该发送的值?@Samuel不要这样做
on*
属性是一种应避免的反模式。使用不引人注目的事件处理程序。谢谢。我会尝试一下,让你知道。你能提供更多的信息吗,因为这还不足以调试。控制台中是否有任何错误?是否在document.ready事件处理程序中运行jQuery代码?没有错误。没有什么。代码就是不运行。数据库中的数据未更新。如果检查控制台的“网络”选项卡,是否可以看到正在发出的请求?如果是,响应文本和状态代码是什么?抱歉,如果我是哑巴,那么网络标签在哪里?我对这些东西很陌生。谢谢。我会试试看,然后告诉你。
<td class="tableElementTags text-center bookingID" data-booking="<?php echo $flightTicketsRow["bookingID"]; ?>"><?php echo $flightTicketsRow["bookingID"]; ?></td>
$('#deleteAccount').click(function() {
    var id = $(this).closest('tr').find('.bookingID').data('booking');
    // the rest of your click handler
});