2

填充更新表单的字段时,如何显示当前图像的路径,如下所示 在此处输入图像描述

因此,如果用户不想更改图像,则使用相同的图像。这是浏览器显示的内容: <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>

数据库结构

在此处输入图像描述

4

1 回答 1

2

检索单行时,您不必按照代码注释中的要求进行循环。

至于数据库,你到底在存储什么,你的表结构是什么样的?您可以轻松地将图像的名称保存在一个字段中并检索它,甚至没有获得完整路径(因为那里可能有更多图像)

编辑 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 个查询,图像将保持不变如果未触及,则相同。

于 2013-10-25T07:30:55.080 回答