2015-11-02 148 views
0

booklist.php on webbrowser進入的形象在這裏描述PHP刪除按鈕總是開始刪除最後一行

Database Table Contents

Database Table Structure

好了,所以這可能只是簡單的爲你們既然你有經驗,但我可以」我不知道爲什麼每次我在我的表的第一行點擊「刪除」按鈕時,它會刪除最後一行,而不是我點擊「刪除」的行。只發生在第一行。第二行會在數據庫上完美刪除。

我的代碼有什麼問題,或者我的表結構有問題嗎?我已經提供了兩個單獨的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 
?> 
+0

它涉及到phpmyadmin的工具而不是PHP語言 –

回答

0

試試這個辦法: -

使用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' "; 
} 
+0

感謝您的幫助。使用超鏈接並將其重定向到一個單獨的delete.php文件解決了我的問題。建議在傳遞值而不是輸入/按鈕時使用超鏈接?謝謝。 – p3ace

0

首先,遵循約定。將您的primary keys命名爲id。其次 - 嘗試迴應你的query。你肯定的是,如果你的$_REQUEST['bookID'] == 14? :-)

0

更換

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

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

和ID傳遞測試我肯定是傳遞一個ID的問題。

+0

謝謝,呼應幫我調試。我很感激幫助。 – p3ace

0

您應該使用鏈接行動,而不是提交操作基礎上刪除行:

如:

變化:

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

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

謝謝,@伊姆蘭。我感謝您的幫助。 – p3ace

0

如果你使用一個整個數據集的形式,您的隱藏字段將在每一行中具有相同的名稱。看起來最後一個覆蓋了所有以前的。

有更好的方法傳遞每行的id,一種簡單的方法是將你的刪除邏輯分成delete.php,然後你可以把刪除按鈕作爲一個鏈接,而不是一個表單,行鏈接到delete.php?bookid=<id>

+0

這絕對有幫助。我把它放在一個單獨的deleted.php文件中。它讓我更容易調試。謝謝。 – p3ace