複数の画像を同時アップロードでの、ファイルの置き換え(MySQLのアップデート) - PHPプロ!Q&A掲示板
2029
- 0P
- 0P
複数の画像を同時アップロードでの、ファイルの置き換え(MySQLのアップデート)
質問日時 / 2009年5月12日 04:15 (最終編集:5月12日 04:20) 回答数 / 2件
Questioner: edokko
Tweet
キーワード / 複数画像アップロード   MySQL   置き換え  
画像を複数同時アップロードするのを作成中なのですが、
例えば、MySQLの picture_1, picture_2, picture_3 の中には
既に画像ファイル名(写真1、写真2、写真3)があるとします。
その写真1の画像はそのままで、写真2と写真3だけ
新たな画像ファイルに置き換えようとした時、
新たな写真2の画像ファイルは写真1になり、
新たな写真3の画像ファイルは写真2になってしまうのです。
これを写真3だけ新たな画像ファイルに置き換えようとしても、
写真3(picture_3)のデータ名はそのままで、
代わりに写真1(picture_1)のところに
その新たな画像ファイル名が置き換えられるのです。
コードは下記の通りです。
- $count = 0;
- // as it is multiple uploads, we will parse the $_FILES array to reorganize it into $files
- $files = array();
- foreach ($_FILES['my_field'] as $k => $l) {
- foreach ($l as $i => $v) {
- if (!array_key_exists($i, $files))
- $files[$i] = array();
- $files[$i][$k] = $v;
- }
- }
- // we now remove invalid entries for non-uploaded images
- foreach ($files as $k => $v) {
- if ($v['error'] != 0) unset($files[$k]);
- }
- $uploaded = array();
- foreach (array_keys($files) as $k) {
- $handle = new upload($files[$k]);
- $this_upload = array();
- $time = time();
- $dir = date("mY", $time);
- $slash="/";
- $fb=date("dHis",$time);
- $fe=rand(0,999);
- $fn =$fb."_".$fe;
- $intpic = $fn.'.';
- $intpic_t = $fn.'_t';
- $handle->jpeg_quality = 80;
- // Large image
- $handle->image_resize = true;
- $handle->image_ratio_y = true; //height
- $handle->image_x = 500; //width
- $handle->file_new_name_body = $intpic;
- $handle->Process('../img/');
- if ($handle->uploaded) {
- if ($handle->processed) {
- $this_upload['large'] = $handle->file_dst_name;
- $good = "yes";
- }
- // Thumbnail image
- $handle->image_resize = true;
- $handle->image_ratio_y = true; //height
- $handle->image_x = 100; //width
- $handle->file_new_name_body = $intpic_t;
- $handle->Process('../img/');
- if ($handle->processed) {
- // store the small image filename
- $this_upload['small'] = $handle->file_dst_name;
- echo '<img src="../img/' . $intpic_t . '.jpg" /><br /><br />';
- } else {
- // one error occured
- echo '<font color="red">File not uploaded to the wanted location.<br><br>';
- echo ' Error: ' . $handle->error . ' </font>';
- echo '<br><br><input type="button" value="Retry" onClick="history.go(-1)" class="form_button_1">';
- }
- $handle->clean();
- }
- // add this set of pictures to the main array
- $count++;
- $uploaded[] = $this_upload;
- }
- // everything was fine !
- if ($good=='yes') {
- echo 'File Successfully Uploaded!<br /><br />';
- echo '<a href="inv.php">Go to Inventory Lists</a>';
- }
- if (array_key_exists(1, $uploaded)) {
- $ch1 = 1;
- $mpic[1]=", picture_1='".$uploaded[1]['large']."', picture_1t='".$uploaded[1]['small']."'";
- } else {
- $ch1 = 0;
- $mpic[1] = '';
- }
- if (array_key_exists(2, $uploaded)) {
- $ch2 = 1;
- $mpic[2]=", picture_2='".$uploaded[2]['large']."', picture_2t='".$uploaded[2]['small']."'";
- } else {
- $ch2 = 0;
- $mpic[2] = '';
- }
- if (array_key_exists(3, $uploaded)) {
- $ch3 = 1;
- $mpic[3]=", picture_3='".$uploaded[3]['large']."', picture_3t='".$uploaded[3]['small']."'";
- } else {
- $ch3 = 0;
- $mpic[3] = '';
- }
- // if you want to replace the pics, delete old pic and upload new pic
- if (!empty($row['picture_1'])) {
- if ($ch1==1) {
- unlink('../img/' . $row['picture_1']);
- unlink('../img/' . $row['picture_1t']);
- }
- }
- if (!empty($row['picture_2'])) {
- if ($ch2==1) {
- unlink('../img/' . $row['picture_2']);
- unlink('../img/' . $row['picture_2t']);
- }
- }
- if (!empty($row['picture_3'])) {
- if ($ch3==1) {
- unlink('../img/' . $row['picture_3']);
- unlink('../img/' . $row['picture_3t']);
- }
- }
- $todayis = strftime('%A, %B %#d, %Y - %H:%M:%S ') ;
- $who = $session['first_name'];
- $query = "LOCK TABLES $table3_1 WRITE";
- mysql_query($query);
- $query = "UPDATE $table3_1 SET date_time_add_pic_2 = '$todayis',
- by_who_pic_2 = '$who'
- $mpic[1] $mpic[2] $mpic[3],
- date_time_rmv_pic = '',
- by_who_pic_rmv = ''
- WHERE cID = '$c_id'";
- mysql_query($query);
- $query = "UNLOCK TABLES";
- mysql_query($query);
多分、この下記コード辺りが問題なのかなと思うのですが、
73. $count++;
74. $uploaded[] = $this_upload;
どのようにコードを修正すればこの問題を解決できるのか
ここで詰まってしまって分かりません。
すみませんが教えて頂けると助かります。
宜しくお願いします。





ページのトップへ


GETのままでは検索エンジンのロボットが拾ってくれなかったためにSEO対策として有効だと言われていますね。