PHP删除、编辑、保存帖子

PHP删除、编辑、保存帖子,php,post,save,edit,Php,Post,Save,Edit,我已经查询了我的数据库,我有一个帖子的ID,如下所示: <?php //Database query code is here. $post_id = $row['id']; ?> 我在每篇文章中添加了一个带有按钮的表单,这样当单击时,action.php文件中的相应函数将被执行以输出一个字符串。 如下 <form action = "action.php" method = "post"> <input type = "hidden" name = &l

我已经查询了我的数据库,我有一个帖子的ID,如下所示:

<?php
//Database query code is here. 
$post_id = $row['id'];

?>

我在每篇文章中添加了一个带有按钮的表单,这样当单击时,action.php文件中的相应函数将被执行以输出一个字符串。 如下

<form action = "action.php" method = "post">
<input type = "hidden" name = <?php echo "$post_id"?>">
<button type = "submit" name = "delete_post">Delete post </button>
<button type = "submit" name = "edit_post">Edit post </button>

<button type = "submit" name = "save_post">Save post </button>

</form>


感谢@chris85鼓励我们重读这个问题

以下是输入表单和支持表单的函数

input_form.php

<html>
 <body>
  <form action="action.php" method="post">
   <?php echo '<input type="hidden" name="post_id" value="$post_id">' ?>
   <input type="radio" name="action" value="delete_post">Delete
   <br>
   <input type="radio" name="action" value="edit_post">Edit
   <br>
   <input type="radio" name="action" value="save_post">Save
   <br>
   <input type="submit">
  </form>
 </body>
</html>
<?php

if ( ! isset($_POST['post_id']) ) {
   // Handle the case if $_POST['post_id'] is not set
}

if ( ! isset($_POST['action']) ) {
   // Handle the case if $_POST['action'] is not set
}

# Print the input we got
echo $_POST['post_id'];
echo '<br>';
echo $_POST['action'];
echo '<br>';

if ( $_POST['action'] === 'delete_post' ) {
   delete_post($_POST['post_id']);
}
elseif ( $_POST['action'] === 'edit_post' ) {
   edit_post($_POST['post_id']);
}
elseif ( $_POST['action'] === 'save_post' ) {
   save_post($_POST['post_id']);
}

//first function
function delete_post($post_id){
    echo " you attempted to delete the post, baby";
}

//Second function
function edit_post($post_id){
    echo "Hey you attempted to edit the post!";
}

//Third function
function save_post($post_id){
    echo " Wow, did you really need to save that post?";
}

?>

删除

编辑
拯救
action.php

<html>
 <body>
  <form action="action.php" method="post">
   <?php echo '<input type="hidden" name="post_id" value="$post_id">' ?>
   <input type="radio" name="action" value="delete_post">Delete
   <br>
   <input type="radio" name="action" value="edit_post">Edit
   <br>
   <input type="radio" name="action" value="save_post">Save
   <br>
   <input type="submit">
  </form>
 </body>
</html>
<?php

if ( ! isset($_POST['post_id']) ) {
   // Handle the case if $_POST['post_id'] is not set
}

if ( ! isset($_POST['action']) ) {
   // Handle the case if $_POST['action'] is not set
}

# Print the input we got
echo $_POST['post_id'];
echo '<br>';
echo $_POST['action'];
echo '<br>';

if ( $_POST['action'] === 'delete_post' ) {
   delete_post($_POST['post_id']);
}
elseif ( $_POST['action'] === 'edit_post' ) {
   edit_post($_POST['post_id']);
}
elseif ( $_POST['action'] === 'save_post' ) {
   save_post($_POST['post_id']);
}

//first function
function delete_post($post_id){
    echo " you attempted to delete the post, baby";
}

//Second function
function edit_post($post_id){
    echo "Hey you attempted to edit the post!";
}

//Third function
function save_post($post_id){
    echo " Wow, did you really need to save that post?";
}

?>

希望这有帮助



在原始代码中,每个操作类型都有一个单独的按钮(即,一个用于删除、编辑和保存)。如果您强烈希望使用多个按钮而不是单选按钮,我建议您使用以下JavaScript回答:

您有三个问题:

  • 您正在调用
    \u$POST
    而不是
  • 除上述内容外,您不应将美元符号传递到帖子中:
    \u$post[“$save\u post”]
    应为
    $\u post[“save\u post”]

  • 应该有一个正确的ID。您需要在这里实际输出
    $post\u ID
    ,而不仅仅是写出PHP变量。记得;这是原始HTML;您不在PHP块中,因此您的ID实际上只是字符串
    $post\u ID
    。要更正此问题,请使用
    输出变量。您必须从表单接收ITEN,并执行if语句

    <form action = "action.php?post_id=$post_id" method = "post">
        <input type="hidden" name = "$post_id">
        <button type="submit" name="delete_post" value="delete_post">Delete post </button>
        <button type="submit" name="edit_post" value="edit_post">Edit post </button>
        <button type="submit" name="save_post" value="save_post">Save post </button>
    </form>
    

    \u$POST
    应该是
    $\u POST
    ,否则会发生什么?您需要首先在表单中输出
    $POST\u id
    。检查命名索引,如果存在,则执行相应的函数
    if(!empty($\u POST[edit\u POST']){delete\u POST($\u GET['POST\u id'])
    隐藏的输入也应该有一个静态名称和一个值,或者您不需要它。@kchason,谢谢您的更正。我现在将
    \u POST更改为
    $\u POST,并在添加delete\u POST($POST\u id);edit\u POST($POST\id);save\u POST($POST\id)信息技术worked@chris85谢谢。这帮了我很大的忙。我的代码随后运行了。但是我需要隐藏的输入,使变量名不是静态的,所以你需要回显变量,并将其放入阀中,而不是名称。谢谢,你的方法运行了,但实际上我需要三个按钮。谢谢你的响应。这很有帮助。但是,你没有指出hat$POST必须是$\u POST,“$save\u POST”必须是$POST[“$save\u POST”]中的“save\u POST”没有美元符号。这在前面的评论中已经指出。我只是添加了正确的符号,这样另一个初学者可能不会感到困惑。我的第一个要点是,
    \u$POST
    需要是
    $\upost
    。但是,是的,您正在寻找
    $\upost[“save\u POST”]
    。虽然我在要点中提到了更正,但我忘记了实际更新代码。我现在已经更正了:)也很难识别
    @chris85,实际上从数据库检索到的每个帖子都有自己的Id,函数将使用该Id删除、编辑或保存该帖子。如果我做了,那么该函数将删除所有具有name=“static\u id”的帖子,但我只希望删除、编辑或保存一个类型的目标帖子。这就是为什么我需要一篇文章有变量name=“$post\u id”@ElizabethKof,如果你仍然不知道如何访问它,
    $\u post['static\u id']
    会比
    foreach($\u post as$name=>$无用){if($name='what you checking');}
    <form action = "action.php?post_id=$post_id" method = "post">
        <input type="hidden" name = "$post_id">
        <button type="submit" name="delete_post" value="delete_post">Delete post </button>
        <button type="submit" name="edit_post" value="edit_post">Edit post </button>
        <button type="submit" name="save_post" value="save_post">Save post </button>
    </form>
    
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        //something posted
    
        if (isset($_POST['delete_post'])) {
            // delete_post code
        } else if (isset($_POST['edit_post'])) {
            //edit_post code
        } else {
            // save_post code
        }
    }