2011-08-05 44 views
1

我剛完成我的新聞發佈系統,我需要幫助來製作新聞刪除系統。使用複選框刪除數據庫記錄?

現在我有這個代碼加載每個帖子ID和TITLE到一個表格以及旁邊的複選框。

<?php 

$news = mysql_query('SELECT `id`,`title` FROM news'); 
if (!$news) 
{ 
    exit('<p>Error retrieving news from database!<br />'. 
     'Error: '.mysql_error().'</p>'); 
} 

while ($new = mysql_fetch_array($news)) 
{ 
    $id = $new['id']; 
    $title = $new['title']; 

    echo "<tr style='background: #3D3D3d; width: 400px; font-family: Century Gothic; font-size: 15px;'>"; 
    echo "<td style='padding-left: 5px'><input type='checkbox' name='id' value='$id' /></td>&nbsp;&nbsp;&nbsp;<td style='padding-left: 15px'>$id</td>&nbsp;&nbsp;&nbsp;<td style='padding-left: 15px'>$title</td>"; 
    echo "</tr>"; 

} 
?> 

我想知道如何使用複選框按ID刪除每個數據庫記錄。

+0

嘗試分離邏輯和HTML。在該循環中,您可以檢查複選框的值,並且如果未選中複選框,則使用此ID刪除記錄。輸入你需要的表單元素。閱讀書籍和手冊,此時您的PHP知識接近0。示例代碼的可靠性爲 –

回答

-1

現在看起來你只是創建表格行,但我會繼續前進,並假設它們在表格元素中。如果此表格也位於表單元素中,那麼您可以在提交時使用選中的複選框刪除所有記錄。

您需要在窗體的動作引用中使用PHP isset函數來檢查複選框是否已設置,並且需要一個foreach循環來遍歷它們。事情是這樣的:

<?php 
    foreach($_POST as $key =>$value){ 
     if(isset($_POST[$key])){ 
       $value = mysql_real_escape_string($value); 
       mysql_query("DELETE FROM table WHERE id = $value"); 
     } 
    } 
?> 
+0

-1。 –

+0

這只是爲了說明如何使用isset函數並在後置變量之間進行迭代,以便由提問者以他/她自己的方式使用。 – Joey

+1

Ouch。如果有人提出一個要求說'id = 0; DROP TABLE very_important_table'。 – gnud

2

首先,我會建議歸檔系統在刪除只是讓數據存儲爲任何原因,你將不得不在其上找,也沒有物質的進入重要性怎麼少了。

一個想法是打破了代碼,以便它可以很容易地閱讀:

  • 所有樣式到一個CSS文件或CSS腳本需要和使用的類和 ID建立風格(其有點難以閱讀您的代碼)
  • 具有SQL程序要求來管理SQL數據,以使你的代碼 能夠從PHP切換到別的東西,如果你以往任何時候都需要

我的想法添加到代碼

<?php //deletenews.php 
//.... 
$result = $mysql_query("Call Delete_news_Entry($id)"); 
if (!$result) 
{ 
    die("Error deleting record from news" . mysql_error); 
} 

//.... end of php 
?> 

SQL程序

DELIMITER $$ 

DROP PROCEDURE IF EXISTS $$ 
CREATE PROCEDURE DB.Delete_news_entry(in_ID INTEGER) 
BEGIN 
    DELETE FROM news WHERE id=in_ID; 
END $$ 
DELIMITER ; 

(如果你希望它是活在提交按鈕) 的JavaScript

<Script type='text/javascript'> 
//depends on jquery 
function deletenews(id) 
{ 
    var spanid = "#span"+id; 
    $.get("deletenews.php", 
      null, 
      function(){ 
       Alert("Complete") //this is more or less for you to put your required code here 
       $(spanid).hide(); 
      }, 
      "html") 
      .error(function(){ 
       Alert("error") // for your own code to go here 
      }); 
} 
</script> 

對不起,只是修改代碼

//在你的php代碼,對於事件,請嘗試onclick或onchange觸發刪除

echo "<span id='span$id'><td class='left'><input type='checkbox' name='id' value='$id' onclick='deletenews($id)' /></td><td class='left'>$id</td>&nbsp;&nbsp;&nbsp;<td class='left'>$title</td></span>"; 

擁有一切的一部分可以很容易閱讀。

我一直在練習打破我的代碼很長一段時間,我甚至畫出了我的所有文件如何相關的地圖,而不是有一個PHP 1000行代碼或更多的頁面。

+0

如果它不是100%正確的,午夜。 – thebtm