0

我的代码有问题。我无法更新我的图像。

这是我的完整代码:

索引.php

//this link will post my data to next page
<a href="updatepage.php?code=<?php echo $row['name']; ?>">update</a> 

更新页面.php

 //this page will get all data that want to update...
 <?php
 include("config.php");
 $name=$_GET['code'];
 $sql1  = "select * from imagename where name='$name'";
 $result = mysql_query($sql1) or die(mysql_error());
 $row=mysql_fetch_array($result);?>
<form name="form1" method="post" action="processupdatepage.php"  class="formposition" enctype="multipart/form-data" >
  <table>
   <tr><td>
    <input type="hidden" name="id" value="<?php echo $row['id']; ?>" /></td></tr>
   <tr><td width="98">Image</td><td width="288">
  //This is where I have problem, I can't get my image value but other data value work very well.....
    <input type="file" name="image" value="<?php echo $row['image'];?>" /></td></tr><br/> 
   <tr><td>nane</td><td><input type="text" name="name" value="<?php echo $row['name']; ?>"/></td></tr><br/>       
   <tr><td></td> <td colspan="2">
    <input type="submit" name="submit" value="Save" />  </td></tr>
  </table>
</form>

好的。现在这是我的流程文件:

进程更新页面.php

<?php
include("config.php");
$id=$_POST['id'];
$image=$_FILES['image']['name'];
$name=$_POST['name'];
$target = "images/"; 
$target = $target . basename( $_FILES['image']['name']);
$query = "UPDATE imagename SET name='$name', image='$image' WHERE id='$id'";
$bb = mysql_query($query) or die(mysql_error());
if($bb)
{
//Writes the photo to the server 
    if(move_uploaded_file($_FILES['image']['tmp_name'], $target)) 
    {  
      $sql001="UPDATE imagename SET image='$image' WHERE image='$image'";
    mysql_query($sql001);
    } else { } 
    header("Location:index.php");
}
else
{
    echo "Could not be updated";
}
?>

我可以更新但必须选择图像。如果我没有选择图像,我在数据库中的图像字段将为空,但其他数据更新正常...

4

3 回答 3

0

我认为问题出在这里:

<input type="file" name="image" value="<?php echo $row['image'];?>" />

您可以通过单击浏览按钮上传图像。那么你想这样做呢?如果要显示已上传的图像,可以使用:

$img_path = 'get image path from database entry';
<img src= "<?php echo $img_path; ?>"/>
于 2012-12-18T14:06:37.077 回答
0

这是上传图片的完整代码,它已经过测试并且可以工作,但是您需要有一个名为“upload”的目录(此代码不会创建文件夹)。

建议仅将图像路径存储在数据库中。

<?php
if(isset($_POST['submit'])){
    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/png")
    || ($_FILES["file"]["type"] == "image/pjpeg"))
    && ($_FILES["file"]["size"] < 200000))
    {
        if ($_FILES["file"]["error"] > 0)
        {
            echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
        }
        else
        {
            if (file_exists("upload/" . $_FILES["file"]["name"])){
                echo $_FILES["file"]["name"] . " already exists. ";
            }
            else{
                move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
                echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
                    // HERE YOU CAN WRITE YOU INSERT INTO MYSQL CODE
                    //SOMETHING LIKE THIS:
                    $path = 'assets/article_images/'.$article_id.'/'.$_FILES["image_file"]["name"];
                    $statement1 = "INSERT INTO image_article (article_id, image_path) values ('$article_id', '$path') ";
                    $query_result = mysql_query($statement1) or die($statement1."mysql error<br/><br/>".mysql_error());
                    if($query_result==1){
                        echo 'Image uploaded';
                    }
            }
        }
    }
    else
    {
    echo "Invalid file";
    }
}

?>

<html>
<body>

<form action="index.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html>
于 2012-12-18T14:07:20.823 回答
0

an 的值<input type="file">不能以编程方式更改。只有通过触发其弹出选择文件对话框的默认行为。

我从您的示例代码中看到的是,您希望将值直接关联到文件表单控件元素,因为它是从数据库中检索的。那么为什么要保存相同的回来。尽管如此,如果你想这样做,你可以使用一个隐藏元素的值,这将被保存。但是,如果您不希望用户更改它,请不要将其呈现到表单中并将其从您的更新查询中排除,这样它将保持不变。

此外,您可以在处理帖子时添加一些逻辑,如果未选择任何文件,则将“图像”字段保留在更新查询之外。

于 2012-12-18T13:54:33.737 回答