1

希望到目前为止每个人都在享受他们的一天编码:D。我对 JQUERY 比较陌生,AJAX 一直在努力寻找自己的出路,不过我已经到了那里。然而,我有一个小问题。我有使用 PHP 从 MYSQL 数据库生成的 HTML 内容(因此复选框的值不同);这是我正在为我的网站开发的一个简单的内部消息传递程序。我有一个复选框,我可以单击它来选择页面上的所有其他复选框。但是我希望实现的是,当用户选择特定数量的复选框甚至几个复选框时,然后按下图片然后调用我的 php 文件,该文件将负责删除用户检查的消息。这个先前的问题有很大帮助:如何将 jQuery 变量传递给 PHP 变量?但我有很多复选框

HTML/JS:

<body>
    Check Box: <input type="checkbox" name="check" value="1">
Check Box: <input type="checkbox" name="check" value="4">
Check Box: <input type="checkbox" name="check" value="3">
Check Box: <input type="checkbox" name="check" value="4">

<img id = "delete" src="http://icons.iconarchive.com/icons/visualpharm/must-have/256/Delete-icon.png">

<script>
$("#delete").click(function () {
   $.post('sql_delete.php', 'num=' + $(this).val(), function (response) {
      alert(response);
   });
}); 
</script>
</body>

PHP

<?php
    require 'functions/init.php';

        $messageid = "_$POST[num]";

        $sql_statement = "DELETE FROM chj_messages WHERE message_ID = $messageid";
        mysql_query($sql_statement);


?>

我怀疑我可能在 JS 和 PHP 中都需要循环,但并不完全确定。欢迎您提出所有美丽的建议:D

4

2 回答 2

0

$messageid = "_$POST[num]";应该$messageid = $_POST['num'];

当用户单击它们时,您的代码将一一删除复选框。如果您想让用户检查尽可能多的内容,然后单击某个按钮将其删除,则需要click从复选框中删除该侦听器并将其绑定到提交按钮或您提到的图像。您还需要更改进行 ajax 调用的方式 - 您必须序列化所有检查的 id 并发送它。此外,PHP 代码需要反序列化该数据并对每个收到的 ID 进行 DELETE 查询。

此外,可能是最重要的,在使用任何使用 MySQL 的站点之前阅读SQL 注入。并且不推荐使用 mysql_* 函数,就像它在php.net上所说的那样,所以你最好切换到 mysqli_* 或 PDO。

于 2013-01-28T00:07:15.097 回答
0

jQuery:

$('#your_form').submit(function() {
    $.post('sql_delete.php', $("#your_form").serialize(), function (response) {
        alert(response);
    });
    return false;
});

html:

<form id="your_form">
  Check Box: <input type="checkbox" name="check[]" value="1">
  Check Box: <input type="checkbox" name="check[]" value="6">
  Check Box: <input type="checkbox" name="check[]" value="8">
  Check Box: <input type="checkbox" name="check[]" value="4">
  <input type="image" src="path/to/your/image">
</form>

php:

$messageid = $_POST['check'];
foreach($messageid as $id) {
     $sql_statement = "DELETE FROM chj_messages WHERE message_ID = $id";
      mysql_query($sql_statement);

}

上面编辑的代码已经过测试。

此外,php 可能应该在没有循环的情况下完成

$messageid = $_POST['check']; // sql injection already discussed.
$in = implode(", ", $messageid);
$sql_statement = "DELETE FROM chj_messages WHERE message_ID IN ($in)";
mysql_query($sql_statement);
于 2013-01-28T00:28:26.800 回答