在更新表格php上显示图像的路径

时间:2013-10-25 07:25:58

标签: 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>

DB STRUCTURE

enter image description here

1 个答案:

答案 0 :(得分:2)

检索单行时,您不必像在代码中的注释中那样进行循环。

对于数据库,您究竟在准备什么样的表结构? 您可以轻松地在一个字段中保存图像的名称并检索它,甚至不会获得完整路径(因为那里可能有更多的图像)

编辑1

这是解决空字符串插入问题的一种方法,但是查询必须不同,所以你必须编写一个插入图像的文件,以及一个排除它的文件

编辑2

检索图像路径之后,您现在要做的就是使用PHP的爆炸分割字符串,例如$ 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个查询,如果不接触,图像将保持不变。