Php 使用AJAX从数据库中删除记录
我有一个显示数据库数据的PHP文件。我正在使用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 = $
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
});