簡體   English   中英

在發布后的同一PHP頁面中處理數據庫刪除操作

[英]Process database delete action in the same PHP page with post

我正在為流程員工請假記錄構建PHP應用程序。 在此應用程序中,主屏幕填充數據庫記錄和操作按鈕。 當用戶單擊操作按鈕時,它將從表中獲取數據庫ID,並通過另一個文件刪除該記錄,然后重定向回同一頁面。 此機制使用HTML _GET方法實現。 這意味着任何人都可以在URL提要中看到行ID,並且如果有人用不同的行ID請求此URL,PHP文件將刪除該記錄,因為未采取任何其他安全措施來防止這種情況。 而且此應用程序不使用任何類型的會話。

這是我上面提到的任務的href代碼。

echo "<a href='rejectone.php?id=$lvid' class='btn btn-danger btn-xs m-r-1em'>Cancal</a>";

這是我的rejectone.php代碼

<?php
$lid =$_GET['id'];
include 'database.php';
$accval = "Accept";
try {
   $query = "UPDATE leavesrecords SET leavestatus = 'Reject' WHERE lvid = '$lid'";
    $stmt = $con->prepare( $query );
    $stmt->bindParam(1, $id);
    $stmt->execute();
}

catch(PDOException $exception){
    die('ERROR: ' . $exception->getMessage());
}   
header( "refresh:0;url=bs.php" );           
?>

我有兩個問題

1.)如何在同一個PHP文件中運行rejectone任務,而無需重定向到另一個PHP文件

2.)如果仍然使用jejectone.php文件,如何使用HTML _POST方法而不是get方法來傳輸數據

謝謝!!

首先更改您的行:

echo "<a href='rejectone.php?id=$lvid' class='btn btn-danger btn-xs m-r-1em'>Cancal</a>";

echo '<a href="javascript:;" class="btn btn-danger btn-xs m-r-1em delete-item" primary-key="'.$lvid.'">Cancal</a>';

如果您尚未在網站上包含jQuery,則可以在關閉</head>標記之前,通過將此腳本添加到頁面中來完成此操作

<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.0.min.js"></script>

在關閉</body>之前,將此JavaScript文件添加到頁面底部。

<script type="text/javascript">

$(document).ready(function(){
    $(document).on('click', '.delete-item', function(e){

        e.preventDefault();
        if(!confirm('Are you sure you want to delete this item?')) return false;

        $.post('bs.php', {'id': t.attr('primary-key'), 'delete_item': 1}, function(e){
            window.location = 'bs.php';
        })

    })  
})

</script>

將您的rejectone.php復制到bs.php,但是進行以下更改:

if(isset($_POST['delete_item']))
{
    $lid = (int)$_POST['id'];
    include 'database.php';
    $accval = "Accept";
    try {
       $query = "UPDATE leavesrecords SET leavestatus = 'Reject' WHERE lvid = :lid ";
        $stmt = $con->prepare( $query );
        $stmt->bindParam(':lid', $lid );
        $stmt->execute();
    }

    catch(PDOException $exception){
        die('ERROR: ' . $exception->getMessage());
    }

}

這就對了。

使用ajax發布方法。 有關更多詳細信息,請參見帶有示例代碼的完整解決方案示例: 刪除MySQLi記錄而不在URL中顯示id。然后使用jquery從頁面中刪除該記錄,這將提供更好的UI體驗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM