PHP AJAX Delete Record - удаление работает только 1 раз - PullRequest
0 голосов
/ 27 мая 2019

Я удаляю записи с помощью ajax и php. Когда я нажимаю кнопку, она стирает запись, но когда я нажимаю, чтобы удалить другую запись, она ничего не делает. Что я делаю не так?

HTML

<form id="prop_remove">
    <input type="hidden" name="id" id="last_id" value="<?php echo $id; ?>">
    <input type="hidden" name="user" id="last_user" value="<?php echo $user; ?>">
    <input type="button" name="submit" id="last_prop" class="button fullwidth margin-top-5" value="Delete">
</form>

AJAX

<script>
$(document).ready(function() {
    $('#last_prop').click(function() {
        var id = $('#last_id').val();
        var user = $('#last_user').val();
        $.ajax({
            url: "delete.php",
            method: "POST",
            data: {
                ilan_id: id,
                ilan_user: user
            },
            success: function(response) {
                if (response == 1) {
                    $('#last_prop').closest('tr').css('background', 'tomato');
                    $('#last_prop').closest('tr').fadeOut(800, function() {
                        $(this).remove();
                    });
                } else {
                    alert('Invalid id');
                }
            }
        });
    });
});
</script>

PHP

<?php
    require_once 'config.php';
    $id     =  $_POST['ilan_id'];
    $user   =  $_POST['ilan_user'];

    $checkRecord    = "SELECT * FROM last_tbl WHERE id = '$id' AND user = '$user'";
    $check_result   = mysqli_query($conn, $checkRecord);
    $totalrows      = mysqli_num_rows($check_result);

    if($totalrows > 0){
        $delete_sql     =   "DELETE FROM last_tbl WHERE id = '$id' AND user = '$user';";
        $delete_result  =   mysqli_query($conn, $delete_sql);
        echo 1;
        exit;
    }

?>

1 Ответ

0 голосов
/ 27 мая 2019

Ваша проблема в том, что вы перезаписываете идентификаторы HTML-элементов. Вы можете удалить свои формы и использовать вместо них одну кнопку, а также передавать данные через атрибут data кнопок.

Замените вашу форму одной кнопкой

<button class="button fullwidth margin-top-5 last_prop" data-last-id="<?= $id; ?>" data-last-user="<?= $user; ?>">Delete</button>

Затем адаптируйте ваш jQuery для использования класса last_prop вместо идентификатора и извлеките значения из атрибутов data, которые мы установили выше.

<script>
$(document).ready(function () {
    $('.last_prop').click(function () {
        var id = $(this).data('last-id');
        var user = $(this).data('last-user');

        $.ajax({
            url:"delete.php",
            method: "POST",
            data: {ilan_id: id, ilan_user: user},
            success:function(response){
                if (response == 1 ){
                    $('#last_prop').closest('tr').css('background','tomato');
                    $('#last_prop').closest('tr').fadeOut(800,function(){
                        $(this).remove();
                    });
                } else {
                    alert('Invalid id');
                }
            }
        });
    });
});
</script>

Кроме того, ваш запрос может быть сокращен до одного (вам это не нужно SELECT), и он должен быть с подготовленным оператором.

<?php
    require_once 'config.php';
    $id     =  $_POST['ilan_id'];
    $user   =  $_POST['ilan_user'];

    $sql = "DELETE FROM last_tbl WHERE id = ? AND user = ?;";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ss", $id, $user);
    $stmt->execute();
    if ($stmt->affected_rows) {
        // rows were deleted
        echo 1;
    }
    $stmt->close();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...