使用php和sql更新类别名称不起作用
我正在尝试更新一个类别名称,但运气不好 在functions.php上,我有一个显示所有类别的函数:使用php和sql更新类别名称不起作用,php,html,forms,input,sql-update,Php,Html,Forms,Input,Sql Update,我正在尝试更新一个类别名称,但运气不好 在functions.php上,我有一个显示所有类别的函数: function get_all_categories(){ global $connection; $query = 'SELECT * FROM categories'; $select_categories = mysqli_query($connection,$query); while ($row = mysqli_fetch_assoc($select
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>";
}
}
函数获取所有类别(){
全球美元连接;
$query='SELECT*FROM categories';
$select\u categories=mysqli\u query($connection,$query);
while($row=mysqli\u fetch\u assoc($select\u categories)){
$cat_id=$row['cat_id'];
$cat_title=$row['cat_title'];
回声“;
回显“$cat_id”;
回显“$cat_title”;
?>
$\u POST['update\u category\u id']
是在您的代码中首先访问的,但是对于update\u category\u id
没有输入
您是否错过了为表单中的update\u category\u id
设置隐藏输入
您可以编辑代码,在周围添加隐藏的输入
<input class="form-control" type="text" name="updated_cat_name" ...
<input type="hidden" name="update_category_id"
value=<?php echo $selected_cat_id; ?> />
好的
经过长时间的寻找,包括这里那些试图帮助我的人,我终于找到了答案
此代码中存在问题:
if (isset($_POST['update_category'])) {
include "includes/update_categories.php";
}
问题是,当我单击上面代码中创建的“更新”按钮时,它包括从SQL字段获取值的查询和更新SQL字段中的值的查询
问题是,当我在上面的代码中再次单击“更新”按钮时,帖子将改为if(isset($\u POST['Update\u cat\u title'))
结果是if(isset($\u POST['update\u category'])
POST-in不再可用,这导致表单的include
被删除
因此,更新查询不再在此页面中,结果也不会发送
所以我说:
if(isset($_POST['update_cat_title'])){
$newCatName = $_POST['updated_cat_name'];
$catId = $_POST['category_id'];
update_category($newCatName, $catId);
}
(本可以将所有函数放在同一个文件中,但决定将其移到“functions.php”文件中)
所以我创建了这个函数:
function update_category($newCatName, $catId){
global $connection;
$updated_cat_title = escape($newCatName);
$edited_category_id = escape($catId);
$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);
header("Location: categories.php");
}
现在一切都很好,
谢谢大家!请添加代码如何在表单和脚本之间传递可编辑内容,例如,通过隐藏输入您将获得类别id以编辑类别,您需要在表单中使用此值。就像您传递$cat\u title
,您需要添加编辑您的答案])我知道如何,我支持usershello,感谢您的帮助快速回复,字段在那里,我已经用支持代码更新了帖子。我还尝试添加一个隐藏帖子以获取类别id的值:@ahiadhazan:检查编辑。
if(isset($_POST['update_cat_title'])){
$newCatName = $_POST['updated_cat_name'];
$catId = $_POST['category_id'];
update_category($newCatName, $catId);
}
function update_category($newCatName, $catId){
global $connection;
$updated_cat_title = escape($newCatName);
$edited_category_id = escape($catId);
$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);
header("Location: categories.php");
}