为什么删除按钮空白编辑按钮执行

时间:2015-09-12 16:41:10

标签: php mysql

我在一个表中有数据库生成的内容,在行的末尾有一个表单中有编辑和删除按钮。

<td>
    <form action="?" method="post">
        <div class="">
            <input type="hidden" name="id" value="<?php htmlspecialchars($item['id']); ?>">

            <input type="hidden" name="action" value="edit_daily_shift_report">
            <input type="submit" value="Edit" onclick="return confirm('Edit this report?');"> 

            <input type="hidden" name="action" value="delete_daily_shift_report">
            <input type="submit" value="Delete" onclick="return confirm('Delete this report?');"> 
        </div>
    </form>
</td>

如果删除删除按钮,则编辑代码可以正常工作。但是,如果两个按钮都存在,则编辑按钮将失败,并且行中的项目将被删除。我很难过。不仅忽略编辑按钮的动作值,还执行删除按钮的动作值。任何帮助表示赞赏!

以下是控制器编辑和删除代码:

/***********************  Edit Daily Shift Report  ************************/
if (isset($_POST['action']) && $_POST['action'] === 'edit_daily_shift_report')
{
    include '../includes/dbconnect-local.php';

    try 
    {
       $sql = 'SELECT * FROM daily_shift_report WHERE id = :id'; 
       $s = $db->prepare($sql);
       $s->bindValue(':id', $_POST['id']);
       $s->execute();
    }
    catch (PDOException $e)
    {
        $error = 'Error deleting data.' . $e->getMessage();
        include 'error.html.php';
        exit();
    }

    // Assign page title value
    $pageTitle = 'Edit Daily Shift Report';

    // Store single row resut in $item associative array
    $item = $s->fetch(PDO::FETCH_ASSOC);

    // Display report content in form
    include 'edit_daily_shift_report.html.php';
    exit();
}

/*********************  Delete from Daily Shift Report  *******************/
if (isset($_POST['action']) && $_POST['action'] === 'delete_daily_shift_report')
{
    include '../includes/dbconnect-local.php';

    try 
    {
       $sql = 'DELETE FROM daily_shift_report WHERE id = :id'; 
       $s = $db->prepare($sql);
       $s->bindValue(':id', $_POST['id']);
       $s->execute();
    }
    catch (PDOException $e)
    {
        $error = 'Error deleting data.' . $e->getMessage();
        include 'error.html.php';
        exit();
    }

    echo '<span style="color:#ff0000;">Daily Shift Report DELETED successfully!</span>';
}

谢谢。

1 个答案:

答案 0 :(得分:0)

您需要了解帖子请求的工作原理。如您所知,您有两个action字段,一个用于删除,另一个用于编辑。 你的问题很简单,没有办法将康涅狄格州的特定输入字段转到不同的按钮。

我更愿意建议您将按钮的名称设置为action,将值设置为已用于隐藏字段的值。 有了这个,你还必须对你的html做一个小改动。而不是:

<input type="submit" value="something" onclick="something">

使用此:

<button name="action" value="edit" onclick="something">Edit</button>

删除按钮也是如此

当您使用button标记而不是input时,您可以为不同于显示的按钮设置一个值,这使得在检查{{1之后