使用复选框删除数据库记录?

时间:2011-08-05 04:53:40

标签: php checkbox record

我刚刚完成了我的新闻发布系统,我需要帮助来制作新闻删除系统。

现在我有这个代码将每个帖子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>";

}
?>

我想知道如何使用复选框删除每个数据库记录。

2 个答案:

答案 0 :(得分:2)

首先我推荐一个Archive系统而不是删除只是为了保存数据,无论条目有多么重要,无论出于何种原因都要存储数据。

一个想法就是分解代码,以便于阅读:

  • 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行代码或更多代码。

答案 1 :(得分:-1)

现在看起来你只是在创建表行,但是我要继续并假设它们在table元素中。如果此表也在表单元素中,则可以在提交时删除带有选中复选框的所有记录。

您需要在表单的操作引用中使用PHP isset函数来检查是否已设置复选框以及是否运行了所有复选框。像这样:

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