2011-08-05 42 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