将多个变量从jquery传递给php

时间:2013-01-28 00:04:09

标签: php jquery ajax html5 css3

希望大家到目前为止都在享受他们的日常编码:D。我对JQUERY相对较新,而AJAX一直试图找到自己的方式,但我已经到了那里。但是我有一个小问题。我有使用PHP从MYSQL数据库生成的HTML内容(因此复选框的值不同);这是一个简单的内部消息程序,我正在为我的网站工作。我有一个单击复选框,我可以单击该选项将选中页面上的所有其他复选框。然而,我希望实现的是当用户选择特定数量的复选框或甚至几个,然后按下图片然后调用我的php文件,该文件将负责删除用户检查的消息。上一个问题有很多帮助:How to pass jQuery variables to PHP variable?但我有很多复选框

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分: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);