首页 > 解决方案 > 用 php 和 sql 更新类别名称不起作用

问题描述

我正在尝试更新类别名称但没有运气...

在functions.php上,我有一个显示所有类别的功能:

function get_all_categories(){
    global $connection;
    $query = 'SELECT * FROM categories';
    $select_categories = mysqli_query($connection,$query);
    while ($row = mysqli_fetch_assoc($select_categories)) {
    $cat_id = $row['cat_id'];
    $cat_title = $row['cat_title'];
    echo "<tr>";
    echo "<td>$cat_id</td>";
    echo "<td>$cat_title</td>";
    ?>
    <form method="post">
        <input type="hidden" name="delete_cat_id" value="<?php echo $cat_id; ?>">
        <?php 
        echo '<td class="text-center"><input class="btn btn-danger" type="submit" value="Delete" name="delete"></td>';
         ?>
    </form>

    <form method="post">
        <input type="hidden" name="update_category_id" value="<?php echo $cat_id; ?>">
        <?php 
        echo '<td class="text-center"><input class="btn btn-info" type="submit" value="Update" name="update_category"></td>';
        ?>
    </form>
<?php 
    // echo "<td class='text-center'><a class='btn btn-info' href='categories.php?update=$cat_id'>Update</a></td>";
    echo "</tr>";
    }

}

该函数显示在文件 categories.php 中:

    <form action="" method="post">
                                        <div class="form-group">
                                            <label for="my_new_cat">Add a new category
                                            <input class="form-control" type="text" name="my_new_cat">
                                            </label>
                                        </div>
 <input type="hidden" name="category_id" value="<?php echo $cat_id; ?>">
                                <div class="form-group">
                                    <input class="btn btn-primary" type="submit" name="submit" value="Add Category">
                                </div>
                            </form>
                <?php 
                if (isset($_POST['update_category'])) {
                include "includes/update_categories.php";
                }
                ?>

我在 update_categories.php 中的代码是:

    <?php 
        $selected_cat_id = $_POST['update_category_id'];
        $query = "SELECT * FROM categories WHERE cat_id = $selected_cat_id";
        $select_edit_categories = mysqli_query($connection,$query);
        while ($row = mysqli_fetch_assoc($select_edit_categories)) {
            $cat_id = $row['cat_id'];
            $cat_title = $row['cat_title'];
        }        
        ?>
        <form method="post">
            <div class="form-group">
                <label for="updated_cat_name">Update category</label>
            <input class="form-control" type="text" name="updated_cat_name" value="<?php echo $cat_title; ?>">
            </div>
            <div class="form-group">
                <input class="btn btn-primary" type="submit" name="update_cat_title" value="Update Category">
            </div>
        </form>
        <?php
        if(isset($_POST['update_cat_title'])){
        $updated_cat_title = $_POST['updated_cat_name'];
$edited_category_id = $_POST['category_id'];
$update_cat_query = "UPDATE categories SET cat_title = '$updated_cat_title' WHERE cat_id = $edited_category_id ";
$update_query = mysqli_query($connection,$update_cat_query);
checkQuery($update_query);
}
        ?>

有一个更新类别的按钮,类别名称进入上面代码中的输入字段。

当我单击 UPDATE 按钮时,会通过 include "includes/update_categories.php";在其中包含类别名称来显示一个新字段。

当我在输入字段中更改名称并单击类别名称的新字段下的“更新类别”时,我什么也没有得到,数据库中也没有任何变化。

此外,没有出现错误...

有任何想法吗?谢谢你!

标签: phphtmlformsinputsql-update

解决方案


$_POST['update_category_id']在您的代码中首先访问,但没有输入update_category_id.

您是否错过了在表单中设置隐藏输入update_category_id

您可以编辑代码以添加隐藏的输入

<input class="form-control" type="text" name="updated_cat_name" ...
<input type="hidden" name="update_category_id"
       value=<?php echo $selected_cat_id; ?> />

编辑 :

  1. 包含update_category_id在“ functions.php ”中的表单应该有action="categories.php".
  2. 正在签入update_category的“ categories.php ”在哪里设置if (isset($_POST['update_category']))
  3. 您能否确认文件“ includes/update_categories.php ”是否被包含在内?
  4. 文件“ includes/update_categories.php ”中的表单中仍然缺少隐藏的输入
  5. <input type="hidden" name="update_category_id" ...在“functions.php”中,刚刚传递给“ categories.php ”以便能够显示所选“update_category_id”的信息,其中<input type="hidden" name="update_category_id" ...需要将表单中所做的更改保存在“ includes/update_categories.php ”文件中。

推荐阅读