2015-12-03 141 views
0

我有一個while循環顯示我的數據庫列和表中的行。
從PHP刪除MySQL行while循環

我想製作一個按鈕,它可以刪除特定的MySQL行,但不幸的是我不能選擇刪除所有行中的哪一行,因爲我使用「while循環」來顯示我的數據庫內容。

提供更好的理解圖片是我想做的事: enter image description here
所以,是的,我想是點擊綠色按鈕時 - 發送MySQL查詢,刪除該行(這是在我的DB現有的)。

提供代碼:

<?php 
//CONECT TO MYSQL 
include 'database.php'; 

//GET VALUES 
     $sql = "SELECT * FROM amountcontainer"; 
     $result = $conn->query($sql); 


     if ($result->num_rows > 0) 
     { 
      //Table headlines - NOT A PHP 
      echo "<table class='moneytable'> 
        <tr> 
         <th style='background-color: #2d323a; color: white;'>Date</th> 
         <th style='background-color: #2d323a; color: white;'>Amount</th> 
         <th style='background-color: #2d323a; color: white;'>Reason</th> 
        </tr>"; 

      // output data of each row 
      while($row = $result->fetch_assoc()) 
      { 

       //RED //Make statement of amount red if it has a " - " 
       if(strpos($row['amount'],'-') !== false) 
       { 

        echo 
        " 
         <tr> 
          <th style='font-weight: normal;background-color: #ff9999;' class='row-time'>" . $row['time'] . "</th> 
          <th style='font-weight: normal;background-color: #ff9999;' class='row-amount'>" . $row['amount'] . "</th> 
          <th style='font-weight: normal;background-color: #ff9999;' class='row-reason'>" . $row['reason'] . "</th> 
         </tr> 

        "; 

       } 

       //NORMAL //Make statement of amount normal if it doesn't have a " - " 
       else 
       { 
        echo 
        " 
         <tr> 
          <th style='font-weight: normal;' class='row-time'>" . $row['time'] . "</th> 
          <th style='font-weight: normal;' class='row-amount'>" . $row['amount'] . "</th> 
          <th style='font-weight: normal;' class='row-reason'>" . $row['reason'] . "</th> 
         </tr> 

        "; 

       } 


      } 
      echo "</table>"; 
     } 

     else 
     { 
      echo "0 results"; 
     } 
+0

您是否有可以參考刪除行的表上的主索引或唯一鍵? – Ohgodwhy

+0

我沒有。我正在考慮做同樣的事情,但不知道如何。 –

+0

[看看這裏,朋友](http://stackoverflow.com/questions/15255304/how-add-unique-key-to-existing-table-with-non-uniques-rows) – Ohgodwhy

回答

1

首先,只有使用表頭<th>元素。對於實際的數據單元使用<td>元素。

要允許刪除單個數據庫行,可以在表中包含鏈接。在你的循環創建錶行:

    <tr> 
         <td>" . $row['time'] . "</td> 
         <td>" . $row['amount'] . "</td> 
         <td>" . $row['reason'] . "</td> 
         <td><a href='?deleteId=$row[keyID]'>Delete</a></td> 
        </tr> 

在這種情況下,當「刪除」鏈接,選擇它以$ _GET變量調用你的同一個腳本:「deleteId」,它可以測試,如果發現,執行該行的刪除。您還可以將表格嵌入到HTML表格中,並將提交按鈕添加到每行中的單元格,將提交值設置爲要刪除的行ID。

+0

由於@Ohgodwhy提到你需要一個表的主鍵。幾乎沒有例外,數據庫中的每個表都應該有一個主鍵。 –

+0

我認爲這可能是答案。我怎樣才能用這個「GET」方法調用函數?我只是測試它,我看到它標誌着我的排,這太棒了! –

+0

在該示例中,表中的主鍵是表中的「keyID」,您將需要具有表示表中行的唯一標識符的列。當你點擊鏈接時,它會調用相同的頁面,但帶有一個url參數。你可以這樣測試:if($ _ GET ['deletedId']){$ sql =「DELETE FROM MyTable WHERE keyID ='$ _GET [deletedId]'」; –

1

這聽起來像AJAX的地方。下面是一個粗略的例子,可能會給你一個很好的起點。

<?php 
while($row = $result->fetch_assoc()) { 
    $isNegative = strpos($row['amount'],'-') !== false; 

    echo "<tr class='record' data-id=\"{$row["id"]}\">"; 
    //Use ternary operator & css classes 
    echo "<td class='standard-record ".$isNegative ? "color-red" : "" ."''>{$row["record"]}</td>"; 
    echo "</tr>"; 
} 
?> 
<script> 
    $(".record").click(function(){ 
     var request = { 
      id: $(this).data("id") 
     }; 
     $.post("delete-record.php", request, function(data){ 
      $(this).remove(); 
     }); 
    }); 
</script> 
1

更改此

if(strpos($row['amount'],'-') !== false) # wrong way 

這個

if($row['amount'] < 0) # detecting negative numbers 
+0

感謝您的支持! –

1

您需要添加額外的

<th style='font-weight: normal;' class='row-reason'><a class="crossBtn" href="?del_id=".$row['id'].">&nbsp;</a></th> 

而得到del_id和刪除特定記錄。