如何使用php、AJAX或MySQL使删除按钮在正确的ID下完全发挥作用


How can I make the delete buttons fully functional with right ID using php, AJAX or MySQL?

我有一个小问题,每个删除按钮都应该删除自己id的记录。如果我们单击164,它必须删除164的记录。如果我删除ajax并要求表单直接验证,它会很好地工作,但如果我使用ajax,无论我按下哪个按钮,它都只删除第一条记录的记录。例如,在当前场景中,即使我按下164按钮,它也会始终删除159的记录。我的代码给出了以下输出:记住,如果我要求表单直接从其他PHP文件进行验证,它会很好地工作。这是我的输出,请看一下。它很简单!

if(is_numeric($lumens) && $lumens < 5000 && $lumens >250){
if(is_numeric($THD) && $THD <= 20 && $THD  >=0){
    if(is_numeric($scaled_power_factor) && $scaled_power_factor >=0.9){
        if(is_numeric($scaled_cct) && $scaled_cct <=5700){
            if(is_numeric($scaled_cri) && $scaled_cri >=65){
                if(is_numeric($scaled_input_power)){


                    $con = new mysqli(localhost, asd, myp, rec);
                    if(!$con){
                        echo "Couldn't connect to the database";
                    }
                    else{
                        $id = $_SESSION['user_id'];
                        $query = "INSERT INTO scaling_performance_data SET
                            MODEL_NUMBER = '$model_number',
                            LUMENS = '$lumens',
                            scaled_luminaire_efficacy = '$lm_w',
                            scaled_input_power = '$scaled_input_power',
                            THD = '$THD',
                            SCALED_POWER_FACTOR = '$scaled_power_factor',
                            SCALED_CCT = '$scaled_cct',
                            SCALED_CRI = '$scaled_cri',
                            HOUSING_VARIATION = '$housing_variation',
                            user_id = '$id'
                            ";
                        if($con->query($query)){
                            $sql = "SELECT * FROM scaling_performance_data WHERE user_id='$id';";
                            $result = $con->query($sql);
                            if($result){
                                if($result->num_rows > 0){
                                    while($row = $result->fetch_assoc()){


                                        ?>
                                        <form>
                                            <table>
                                                <tr>
                                                    <th>adsf</th><th>adsf</th><th>adsf</th><th>adsf</th><th>adsf</th><th>adsf</th><th><input type="button" name ="delete_id" id="delete_id" value="<?php echo $row['ID'];?>" onclick="vlid();"/></th>
                                                </tr>
                                            </table>
                                            <script type="text/javascript">
                                                function vlid(){
                                                    var delete_id = $('#delete_id').val();
                                                    alert(delete_id);
                                                    $.post('validator.php',{
                                                            postdelete_id : delete_id
                                                        },
                                                        function(data){
                                                            $('#del').html(data);
                                                        }
                                                    )
                                                }
                                            </script>
                                        </form>
                                    <?php
                                    }
                                }

validator.php是:

$id = $_POST['postdelete_id'];
$con = new mysqli(localhost, asd, myp, rec); 
if(!$con){
    echo "Couldn't connect to the database";
}
else{
    $query="DELETE FROM scaling_performance_data WHERE ID='$id';";
    if($con->query($query)){
        echo "Your Result was deleted successful";
        echo $id;
    }else{
        echo "There was a problem Please try again later";
    }
}

问题是,在vlid()函数中,JQuery只选择id为delete_id的第一个元素。我会尝试将ID传递给vlid()函数,如下所示:

<input type="button" ... onclick="vlid(<?php echo $row['ID'];?>)"/>

然后修改您的vlid()函数以接受ID参数。

尝试var delete_id = $(event.target).val();而不是:var delete_id = $('#delete_id').val();

第一个ID必须是唯一的,因此使用

class="delete_id"

而不是

id="delete_id"

第二次移除onclick="vlid();"并使用

$(document).ready(function(){
    $('body').on('click','.delete_id',function(){
       var getValue = parseInt($(this).val());
       $.post('validator.php',{postdelete_id : getValue},function(data){
          $('#del').html(data);
       });
    });
});

并删除使用删除的tr

$(document).ready(function(){
        $('body').on('click','.delete_id',function(){
          var thisBtn = $(this);
          var getValue = parseInt(thisBtn .val());
           $.post('validator.php',{postdelete_id : getValue},function(data){
              $('#del').html(data);
              thisBtn.closest('tr').remove();
           });
        });
    });