簡體   English   中英

如何從HTML表中刪除記錄?

[英]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”。

原因:

  • 刪除鏈接(a href)可以很容易地被索引和加書簽。 您不希望每次Google丟棄或用戶瀏覽其歷史記錄時都刪除寵物。
  • method ='get'形式也可能導致該URL被添加書簽和/或顯示在歷史記錄中。 帶有表單的方法將完全不需要Javascript。

除此之外,

  • 使用Ajax可以輕松地將任何解決方案(形式和鏈接)“升級”為解決方案,以獲得更好的用戶體驗,但這始終是一項額外功能,並且沒有核心功能。
  • 如果願意,可以將“提交”按鈕設置為鏈接的樣式。
  • 如果實現此解決方案,請使用post-redirect-get模式

也就是說,假設您實際上要從數據庫中刪除記錄。 如果您只想更改HTML,則使用Javascript解決方案會更有意義。

暫無
暫無

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

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