[英]How to delete a record from HTML table?
到目前為止,我已經有了以下代碼:此表單是在查詢循環期間生成的
while ($row = mysql_fetch_assoc($result)) {
echo "<tr>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['age'] . "</td>";
echo "<td>" . $row['breed'] . "</td>";
if($row['neuteredOspayed']=="1"){
echo "<td>" . "neutered" . "</td>";
}else
echo "<td>" . "spayed". "</td>";
echo "<td>" . $row['priceFee'] . "</td>";
if($row['housebroken']=="1"){
echo "<td>" . "yes" . "</td>";
}else
echo "<td>" . "no". "</td>";
if($row['goodwithdogs']=="1"){
echo "<td>" . "yes" . "</td>";
}else
echo "<td>" . "no". "</td>";
if($row['goodwithcats']=="1"){
echo "<td>" . "yes" . "</td>";
}else
echo "<td>" . "no". "</td>";
echo "<td>" . $row['status'] . "</td>";
echo "</tr>";
}
echo "</table>";
現在,是否有一種方法可以在每個結果旁邊放置一個鏈接,說“刪除”? 例如在狀態字段旁邊? 這是它的樣子:
要刪除此記錄,我想我需要以某種方式發現記錄。 我需要給動物起個名字。 例如,如何從表中獲取值“ Sparky”並將其分配給變量? 如果我有名字,我將能夠進行檢查並運行查詢,女巫將刪除記錄。
您將必須使用Javascript和AJAX。
基本上,您需要將一個按鈕放在一個單元格中,每行一個,然后單擊它,將要刪除的記錄的ID通過AJAX傳遞回PHP腳本,然后從數據庫中刪除該記錄。 單擊該行時,它也應該隱藏該行。
我建議使用jQuery的.ajax() ,因為原始XHR充其量是痛苦的。
僅使用PHP無法做到這一點,因為HTTP是無狀態的。 加載網頁后,HTML和PHP部分即完成並修復。 您將必須使用Javascript進行連續請求。
另外,正如bcmcfc指出的那樣,您也可以只具有指向腳本的超鏈接,該腳本將從數據庫中刪除記錄。
您需要在while循環中添加以下內容:
echo '<td><a href="path/to/delete.php?name='.$row['name'].'">Delete</a></td>';
盡管使用表的主鍵會比使用名稱更好-該名稱在數據庫中是否唯一? 假設有一個PK,它稱為id
:
echo '<td><a href="path/to/delete.php?id='.$row['id'].'">Delete</a></td>';
Php僅用於頁面生成,一旦生成了該表,就無法對其進行修改。 但是,您可以發出新的get請求,並指定要刪除的行名稱作為參數,但是您必須更改服務器php代碼以考慮該參數。
根據我的說法,最好的方法是使用javascript:為每行分配一個td id,然后編寫一個簡單的函數刪除該行。
您必須提交表格並執行此操作。
<input type="submit" name="submit" value="Delete" />
提交后,表單將重定向到某些頁面。 在該頁面中,您獲得了所有過帳的值。 因為您可以使用記錄ID刪除記錄,否則可以使用相應記錄的名稱。
$query = "DELETE FROM table_name WHERE name='$_POST['name']'";
(or)
$query = "DELETE FROM table_name WHERE id='$_POST['id']'";
執行此操作后,您必須將URL重定向到該頁面。
(or)
<a href="delete.php?id='.$row['id'].'">Delete</a>
在這個文件中,您必須這樣寫...
$id = $_REQUEST['id'];
$query = "DELETE FROM table_name WHERE id='$id'";
//Add this form before the end of the while loop
<form action="#" method="post">
<input type="hidden" name="name" value="<?php echo $row['name']?>">
<input type="submit" name="delete" value="delete">
</form>
//Add this at the end of the coding
<?php
if(isset($_POST['delete']))
{
//database connection
$sql="DELETE FROM `table_name` WHERE `name`='{$_POST['name']}'";
$queryEXE=mysql_query($sql);
}
?>
您向每個<tr>
添加一個“ elemID”屬性,並為每個行添加一個單獨的新類(例如elem + the id
):
<tr elemId="12" class="elem12">...</tr>
然后,對於Delete鏈接,您使用AJAX調用從數據庫中刪除行的頁面,並將elemID作為參數傳遞給此函數:
function deleteRow(thisElemID) {
$.ajax({
url: yourURL,
data: {'elemID', thisElemID },
success: function() {
$('.elem'+thisElemID).remove();
}
});
}
有關$ .ajax的更多信息,請點擊這里 。
在表中創建另一個單元格,然后調用該按鈕的ajax onclik。 在您的ajax調用中刪除特定行
對每一行使用“刪除”表單。
最好的方法是為每一行添加一個帶有提交按鈕的表單。 每個表單都有一個隱藏字段,其中包含要刪除的記錄的ID(或名稱,如果需要,則為名稱)。 將表單的方法設置為“ post”。
原因:
除此之外,
也就是說,假設您實際上要從數據庫中刪除記錄。 如果您只想更改HTML,則使用Javascript解決方案會更有意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.