dimanche 29 décembre 2019

how to check if a checkbox is checked when sending data via ajax to php

I have a foreach loop which creates tr's with inside a checkbox and some input fields. Each row has a checkbox with the id as value. Each row has also a hidden input field with the id as value.

I want to distinguish whether a request is send via the own delete button in each row, or via the checkbox what is checked for (these) rows. (when multiple checkboxes are checked, i can delete them all at once)

<tr>
    <input type="hidden" name="file_id" value="<?php echo $file_id; ?>" /> <!-- file id which belongs to each row -->
    <td><input type="checkbox" class="checkbox" value="<?php echo $file_id; ?>" /></td>
    ...
    <button class="btn btn-sm btn-danger submit" type="submit" name="delete_file">Delete</button>
</tr>

i send the data via jquery ajax to the php file:

// checkboxes value 
    $(document).on('click' , '.submit' , function() { 
        var checkbox_value = [];
        var file_id = $(this).closest("tr").find("input[name='file_id']").val();


        $('.checkbox').each(function() {
            if ($(this).is(":checked")) {
                checkbox_value.push($(this).val());
            }
        });
        checkbox_value = checkbox_value.toString();
        $.ajax({
            url: "admin.php",
            method: "POST",
            data: {
                checkbox_value: checkbox_value,
                file_id : file_id

            },
            success: function(data) {
                $('.result').html(data);

            }
        });
    });

The php:

if(isset($_POST["checkbox_value"])) {

        $checkboxfiles[] = $_POST["checkbox_value"];
        $category = $_POST["category"]; 

        // checkbox loop
        foreach ($checkboxfiles as $checkboxfile) {
            foreach(explode(',', $checkboxfile) as $id) {

                echo $id.'<br />';
                echo 'delete via checkbox is choosen';

            }
        }

        exit;
}

if(isset($_POST["file_id"])) {
        ...
        echo 'delete via single row is choosen';

}

Problem: When i choose to delete via single row (no checkbox is checked), it still sends the echo delete via checkbox is choosen




Aucun commentaire:

Enregistrer un commentaire