簡體   English   中英

PHP刪除按鈕始終開始刪除最后一行

[英]PHP delete button always starts deleting the last row

webbrowser上的booklist.php 在此處輸入圖片說明

數據庫表內容

數據庫表結構

好的,因為您有經驗,所以這對您來說可能很簡單,但是我無法弄清楚為什么每次我點擊表格第一行的“刪除”按鈕時,都會刪除最后一行而不是我點擊“刪除”的行。 僅發生在第一行。 第二行將完全刪除數據庫。

我的代碼有什么問題嗎?表結構是否有問題? 我已經為兩個單獨的php文件(即booklist.php和edit.php)提供了代碼,感謝您的幫助,因為我對PHP確實很陌生。 尚未熟悉所有規則,什么還沒有。 謝謝。

//booklist.php below
echo "<form method='POST' action='edit.php'>";
    while($row = mysql_fetch_array($result))
    {
    $bookID_Var = $row['No'];
    $titleVar = $row['Title'];
    $authorVar = $row['Author'];  //authorVar is a variable container for the value of Author row in librarydatabase
    $ISBN = $row['ISBN'];

    echo "<tr>";
        echo "<td>" .$bookID_Var. "</td>";
        echo "<td>" . $titleVar. "</td>";   // there's no need to quote variables. In this line, we used variables $authorVar and $titleVar
        echo "<td>" . $authorVar. "</td>";
        echo "<td>" . $ISBN . "</td>";
        echo "<td> <input type='submit' value='Edit'> </td>"; // Edit button
        echo "<td> <input type='submit'  name='delete' value='Delete'> </td>"; // Delete button

        echo "</tr>"; 
    echo "<input type='hidden' name='bookID' value='  " .$bookID_Var. "  '>";

    } // end of while loop

    echo "</form>";



//edit.php below

<?php
if (isset($_POST['delete'])) {
    echo "entered delete if block <br />";
    echo "Value: " . $_REQUEST['bookID'];

    $bookID = $_REQUEST['bookID'];
    $sql = " DELETE FROM booklist WHERE No='$bookID'  ";
    $result = mysql_query($sql);

    if ($result) {
        echo "Successfully deleted" . "Book ID: " . $bookID;
    }
} // end of main if
?>

第一。 遵循約定。 將您的primary keys命名為id。 第二,嘗試回顯您的query 您確定$_REQUEST['bookID'] == 14? :-)

更換

 $sql = " DELETE FROM booklist WHERE No='$bookID'  ";

echo  $sql = " DELETE FROM booklist WHERE No=".$bookID;exit;

並測試通過哪個ID,我確定存在通過ID的問題。

您應該使用鏈接操作而不是提交操作來基於行進行刪除:

例如:

更改:

<input type='submit'  name='delete' value='Delete'>

<a href="edit.php?bookID=<?php echo $row['No'] ?>">Delete</a>

如果您對整個數據集使用一種形式,則您的隱藏字段在每一行中將具有相同的名稱。 似乎最后一個優先於先前所有。

有更好的方法向下傳遞每一行的ID,一種簡單的方法是將刪除邏輯分離為delete.php ,然后可以將Delete按鈕作為鏈接(而不是表單)作為鏈接,並將每一行鏈接delete.php?bookid=<id>

試試這個方法:

使用hyperlinkinput

echo "<a href='edit.php?act=delete&id=<?php echo $bookID; ?> '>Delete</a>"; 

或PHP代碼:-

<?php
if(isset($_GET['act']) && $_GET['act']=='delete'){
$bookID=$_GET['act'];
 $sql = " DELETE FROM booklist WHERE No='$bookID'  ";
}

暫無
暫無

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

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