php - 在更新表单 php 上显示图像路径

标签 php mysql

填充更新表单的字段时,如何显示当前图像的路径,如下所示 enter image description here

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

数据库结构

enter image description here

最佳答案

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

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

编辑 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/

相关文章:

php - MYSQL 作为带有子查询的查询比 2 个查询 (+php) 工作得慢

javascript - React ES6 App - 本地 API 调用

php - 如何使用php+mysql在两个数据库之间复制表?

php - 确定脚本所在的服务器以及 PHP 中的配置的最佳方法是什么?

php - 2 表选择不正确显示

MySQL SELECT "LIKE"参数无法正常工作

php - 如何使用 phing 删除符号链接(symbolic link)?

java - Hibernate 存储过程调用在多次调用时挂起

MySQL - Pythonanywhere - 同时添加 2 个值

php - MySQL - PHP 事务和表锁