我的网站上有一个页面,就像收件箱一样。
我在每条消息旁边都有复选框
<input type='checkbox' name='check_list[]' value='$id'>
然后我有2个提交按钮
<button class="btn btn-default" input type="submit" name="read_button" value="read">
<span class="fa fa-trash"></span> Delete Selected</button>
<button class="btn btn-default" input type="submit" name="delete_button" value="Delete">
<span class="fa fa-check"></span> Mark as Read</button>
我的问题是,如何根据点击的提交按钮让数据库做两件事呢?
我的删除查询下面的示例
if (isset($_POST['delete_button')) {
if(!empty($_POST['check_list'])) {
$check_list = $_POST['check_list'];
$result = mysql_query("UPDATE mail SET mail_deleted='1' WHERE id IN (".implode(',', $check_list).")") or die(mysql_error());
}
}
答案 0 :(得分:0)
比较值:如果值==“删除”,则此查询:XXX
Elseif值==“读”:执行此操作:YYY
答案 1 :(得分:0)
检查项目是否被检查可能更容易,首先,然后根据单击的按钮选择查询。有关示例,请参阅提供的代码。
<form action="filename.php" method="POST">
<input type="submit" name="delete_button" value="Delete">
<input type="submit" name="read_button" value="Read">
</form>
确保替换该代码中的filename.php
。我使HTML标记尽可能简单。
<?php
if(!empty($_POST['check_list'])) {
$check_list = implode(",", $_POST['check_list']);
if (isset($_POST['delete_button'])) $query = "UPDATE mail SET mail_deleted='1' WHERE id IN (".implode(',', $check_list).")";
if (isset($_POST['read_button'])) $query = "UPDATE mail SET mail_read='1' WHERE id IN (".implode(',', $check_list).")";
mysql_query($query);
}
?>
但是,您应该注意不推荐使用您正在使用的数据库扩展。有多种选择,mysqli
是&#34;更容易&#34;一个(与mysql
非常相似),PDO是面向对象的解决方案。对预准备语句的支持使mysql查询更容易,更安全。有关更多信息,请参阅官方PHP网站:http://php.net/manual/en/mysqli.overview.php
答案 2 :(得分:0)
if (isset($_POST['delete_button'))
{
// Do delete stuff
}
elseif (isset($_POST['read_button'))
{
// Do read stuff
}
附注2:使用placeholders而不是将请求值直接插入SQL字符串,因为后者会打开SQL injection次攻击。
答案 3 :(得分:0)
使用switch
,因为您的按钮会带来“值”。首先,使用相同的名称重命名按钮,例如:
<button class="btn btn-default" input type="submit" name="button" value="Delete"> <span class="fa fa-trash"></span> Delete Selected</button>
<button class="btn btn-default" input type="submit" name="button" value="Read"> <span class="fa fa-ok"></span> Mark as Read</button>
在你的php中,把开关代替if
:
$check_list = $_POST['check_list'];
switch($_POST['button']){
case "Delete":
$result = "UPDATE mail SET mail_deleted='1' WHERE id IN (".implode(',', $check_list).")";
break;
case "Read":
$result = "UPDATE mail SET mail_read='1' WHERE id IN (".implode(',', $check_list).")";
break;
}
mysql_query($result) or die(mysql_error());