2016-11-19 186 views
0

我很抱歉我的英語不好,以及基本問題。 我想問:如何使用刪除按鈕刪除表格行

假設我已經顯示了6列和行值的表。 在列的末尾有「選項標題」,行的選項爲「刪除按鈕」。

像這樣: 完整的表

enter image description here

我想要的是當我點擊刪除按鈕選定行的所有值完全刪除。

像這樣: 後刪除

enter image description here

這是我的PHP和HTML代碼:

<tbody> 
    <tr> 
     <?php 
      while($getdata = mysqli_fetch_array($result)) 
      { 
      echo"<td>".$getdata['x_id']."</td>"; 
      echo"<td>".$getdata['x_title']."</td>"; 
      echo"<td>".$getdata['x_track']."</td>"; 
      echo"<td>".$getdata['x_tag']."</td>"; 
      echo"<td>".$getdata['x_model']."</td>"; 
      echo'<td><img class="img-table-thumbnail" src="'.$getdata['x_thumb'].'"></td>'; 
      echo'<td><a type="button" class="btn btn-sm btn-default" href="'.$getdata['x_link'].' " target="_BLANK">VISIT</a></td>'; 
      echo'<td><form action="delete.php" method="post" enctype="multipart/form-data"> 
      <button type="submit" name="deleteData" class="btn-sm btn-primary"><i class="fa fa-times-circle" aria-hidden="true"></i></button> 
      </form></td>'; 
      echo "</tr>"; 
      } 

      //$result = mysqli_query($db_connect,$sql); 

      $db_connect->Close(); 
      ?> 
    </tbody> 

和delete.php:

$id = (int)$_GET['id']; 

$update = $db_connect->prepare("DELETE FROM $db_table WHERE id = ?"); 
$update->bind_param('i', $id); 
$update->execute(); 
$update->close(); 


header("location:index.php"); 
?> 

尋找幫助,預先感謝任何答案。

+0

我很想念您在HTML中發送$ _GET ['id']的位置。在刪除。php $ id什麼值得到$ id? –

+0

你應該在表單中包含id,因爲現在它不會發布任何內容。但是你也可以在表單中插入一個隱藏的輸入,例如通過點擊該行的id來設置該值。其次,'$ _POST'!='$ _GET' – Xorifelse

+0

也許我錯過了$ _GET ['id'],但是當我更改爲$ _GET ['x_id']時,它仍然沒有任何反應。 @Antonio Milo –

回答

0

請下面的代碼嘗試:

注:我還沒有看到完整的代碼,但我已經改變那裏是錯誤的分配/聲明的代碼。你可以隨意調整

<tbody> 
<tr> 
    <?php 
     while($getdata = mysqli_fetch_array($result)) 
     { 
      echo"<td>".$getdata['x_id']."</td>"; 
      echo"<td>".$getdata['x_title']."</td>"; 
      echo"<td>".$getdata['x_track']."</td>"; 
      echo"<td>".$getdata['x_tag']."</td>"; 
      echo"<td>".$getdata['x_model']."</td>"; 
      echo'<td><img class="img-table-thumbnail" src="'.$getdata['x_thumb'].'"></td>'; 
      echo'<td><a type="button" class="btn btn-sm btn-default" href="'.$getdata['x_link'].' " target="_BLANK">VISIT</a></td>'; 
      echo'<td><form action="delete.php" method="post" enctype="multipart/form-data"> 
      <button type="submit" name="deleteData" class="btn-sm btn-primary" value=".$getdata['x_id']."><i class="fa fa-times-circle" aria-hidden="true"></i></button> 
      </form></td>'; 
      echo "</tr>"; 
     } 

     //$result = mysqli_query($db_connect,$sql); 

     $db_connect->Close(); 
    ?> 

Delete.php

$id = (int)$_POST['deleteData']; 

$update = $db_connect->prepare("DELETE FROM $db_table WHERE id = ?"); 
$update->bind_param('i', $id); 
$update->execute(); 
$update->close(); 


header("location:index.php"); 
?> 
0

您使用POST作爲delete.php requestmethod的代碼。這樣做,你可以通過$ _POST ['id']獲取你的id,而不是$ _GET ['id']。但在你的情況下,你沒有任何形式控制來保存這個值。

$_POST$_GET

現在你有兩個選擇。

1.)通過將按鈕重命名爲「id」並將它的value屬性設置爲$ getdata ['your_field_with_id']來更改您的表單。在delete.php中,你必須將$ _GET ['id']更改爲$ _POST ['id'],因爲你通過POST發送formdata而不是GET。

echo ' 
<td> 
    <form action="delete.php" method="post" enctype="multipart/form-data"> 
     <button type="submit" name="id" value="', $getdata['your_field_with_id'], '" class="btn-sm btn-primary"> 
      <i class="fa fa-times-circle" aria-hidden="true"></i> DELETE 
     </button> 
    </form> 
</td>'; 

2)與下面的代碼

echo ' 
<td> 
    <a href="delete.php?id=', $getdata['your_field_with_id'], '" class="btn btn-sm btn-primary"> 
     <i class="fa fa-times-circle" aria-hidden="true"></i> DELETE 
    </a> 
</td>'; 

您的形式更換山坳正如你可以看到我刪除形式的通過一個簡單的鏈接取代它,保存的標識記錄。

就個人而言,我更喜歡第一個解決方案。