PHP中的编辑/更新按钮


Edit/Update button in PHP

我是PHP新手,我正在寻找一种方法来区分使用循环语句创建的按钮。我的任务是这样的:表中的每个数据都将被显示,每个数据的相应更新按钮将通过循环跟随。如果点击更新按钮,数据将被更新。

这是我的代码:

<?php
        $query=mysqli_query($con,"SELECT * FROM POSTS where `post_status`= 1 order by `post_date` DESC");
        while($data = mysqli_fetch_array($query))
        {
            $ID=$data['post_id'];
            echo"<tr>";
                echo"<td>".$ID ."</td>";
            echo"</tr>";

            echo"<tr>";
                echo"<td>"."on ".$data['post_date'] ."</td>";
            echo"</tr>";
            echo"<tr>";
                echo"<td>".$data['post_title']."</td>";
            echo"</tr>";
            echo"<tr>";
                echo"<td>" .htmlspecialchars_decode($data['post_body'])."<br/>"."</td>";
            echo"</tr>";
            echo"<tr>";
                echo"<td rowspan=1>"."<input type='"submit'" value='"Approve'" name='"$ID'">"."</td>";
            echo"</tr>";
            echo "<tr>";
            echo "<td colspan=4>"."<hr/>"."</td>";
            echo"</tr>";

            if(isset($_POST['Approve']))
            {
                $a=$ID;
                $query2 = mysqli_query($con, "UPDATE POSTS SET post_status = '2' WHERE post_id='$a'");
            }
        }

        ?>

为我糟糕的编程技术感到抱歉。希望你们能帮助我。谢谢!

您可以使用button html:

while($data = mysqli_fetch_array($query)) {
    ....
    echo '<button type="submit" name="btn_update" value="'. $ID. '">Update</button>';
}

这样,需要更新的行id将在$_POST['btn_update']中;不要忘记通过

验证发布的ID

因为您需要在循环之外执行var验证。

哦,使用filter_has_var而不是isset,如果可能的话,只让php做php的事情。

为什么要使用filter_*而不是isset()?使用filter_has_var()比isset()有什么好处

   <?php
    $query=mysqli_query($con,"SELECT * FROM POSTS where `post_status`= 1 order by `post_date` DESC");
    while($data = mysqli_fetch_array($query))
    {
        $ID=$data['post_id'];
        ?>
           <tr><td><?php echo $ID; ?></td></tr>
           <tr><td>on <?php echo $data['post_date']; ?></td></tr>
           <tr><td><?php echo $data['post_title']; ?></td></tr>
           <tr><td><?php echo htmlspecialchars_decode($data['post_body']); ?><br/></td>
            </tr>
<?php // and so on.. 
        echo"<tr>";
        echo"<td rowspan=1>"."<input type='"submit'" value='"Approve'" name='"$ID'">"."</td>";
        echo"</tr>";
?>
        <tr><td colspan=4>.<hr/>.</td></tr>
<?php

    }
    if(filter_has_var(INPUT_POST,'Approve'))   {
            $a=$ID;
            $query2 = mysqli_query($con, "UPDATE POSTS SET post_status = '2' WHERE post_id='$a'");
        }
    ?>

如果我是你,我会使用get方法这样做:

        <?php
            $query=mysqli_query($con,"SELECT * FROM POSTS where `post_status`= 1 order by `post_date` DESC");
            while($data = mysqli_fetch_array($query))
            {
                $ID=$data['post_id'];
                echo"<tr>";
                    echo"<td>".$ID ."</td>";
                echo"</tr>";

                echo"<tr>";
                    echo"<td>"."on ".$data['post_date'] ."</td>";
                echo"</tr>";
                echo"<tr>";
                    echo"<td>".$data['post_title']."</td>";
                echo"</tr>";
                echo"<tr>";
                    echo"<td>" .htmlspecialchars_decode($data['post_body'])."<br/>"."</td>";
                echo"</tr>";
                echo"<tr>";
                    echo"<td rowspan=1>"."<a href='"your current page url?action=update&id=".$ID."'">Approve</a>"."</td>";
                echo"</tr>";
                echo "<tr>";
                echo "<td colspan=4>"."<hr/>"."</td>";
                echo"</tr>";
    }
?>

然后在你的页面顶部写上这段代码:

<?php
        if(isset($_GET['action']) && $_GET['action']==update){
    if(isset$_GET['id']){
    $a=$_GET['id'];
                    $query2 = mysqli_query($con, "UPDATE POSTS SET post_status = '2' WHERE post_id='$a'");
                }
    }
    ?>