我有以下html代码,最多可上传8张图片:
<div class="form-group">
<label class="col-sm-3 control-label">img 1</label>
<div class="col-sm-6">
<input type="file" name="img1" />
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">img 2</label>
<div class="col-sm-6">
<input type="file" name="img2" />
</div>
</div>
...... same for img3,4,5,6,8
php code
if (array_key_exists('img1', $_FILES)) {
if (in_array('image/jpg', $_FILES['img1']) && $_FILES['img1']['error'] == '0') {
$img1 = "http://www.*.com/tmp/".$findid."_1.jpg";
$name1 = $findid."_1.jpg";
move_uploaded_file($_FILES['img1']['tmp_name'], 'tmp/'.$name1);
}
}
...... same for img2,3,4,5,6,8
<?php
$images = explode(';', $ad['images']);
if ($images != NULL) {
foreach ($images as $i => $filename) {
echo '<a href="'.$filename.'" target="_blank" ><img src="'.$filename.'" width="60px" height="55px" style="float:left; border:1px solid #B1C4DF;" /></a>';
}
}
?>
$images = implode(";",array_filter(array($img1,$img2,$img3,$img4,$img5,$img6,$img7,$img8)));
if (isset($_GET['type']) && $_GET['update'] == 'true') {
if($images != null){
mysql_query("UPDATE ads SET title ='$title', images ='$images', description ='$description', priceValue ='$priceValue' WHERE id = '" . $_GET['id'] . "'") OR die(mysql_error());
updateImages($un,$pw,$_GET['id'],$images);
}else{
mysql_query("UPDATE ads SET title ='$title', description ='$description', priceValue ='$priceValue' WHERE id = '" . $_GET['id'] . "'") OR die(mysql_error());
}
header("Location: edit.php?type=edit&id=" . $_GET['id'] . "");
}
问题是当我只上传img2并保存表单时,其他现有图像将从数据库中删除。当我上传img1和img2时一切都很好。如何编辑php代码,以便只上传img3例如并保留img 1和img2?
答案 0 :(得分:1)
首先获取图像数据,然后按如下所示更新详细信息
$sql = "Select images from ads where id = '" . $_GET['id'] . "'";
$q = mysql_query($sql);
if(mysql_num_rows($q) > 0){
$res = mysql_fetch_array($q);
$imagesd = $res['images'];
if(!empty($imagesd))
$images = $imagesd.';'.$images;
}
mysql_query("UPDATE ads SET title ='$title', images ='$images', description ='$description', priceValue ='$priceValue' WHERE id = '" . $_GET['id'] . "'") OR die(mysql_error());
答案 1 :(得分:0)
您可以尝试更改行
if (array_key_exists('img1', $_FILES)) {
与
if (array_key_exists('img1', $_POST)) {
并为img2,img3 ......等所有输入执行此操作。
答案 2 :(得分:0)
在上传图片之前,您需要验证并检查上传的图片:
尝试以下例如。而不是array_key_exists('img1', $_FILES)
例如:
if($_FILES["img1"]["tmp_name"]!='')
{
//do uploading //insert,update query
}
else if($_FILES["img2"]["tmp_name"]!='')
{
//do uploading //insert,update query
}
答案 3 :(得分:0)
你有上传图像的8个输入,所以make it array.it对你来说更容易和有帮助。当你上传图像你写代码8次上传图像,这是不好的所以如果你想要更改如下
首先为所有输入制作数组
<input type="file" name="img[]" />
然后在php
foreach($_FILES[ 'img' ][ 'name' ] as $key=>$img)
{
if($img!="")
{
move_uploaded_file($_FILES['img']['tmp_name'][$key], 'tmp/'.$img);
//and here update code
}
}