php - 用 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";
在其中包含类别名称来显示一个新字段。
当我在输入字段中更改名称并单击类别名称的新字段下的“更新类别”时,我什么也没有得到,数据库中也没有任何变化。
此外,没有出现错误...
有任何想法吗?谢谢你!
解决方案
$_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; ?> />
编辑 :
- 包含
update_category_id
在“ functions.php ”中的表单应该有action="categories.php"
. - 正在签入
update_category
的“ categories.php ”在哪里设置if (isset($_POST['update_category']))
? - 您能否确认文件“ includes/update_categories.php ”是否被包含在内?
- 文件“ includes/update_categories.php ”中的表单中仍然缺少隐藏的输入
<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 ”文件中。
推荐阅读
- alexa - alexa 电话哈希/英镑符号可用吗?
- javascript - 如何从 DB 中获取价值到 on-change 事件?
- exception-handling - 如何在 TCL 的 try 和 catch 部分中循环代码
- java - Spring Boot 启动器注解元数据
- python - Pytorch vs. Keras:Pytorch 模型严重过拟合
- python - 函数参数 dtype 声明不起作用?
- java - 如何使用apache poi将动态excel文件(列数可以超过)写入java对象
- excel - 在excel vba中将选择移动到各自列的底部
- java - URL 查询给出的结果与邮递员不同
- javascript - 保留活动,但避免链接(或内部内容)