0

フォームに複数の画像アップロード オプションがあり、それらは正常に機能しており、mysql データベース列のファイル名を更新していますか?

image1をアップロードすると、画像がサーバーに移動し、次に表示されます問題は、フォーム送信後にhtml table columnsアップロードすると消えて、?image with file option2image1 which is on the next to the image1 file optionmysql database image1 columns will be blank

複数画像アップロード機能

 $id=$_REQUEST['id'];

 if(isset($_POST['submit']))
 {

 if (!empty($_FILES['image']['name'])) 
 {

 $rnd_1 = rand(11111,99999); 
 $file_name= $rnd_1.'_'.$_FILES['image']["name"];
 $file_path = "uploads/"; 
 $image = new imgMark(); 
 $image->font_path = "arial.ttf"; 
 $image->font_size = 25; 
 $image->water_mark_text = "© www.edge.pk";  
 $image->color = 'CC003E'; 
 $image->opacity = 50; 
 $image->rotation = 0;
 if($image->convertImage('image', $file_name, $file_path))
 $demo_image = $image->img_path;
 }

 if (!empty($_FILES['image1']['name'])) 
 { 
 $rnd_1 = rand(11111,99999); 
 $file_name= $rnd_1.'_'.$_FILES['image1']["name"];
 $file_path = "uploads/"; 
 $image = new imgMark(); 
 $image->font_path = "arial.ttf"; 
 $image->font_size = 35; 
 $image->water_mark_text = "© www.edge.pk";  
 $image->color = 'CC003E'; 
 $image->opacity = 50; 
 $image->rotation = 0;
 if($image->convertImage('image1', $file_name, $file_path))
 $demo_image2 = $image->img_path;
 }

 if (!empty($_FILES['image2']['name'])) 
 { 
 $rnd_1 = rand(11111,99999); 
 $file_name= $rnd_1.'_'.$_FILES['image2']["name"];
 $file_path = "uploads/"; 
 $image = new imgMark(); 
 $image->font_path = "arial.ttf"; 
 $image->font_size = 35; 
 $image->water_mark_text = "© www.edge.pk";  
 $image->color = 'CC003E'; 
 $image->opacity = 50; 
 $image->rotation = 0;
 if($image->convertImage('image2', $file_name, $file_path))
 $demo_image3 = $image->img_path; 
 }

クエリを更新

UPDATE products SET 
image='$demo_image',addimage1='$demo_image2',addimage2='$demo_image3'
WHERE id='$id'
}

画像クエリの選択

$query1=mysql_query("select images,addimages1,addimages2 from products 
where id='$id' ")or die("query");
$row2=mysql_fetch_array($query1);

<form method="post" enctype="multipart/form-data"> 

Image Upload Option1
<input type="file" name="image" id="image" />
<img src="<?php echo $image['image'] ?>" width="150" height="150" />

Image Upload Option2
<input  type="file" name="image1" id="image1"/>
<img src="<?php echo $image['addimage1'] ?>" width="150" height="150" />

Image Upload Option3
<input  type="file" name="image2" id="image2"/>
<img src="<?php echo $image['addimage2'] ?>" width="150" height="150" />

<input type="submit" class="bg" name="submit" />
</form>
4

1 に答える 1

0

問題はここにあります:

UPDATE products SET 
image='$demo_image',addimage1='$demo_image2',addimage2='$demo_image3'
WHERE id='$id'
}

私が理解したことから、最初の画像をアップロードするフォームを最初に送信し、次に2番目の画像をアップロードするフォームを再度送信します。これは、再送信中に入力「画像」の値を送信していないため、2 回目のアップロード中に変数 $demo_image が空白になるためです。ここを参照してください:

$demo_image = $image->img_path;

$image->img_path が空白であるため、$demo_image も空白 (または NULL? - 不明) になります。

この問題には多くの解決策があります。データベースからフォームにデータを取得してから再送信するか、変数が空白 (または NULL?) かどうかをテストしてから、さまざまなバリエーションに対してさまざまな UPDATE コマンドを使用したり、UPDATE を実行する直前に MySQL からデータを取得したりできます。

MySQL から「古い」データを取得することを選択し、NULL かどうかをテストします。MySQL で NULL でない場合は、同じデータをデータベースに再送信するだけです。このような:

if ($demo_image_from_db!=NULL) $demo_image = $demo_image_from_db;

NULL の場合にのみ更新するための MySQL ネイティブ関数も存在する可能性があります - COALESCE について聞いたことがありますが、その使用方法が正確にはわかりません - それは間違いなく最も簡単な方法です。

于 2013-04-19T22:36:40.913 に答える