Обновить / удалить несколько проверенных данных - PullRequest
0 голосов
/ 01 марта 2019

Моя система может обновить несколько данных с помощью флажка.Это код, который я использовал.

updateproduct.php содержит этот код.

<?php
    if (count($_POST["selected_id"]) > 0 ) {
      $db = mysqli_connect('localhost', 'root', '', 'shoopingcart');
      $all = implode(",", $_POST["selected_id"]);
      $availability=$_POST['availability'];
      $query="UPDATE internet_shop SET availability = '$availability' WHERE 1 AND id IN($all)";
      if(mysqli_query($db,$query)){
          $_SESSION['success'] = 'Products have been deleted successfully.';
      }
    }else{
        $_SESSION['error'] = 'Select checkbox to delete product.';
    }
    header("Location:testproduct.php");
?>

Теперь есть также возможность удалить отмеченные элементы.Я пытался использовать этот код на delete.php

<?php
    if (count($_POST["selected_id"]) > 0 ) {
       $db = mysqli_connect('localhost', 'root', '', 'shoopingcart');
      $all = implode(",", $_POST["selected_id"]);
      $query="DELETE FROM internet_shop WHERE 1 AND id IN($all)";
      if(mysqli_query($db,$query)){
          $_SESSION['success'] = 'Products have been deleted successfully.';
      }
    }else{
        $_SESSION['error'] = 'Select checkbox to delete product.';
    }
    header("Location:testproduct.php");
?>

Этот delete.php не работает из-за того, что $ _POST ["selected_id"] находится только в одной форме, и действие этой формы перенаправляет на updateproduct.php.

Как удалить / обновить несколько данных?Спасибо!Ниже приведен HTML-код

<form name="actionForm" action="updateproduct.php" method="post" onsubmit="return updateAlert();" id="updateproduct" />
                            <table cellpadding="1" cellspacing="1" id="resultTable">
                                <thead>
                                    <tr>
                                        <th style="text-align: center;"><input type="checkbox" name="check_all" id="check_all" value=""/></th>
                                        <th class="sortable">Item</th>
                                        <th class="sortable">Price</th>
                                        <th class="sortable">Category</th>
                                        <th style="text-align: center;">Action</th>
                                    </tr>
                                </thead>
                                <?php
                                    if(mysqli_num_rows($query) > 0){
                                        while($row = mysqli_fetch_assoc($query)){
                                            extract($row);
                                ?>
                                <tr>
                                    <td align="center"><input type="checkbox" name="selected_id[]" class="checkbox" value="<?php echo $id; ?>"/></td>
                                    <td class="record"><?php echo $name; ?></td>
                                    <td>₱ <?php echo $price; ?></td>
                                    <td><?php echo $category; ?></td>
                                    <td style="text-align: center;"><a rel="facebox" href="editproductetails.php?id='.$row['id'].'">Edit info</a> | <a href="#" id="'.$row['id'].'" class="delbutton" title="Click To Delete">delete</a></td>
                                </tr>
                                <?php } }else{ ?>
                                    <tr><td colspan="3">No records found.</td></tr> 
                                <?php } ?>  
                            </table>  
                            <select name="availability">
                                <option value="Test1"> 1 </option>
                                <option value="Test2"> 2 </option>
                            </select>
                            <input type="submit" class="btn btn-primary" name="btn_delete" value="Update Records" /> 
                        </form>

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Вы можете обновить действие формы перед отправкой, используя javascript / jQuery, для этого вам также необходимо удалить кнопку ввода ввода и создать несколько кнопок, по одной для каждого действия, например:

<table cellpadding="1" cellspacing="1" id="resultTable">
    ...
    <button id="btn_update">Update</button>
    <button id="btn_delete">Delete</button>
</table>
<form name="actionForm" method="post"></form>

Используйте следующий скрипт для обновления формы и отправки

<script type="text/javascript">
function setFormActionAndSubmit(action) {
    const checked = $("#resultTable input[name='selected_id[]']:checked");
    if (!checked.length) {
        alert("Please select an item.");
        return;
    }


    // set form action
    const form = $(document.actionForm).attr("action", action);
    checked.each(function(){
        $("<input/>", {type: "hidden", name: "selected_id[]", value: $(this).val()}).appendTo(form);
    });
    form.submit();
}

$("#btn_update").click(function() {
    setFormActionAndSubmit("updateproduct.php")
});

$("#btn_delete").click(function(){
    setFormActionAndSubmit("delete.php")
});
</script>

UPDATE-1 Вы также можете создавать отдельные формы для каждого действия, это позволит вам добавлять любые дополнительные элементы ввода формыдоступны для конкретной формы, например, так:

// Update Form
<form name="updateForm" method="post" action="updateproduct.php">
    <select name="availability">
        <option value="Test1">1</option>
        <option value="Test2">2</option>
    </select>
</form>

// Delete Form
<form name="deleteForm" method="post" action="delete.php"></form>

Используйте следующий скрипт для отправки каждой формы

<script type="text/javascript">
function setFormValuesAndSubmit(form) {
    const checked = $("#resultTable input[name='selected_id[]']:checked");
    if (!checked.length) {
        alert("Please select an item.");
        return;
    }

    form = $(form);
    form.find("[name='selected_id[]']").remove();
    checked.each(function(){
        $("<input/>", {type: "hidden", name: "selected_id[]", value: $(this).val()}).appendTo(form);
    });
    form.submit();
}
$("#btn_update").click(function() {
    setFormValuesAndSubmit(document.updateForm);
});
$("#btn_delete").click(function(){
    setFormValuesAndSubmit(document.deleteForm);
});
</script>

UPDATE-2 для отправки формы с использованием AJAX замените setFormCheckboxValuesAndSubmit со следующим:

function setFormCheckboxValuesAndSubmit(form) {
    const checked = $("#resultTable input[name='selected_id[]']:checked");
    if (!checked.length) {
        alert("Please select an item.");
        return;
    }

    form = $(form);
    form.find("[name='selected_id[]']").remove();
    checked.each(function(){
        $("<input/>", {type: "hidden", name: "selected_id[]", value: $(this).val()}).appendTo(form);
    });
    $.ajax({
        type: "POST",
        url: form.attr('action'),
        data: form.serialize(),
        dataType: "json", // UNCOMMENT THIS IF RESPONSE IS JSON Object
        success: function(responseData) {
            alert("Form submitted successfully");
            console.log(responseData);
        },
        error: function(x) {
            alert("Something went worng")
            console.log(x, x.responseText);
        }
    });
}
0 голосов
/ 01 марта 2019

Вы можете сделать это, передав действие во время отправки формы для примера, который вы обновили, и нажмите кнопку удаления, нажав кнопку обновления и кнопку удаления. Pass action type = update или delete.либо через get или post и проверьте действие в вашем php файле.

if ($ actionType === "update") doupdate ();if ($ actionType === "delete") dodelete ();

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