【问题标题】:How to make buttons modify data from database如何使按钮修改数据库中的数据
【发布时间】:2019-04-21 17:02:31
【问题描述】:

我有一个页面,它连接到数据库并获取一些数据,包括标题和内容。
我使用一个 while 循环来回显这个页面内的数据,我想要做的是在下面有 2 个按钮来自数据库的每个结果,即“编辑”和“删除”按钮。问题是我不知道如何使按钮删除或编辑右列。
编辑
添加了 PHP 部分:

$sql = "SELECT * FROM posts ORDER BY date DESC, time DESC $limit";
$query = mysqli_query($conn, $sql);
<?php
while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) {
    ?>
    <section>
        <b>Title: </b>
        <p><?php echo $row['name'] ?></p><br>
        <b>Content: </b><br>
        <p><?php echo $row['content'] ?></p><br>
//want to have two buttons here which can be used to edit or delete the colunm that they are under it
    </section>
    <?php
}

【问题讨论】:

  • 请发布您的实际代码,即 HTML 和 PHP 代码,CSS 在这里没有用处。
  • 您要编辑或删除什么? div 中的内容,标题,两者都有?
  • @RajdeepPaul 添加了 php
  • @DCR 编辑和删除两者
  • @Potatoman,虽然解决方案非常广泛和主观,但我在下面给出了一个答案,让您开始着手解决这个问题。请检查。

标签: php html mysqli


【解决方案1】:

假设您在 posts 表中有一个 id 列,即您有一个与每一行关联的唯一 id 值,请创建一个 &lt;form&gt;...&lt;/form&gt; 块来封装这两个 编辑删除 按钮,如下所示:

$sql = "SELECT * FROM posts ORDER BY date DESC, time DESC $limit";
$query = mysqli_query($conn, $sql);
<?php
while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) {
    ?>
    <section>
        <b>Title: </b>
        <p><?php echo $row['name'] ?></p><br />
        <b>Content: </b><br>
        <p><?php echo $row['content'] ?></p><br />
        <form action="YOURPAGE.php?id=<?php echo $row['id']; ?>" method="post">
            <input type="submit" name="edit" value="Edit" />&nbsp;
            <input type="submit" name="delete" value="Delete" />
        </form>
    </section>
    <?php
}

因此,一旦您点击特定行的 编辑删除 按钮,表单将被提交,您将能够使用 $_GET['id'] 获取该特定行 ID YOURPAGE.php 页面。根据该行 ID,执行相应的编辑或删除操作。

YOURPAGE.php

<?php
    /* get row id */
    $id = isset($_GET['id']) ? $_GET['id'] : null;

    if(isset($id) && isset($_POST['edit'])){
        /* Edit button has been clicked */

        /* create a prepared statement */
        $stmt = mysqli_prepare($conn, "SELECT name, content FROM posts WHERE id = ?")
        if($stmt){
            /* bind parameters */
            mysqli_stmt_bind_param($stmt, "i", $id);

            /* execute query */
            mysqli_stmt_execute($stmt);

            /* bind result variables */
            mysqli_stmt_bind_result($stmt, $name, $content);

            /* fetch value */
            mysqli_stmt_fetch($stmt);

            /* close statement */
            mysqli_stmt_close($stmt);

            ?>
            <form action="" method="post">
                <b>Title: </b><input type="text" name="title" value="<?php echo $name; ?>" /><br />
                <b>Content: </b><br />
                <textarea name="content" ><?php echo $content; ?></textarea><br />
                <input type="submit" name="editrow" value="Edit" />
            </form>
            <?php
        }else{
            /* error */
        }
    }

    if(isset($id) && isset($_POST['editrow'])){
        $title = $_POST['title'];
        $content = $_POST['content'];

        /* edit row details based on the row id i.e. $id */
    }

    if(isset($id) && isset($_POST['delete'])){
        /* Delete button has been clicked */
        /* Delete row based on the row id i.e. $id */
    }
?>

【讨论】:

  • 我尝试使用它并用我的代码修复了它,但是当我点击编辑或删除时,YOURPAGE.PHP 上没有出现任何内容,这是因为 if(isset($id) &amp;&amp; isset($_POST['edit'])) 失败,并且该页面的 URL 也看起来像这样,这似乎不正确:YOURPAGE.PHP?delete=DeleteYOURPAGE.PHP?edit=Edit
  • @Potatoman,我已经将第一个表单的方法从get更改为posthttps://stackoverflow.com/revisions/55785404/3,现在应该可以了,请检查更新的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2020-07-13
  • 1970-01-01
相关资源
最近更新 更多