填充更新表单的字段时,如何显示当前图像的路径,如下所示
这样,如果用户不想更改图像,则使用相同的图像。
这是浏览器显示的内容:
<input type="file" value="uploads/chaps_B.jpg" name="image_edit"></input>
我有一种感觉我的photopath
不在范围内,但不确定如何修复它。所有变量都会填充表单并保存到数据库,只是无法弄清楚图像路径。
if(isset($_POST['update_submit']))
{
$get_products = $db->prepare("select `photopath` from `item` where
`item_id` = '$get_item' LIMIT 1");
$get_products->execute();
$path= $get_products->fetchColumn(6);
if($_FILES['image_edit']['tmp_name'] != "")
{
$edit_name = $_POST['item_name'];
$edit_description =$_POST['item_description'];
$form_id = $_POST['edit_form_id'];
$file_dir = "uploads/";
$image = $file_dir. $_FILES['image_edit']['name'];
move_uploaded_file($_FILES['image_edit']['tmp_name'], $image);
$edit_sql =$db->prepare("UPDATE item SET item_name = '$edit_name',
item_description = '$edit_description',
photopath ='$image' WHERE item_id = '$form_id'");
$edit_sql->execute();
header("Location: manage_items.php");
exit();
}
else
{
$edit_name = $_POST['item_name'];
$edit_description =$_POST['item_description'];
$form_id = $_POST['edit_form_id'];
$edit_sql =$db->prepare("UPDATE item SET item_name = '$edit_name',
item_description = '$edit_description'
WHERE item_id = '$form_id'");
$edit_sql->execute();
header("Location: manage_items.php");
exit();
}
更新表格
<form action="item_edit.php" method="post" enctype="multipart/form-data">
<input type = "text" name="item_name" value="<?php echo $item_name ?> "/>
<textarea name="item_description"><?php echo $item_description ?></textarea>
<p> <img src="<?php echo $image; ?>" width="75" height="75" /></p>
<input type="file" name="image_edit" />
<input name="edit_form_id" type="hidden" value="<?php echo $get_item ?>">
<p><input type="submit" name="update_submit" value="Update"/></p>
<p><input type="submit" name="cancel_edit" value="Cancel"/></p>
</form>
数据库结构
最佳答案
检索单行时,您不必按照代码注释中的要求进行循环。
至于数据库,你到底存储了什么,你的表结构是什么样的? 您可以轻松地将图像的名称保存在字段中并检索该名称,甚至不需要获取完整路径(因为那里可能有更多图像)
编辑 1
这是解决空字符串插入问题的一种方法,是的,但是查询必须有所不同,因此您必须编写一个插入图像的查询,以及一个排除图像的查询
编辑2
检索图像路径后,您现在要做的就是使用 PHP 的explode 分割字符串,例如$aPath =explode('/', $yourDBfield);,这将为您提供一个数组,其中的项目在/上拆分,因为文件始终位于末尾,只需执行以下操作: $image = $aPath[(count( $aPath)-1)];,这应该会给你图像。
编辑3
根据OP的要求,
主查询应包含图像更新,例如当设置的值不为空时。
$edit_sql =$db->prepare("UPDATE item SET item_name = '$edit_name',
item_description = '$edit_description',
photopath ='$image' WHERE item_id = '$form_id'");
其他查询应排除 photopath
= '$image' 例如
$edit_sql =$db->prepare("UPDATE item SET item_name = '$edit_name',
item_description = '$edit_description',
WHERE item_id = '$form_id'");
正如评论中提到的,您还可以添加默认路径,例如当请求页面时,$image
(不拆分)为字段的值,这样您只需编写 1 个查询,并且图像在不更改的情况下将保持不变。
关于php - 在更新表单 php 上显示图像路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19583639/