希望大家到目前为止都在享受他们的日常编码: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
答案 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);