我的代码有问题。我无法更新我的图片。
这是我的完整代码:
//this link will post my data to next page
<a href="updatepage.php?code=<?php echo $row['name']; ?>">update</a>
//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
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";
}
?>
我可以更新但必须选择图像。如果我没有选择图像,我在数据库中的图像字段将为空,但其他数据更新是正常的......
答案 0 :(得分:0)
无法以编程方式更改<input type="file">
的值。只有触发弹出选择文件对话框的默认行为。
我从您看到的示例代码是您希望将值与文件表单控件元素直接关联,因为它是从数据库中检索的。那么为什么要保存同样的东西。但是,如果要执行此操作,可以使用带有值的隐藏元素,该元素将被保存。但是,如果您不希望用户更改它,只是不要将其呈现在表单中并将其从更新查询中删除,以使其保持不变。
此外,您可以在处理帖子时添加一些逻辑,如果没有选择文件,则将字段“图像”保留在更新查询之外。
答案 1 :(得分: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; ?>"/>
答案 2 :(得分: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>