我是php的新手并试图设计一个系统,我必须上传照片,删除照片和编辑照片。我使用了move_uploaded_file();上传照片。和unlink();删除照片。我已成功上传和删除照片。但是无法找到我在编辑时出错的地方。我的问题是,在编辑表单中,我没有给任何新照片进行编辑,mysql表正在更新。但是当给出新照片时,表单不起作用..这是我做的.. 在发送部分:
<?php
$product=get_product_by_id($_GET['pid']);/*is a function to get product from database*/
?>
<form enctype="multipart/form-data" action="edit_product.php?pid=<?php echo urlencode($_GET['pid']); ?>" method="post">
<p>Product name:
<input type="text" name="name" value="<?php echo $product['name']?>" id="name" />
</p>
<p>Actual Photo:
<input type="file" name="photo" >
</p>
<p>Thumbnail Photo:
<input type="file" name="thumb" >
</p>
<p>Visible:
<input type="radio" name="visible" value="0" /> No
<input type="radio" name="visible" value="1" /> Yes
</p>
<input type="submit" name="submit" value="Edit Product" />
</form>
接收部分:
if (isset($_POST['submit'])) {
$id = mysql_prep($_GET['pid']);
$name = mysql_prep($_POST['name']);
$visible = mysql_prep($_POST['visible']);
if(empty($_POST['photo'])){
$query = "UPDATE products SET
name = '{$name}',
visible = {$visible}
WHERE id = {$id}";
}
else{
$product=get_product_by_id($id);
//echo $product['photo'];
$target = "images/products/";
$target=$target . $product['photo'];
$target2 = "images/product_thumbs/";
$target2=$target2 . $product['thumb'];
unlink($target);
unlink($target2);
$photo=$_POST['name'].".jpg";
$photo = mysql_prep($photo);
$thumb=$_POST['name']."_thumb.jpg";
$thumb = mysql_prep($thumb);
$target = "images/products/";
$target = $target .$name.".jpg";
$target2 = "images/product_thumbs/";
$target2 = $target2 .$name."_thumb.jpg";
move_uploaded_file($_FILES['photo']['tmp_name'], $target);
move_uploaded_file($_FILES['thumb']['tmp_name'], $target2);
$query = "UPDATE products SET
name = '{$name}',
photo = '{$photo}',
thumb = '{$thumb}',
visible = {$visible}
WHERE id = {$id}";
}
}
答案 0 :(得分:0)
看,问题在于代码:
if(empty($_POST['photo'])){
$query = "UPDATE products SET
name = '{$name}',
visible = {$visible}
WHERE id = {$id}";
}
如果您的表单具有enctype="multipart/form-data"
属性,则您的文件将不是$ _POST数组,而是$ _FILES数组。因此,每次通过表单将新文件发送到更新脚本文件时,都会转到$ _FILES ['photo']并且$ _POST ['photo']始终为空。这就是你的脚本只更新表格的原因。
答案 1 :(得分:0)
您缺少INSERT INTO
个新项目查询。如果您要提交新照片,那么您的第二个查询将无法执行任何操作。