Как использовать Ajax для запуска SQL-запроса в цикле php while? - PullRequest
1 голос
/ 10 июля 2019

У меня есть таблица данных, которая тянется через SQL в DataTables.Я хочу использовать AJAX для запуска SQL-запроса, который удалил строку на основе $id = $row["id"];.

Index.php:

$link = mysqli_connect("localhost", "bradlyspicer_root", "", "bradlyspicer_ResellerDB");

$id = $_POST['id'];
$deleterow = "DELETE FROM Offences WHERE id = ?";
    if($stmt = mysqli_prepare($link, $deleterow)){ // $link being your connection
        mysqli_stmt_bind_param($stmt, "s", $id);
        mysqli_stmt_execute($stmt);
        echo 'success';
        echo $id;
    } else {
        echo 'fail!';
        printf("Error: %s.\n", mysqli_stmt_error($stmt));
    }

функций.php:

$id = $_POST['id'];
$deleterow = "DELETE FROM Offences WHERE id = ?";
    if($stmt = mysqli_prepare($link, $deleterow)){ // $link being your connection
        mysqli_stmt_bind_param($stmt, "s", $id);
        mysqli_stmt_execute($stmt);
        echo 'success';
    } else {
        echo 'fail!';
        printf("Error: %s.\n", mysqli_stmt_error($stmt));
    }

Custom.js:

$( ".delbtn" ).click(function(){
    var itemID = $(this).attr("itemID");
    console.log(itemID)
    $.ajax({
        url:"functions.php", //the page containing php script
        data: { id: itemID}, // itemID passed as id
        type: "POST", //request type
        success:function(result){
            alert(result);
        },
        error: function() {
            alert('Error occured');
        }
    });
});

Я не могу найти, где я передаю $ id в кнопке из Index.php to Functions.php, любые объяснения приветствуются.

Обновление: После обновления скрипта и попытки отладки я не получаю большую часть ответа от ошибки, которая выдает:

fail!Error: .

Ответы [ 2 ]

2 голосов
/ 10 июля 2019

Index.php:

Добавить идентификатор кнопки удаления class delbtn и атрибут данных, содержащий идентификатор этой строки data-itemID

<?php
    while($row = mysqli_fetch_array($dataTablesResult)){
        $id = $row["id"];
        echo '
        <tr>
          <td>
            <button type="button" data-itemID="'.$id.'" class="delbtn btn btn-danger" >Remove</button>
          </td>
        </tr>
        ';
    }
?>

Functions.php:

Захват $_POST['id'], отправленный ajax

$id = $_POST['id'];
$deleterow = "DELETE FROM Offences WHERE id = ?";
if($stmt = mysqli_prepare($link, $deleterow)){ // $link being your connection
    mysqli_stmt_bind_param($stmt, "s", $id);
    mysqli_stmt_execute($stmt);
}

Custom.js:

Запускать функцию jQuery при нажатии кнопки с классом .delbtn.Захватите и сохраните идентификатор строки из атрибута данных как $(this).data("itemID").Затем отправьте данные, используя data: { id: itemID} в запросе ajax

$(".delbtn").click(function(){
    itemID = $(this).data("itemID");
    $.ajax({
        url:"functions.php", //the page containing php script
        data: { id: itemID}, // itemID passed as id
        type: "POST", //request type
        success:function(result){
            alert(result);
        }
    });
});
1 голос
/ 11 июля 2019

Я думаю, что если вы измените эту строку:

mysqli_stmt_bind_param($stmt, "s", $id);

на одну:

mysqli_stmt_bind_param($stmt, "i", $id);

она может работать

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