2016-01-22 17 views
1

下面是视觉我的网站看起来像此刻:如何使用AJAX和PHP通过仅使用ID删除MySQL数据库和屏幕上的文件?

Delete-Button 的目标是删除按钮,不仅从数据库中,也按屏幕后立即删除。

为视图/ HTML PHP代码:

<?php 
    $sth = $db->prepare("SELECT id, first_name, last_name FROM wlist"); 
    $sth->execute(); 

    $results = $sth->fetchAll(); 

    foreach ($results as $result) { 
     echo "<tr><td>".$result['first_name']."</td><td>".$result['last_name']."</td><td><button class=\"delete_class\" id=\"".$result['id']."\" >DELETE</button></td></tr>"; 
    } 
?> 

此PHP页面的底部,是此javascript F(X):

<script> 
    $(".delete_class").click(function(){ 
     var del_id = $(this).attr('id'); 
     $.ajax({ 
      type:'POST', 
      url:'delete_page.php', 
      data: {delete_id : del_id}, 
      success: function (data) { 
       if (data) { 
        tx.executeSql('DELETE from MYDBTABLE WHERE id = ?', [delete_id], success, error); 
       } 
       else { // DO SOMETHING ON FAILURE 
       } 
      } 
     }); 
    }); 
</script> 

与上面的代码的问题是,成功无论结果如何,总会回来。这和我有点困惑,只有彻底删除该行/表的父母属性的正确方法

我在与包含所有上述代码的PHP文件相同的文件夹中的“delete_page.php”。此文件有此代码:

<?php 
    $id = $_POST['delete_id']; 
    $query = "DELETE from MYDBTABLE where ID = $id"; 
?> 

我在寻找最有效的方式来格式化我的delete.php文件以及ajax函数。

+0

有你的调试器去?是否有任何XHR活动? –

+0

要更新网页(屏幕)上的内容而不点击浏览器刷新按钮,应该在DOM上使用JavaScript。 jQuery是DOM操作中的一个很好的库,additionnaly,你已经通过'$ .ajax'使用它了,所以用jquery(比如'$ .remove()'或'$ .empty()')搜索元素删除函数。 –

+0

是根据URL结构在同一个文件夹中的“delete_page.php”吗?如果原始脚本是example.com/list.php,但您的网址是example.com/admin/list-users/,那么此JS代码将搜索example.com/admin/list-users/delete_page.php – PetrHejda

回答

0

一个简单的解决方案是,你应该让一个函数让我们说activate()。这个函数负责调用你的服务器,并获取数据库中的所有记录到客户端,并填充列表或表格,无论你用什么来显示。

您正在放置的删除按钮显然应该调用ID作为参数的函数。所以删除(id)应该是脚本中的另一个函数,每次删除记录时都会调用它。

扭曲来到这里。有两种主要方法可以从视图中删除记录。

1)(I PREFER THIS)由于要从数据库获取的数据不会那么庞大,您应该调用delete(id)函数的AJAX调用的success的activate()函数。这将再次请求启动更新的数据库的服务器。

2)另一种方法是,当我们使用大数组在html中填充表时,可以使用array.splice()函数,该函数只能通过其索引删除任何数组元素。所以这应该在删除(id)函数的success中完成。在服务器上传输更多流量或从服务器传输到客户端的数据量较大时,应使用此功能。

这可能是删除

<?php 
    $id = $_GET['delete_id']; 
    $query = "DELETE from TABLENANE where ID='$id'"; 
    mysqli_query($conn,$query) or die(mysqli_error($conn)); 
    echo true; 
?> 

这PHP脚本可能是JavaScript的删除功能

function delete(del_id){ 
$.ajax({ 
     url: "delete.php?delete_id=" + del_id, 
     cache: false, 
     success: function (result) { 
      activate();     
     } 
    }); 
} 

,这可能是从数据库中获取查询。

<?php 

$result = mysqli_query($conn,"SELECT * FROM TABLENAME") or die(mysqli_error($conn)); 
$ara = array(); 
while($x = mysqli_fetch_assoc($result)){ 
    array_push($ara,$x); 
} 

echo json_encode($ara); 
?> 

而且这可能是激活功能

var myData; 
function activate(){ 
$.ajax({ 
     url: "getData.php", 
     cache: false, 
     success: function (result) { 
      myData = result; 
     } 
    }); 
} 
2

首先,在delete.php文件不仅需要准备,但执行:

<?php 
    $id = $_GET['delete_id']; 
    $query = "DELETE from MYDBTABLE where ID=:id"; 
    $queryResult = $db->prepare($query); 
    $queryResult->execute(array(':id' => $id)); 
?> 

通知,$_POST改为$_GET

此外,AJAX调用应反映实际变化页面像这样:

$('body').on('click', '.delete_class', function() { 

    var tr = $(this).closest('tr'), 
     del_id = $(this).attr('id'); 

    $.ajax({ 
     url: "delete.php?delete_id=" + del_id, 
     cache: false, 
     success: function (result) { 
      tr.fadeOut(500, function() { 
       $(this).remove(); 
      }); 
     } 
    }); 
}); 

请注意,我在传入删除ID后,添加delete_class添加到要删除的记录的id按钮,并随后淡出具有该记录的表格行。

相关问题