[英]PHP delete button always starts deleting the last row
好的,因为您有经验,所以这对您来说可能很简单,但是我无法弄清楚为什么每次我点击表格第一行的“删除”按钮时,都会删除最后一行而不是我点击“删除”的行。 仅发生在第一行。 第二行将完全删除数据库。
我的代码有什么问题吗?表结构是否有问题? 我已经为两个单独的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>
。
试试这个方法:
使用hyperlink
不input
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.