PHP从一个表单更新DB上的不同字段

时间:2015-02-13 13:22:54

标签: php mysql

我的网站上有一个页面,就像收件箱一样。

我在每条消息旁边都有复选框

<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());
}
}

4 个答案:

答案 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
}

附注1:使用mysqliPDO代替旧版mysql功能

附注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());