PHP - 使用按钮删除数据

时间:2014-07-03 13:20:34

标签: php jquery ajax button

我正在尝试创建一个列出数据库表中所有行的HTML表。然后,在每一行旁边我想要一个按钮,以便用户可以删除该条目。我已经创建了表格,但我无法使按钮起作用。

我一直在寻找,我发现这篇文章How to Call a PHP Function on the Click of a Button,但我无法让它发挥作用。我之前从未使用过ajax,因此我可能无法正确理解代码。

以下是代码:

浏览表格中的所有数据,并为每个条目创建一个按钮

<?php
for ($x = 0; $x < sizeof($data); $x++) {
?>
     <input type="submit" class="tableButton" name="<?php echo $x ?>" value="<?php echo $x ?>">
<?php
}    
?>

点击tableButton后,将其值发送到ajax.php

$('.tableButton').click(function () {
    var clickBtnValue = $(this).val();
    var ajaxurl = 'ajax.php',
    data = { 'action': clickBtnValue };
    $.post(ajaxurl, data, function (response) {
    });
});

ajax.php

获取已按下的按钮的值并使用它执行某些操作

<?php
if (isset($_POST['action'])) {
    $data = $_POST['action'];
    echo $data;
}
?>

目前我只是回应测试它的值,但它没有显示任何内容。我要做的就是运行这个查询:

 DELETE from myTable WHERE id = $data;

如果有人知道更好的方法,请告诉我。

修改

经过多次搜索后,我发现为什么这不符合我的预期。我怀疑,因为我之前从未使用过AJAX,但我不知道回声不会直接打印到屏幕上。我刚刚将echo更改为删除查询并对其进行了测试并且它可以工作......所以代码很好,但我想我应该在某个时候学习AJAX。感谢所有回复。

我也知道这里可以使用sql注入,这只是一个快速的模型,谢谢。

3 个答案:

答案 0 :(得分:1)

从这个角度来看,很难帮助你。

您应该进行一些调试,例如:

  1. 检查相关的ajax.php是否被调用(通过检查控制台&#34; F12&#34;例如)
  2. 如果是,请检查通过ajax POST传递的数据
  3. 如果没有,可能参考链接错误
  4. 让我听听你的意见。

答案 1 :(得分:1)

确定。首先,您需要创建具有行ID的按钮。你可以使用mySQL和PHP循环来完成它。按以下格式创建。

<input type="submit" name="test" data-id="23" value="Remove" class="delete_row" />            
<input type="submit" name="test" data-id="24" value="Remove" class="delete_row" />            
<input type="submit" name="test" data-id="25" value="Remove" class="delete_row" />            
<input type="submit" name="test" data-id="26" value="Remove" class="delete_row" />  

这里将每个按钮中的data-id替换为您要删除的行的id。(动态替换23,24等数据库ID)。

Java脚本

$(document).ready(function(){

    $(".delete_row").click(function(e){

        e.preventDefault();
        var deleteId = $(this).attr("data-id");//unique id of the raw to be deleted

        var request = $.ajax({
        url: "ajax.php",
        type: "POST",
        data: { id : deleteId },
        dataType: "json"
        });
        request.done(function( msg ) {

           if( msg.status )
               alert("Deleted successfully!");
           else
               alert("Something gone wrong!!");
        });
        request.fail(function( jqXHR, textStatus ) {
           alert( "Request failed: " + textStatus );


        });

    });


});

<强> ajax.php

<?php
   /* AJAX check  */
   if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {

       $delete_id = $_POST["id"];
       if( is_numeric( $delete_id ) ){

            /*DELETE QUERT WHERE id = $delete_id (Try to use mysqli or PDO ) */
            /* $affected_rows = effected_rows() */

            if( $affected > 0 ) 
            {
                echo json_encode( array("status" => true ) );die;
            }

        }
        echo json_encode( array("status" => false ) );die;
     }
     die("Get out of here!");
?>

我希望这会对你有所帮助:)。

答案 2 :(得分:1)

你可以这样试试。我认为它会对你有所帮助

  

Html文件

<html>
<head>
<title>Test</title>
</head>
<body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script>
$('.tableButton').live('click', function(){
    var id = $(this).val();
    $.ajax({
        url:'ajax.php'
        ,data:{id:id}
        ,type:'post'
        ,success:function(data){
            if(data == 'success'){
                $('#' + id).remove();
            }
        }
    });
});
</script>
<?php
  for ($x = 0; $x < 5; $x++) {
?>
<input type="submit" class="tableButton" id="<?=$x?>" name="<?php echo $x ?>"value="<?php echo $x ?>">
<?php
 }
 ?>
 </body>
 </html>
  

<强> ajax.php

<?php
if(isset($_POST['id'])){
    $id = $_POST['id'];
    //delete operation here
    //if(deleted) echo 'success';
}
?>