😀

学習日記 20230911

2023/09/11に公開

6:27 2023/09/11
おはようございます。
今日の朝も、少しだけやりましょう。

投稿を編集するパターンにはどういうものがあるだろうか。
1.画像はそのまま、タイトルもしくはコンテンツのみ修正
2.画像を削除
3.画像追加
4.画像削除、画像追加
2-4にはいろいろパターンがあるけど、主なものとしてはこのくらい
もちろん、2-4しながら、テキストを編集というのもあるが、
テキスト編集のバリデーションは簡単なので、
あえて無視。

あとは2-4をどういう順番でバリデーションしていくか。

削除するときは、
削除ボックスにチェックがあるか、
画像枚数合計チェック
してから削除する。

追加するときは、
$_FILES['image']['name']とかがあるか。
あれば、$_FILESを値があるところのみ抽出して、再作成。
件数を確認して、画像枚数合計チェック。
してから、追加する。

7:01 2023/09/11

21:16 2023/09/11
複数画像アップロードした際の$_FILESの中身

array(1) {
  ["up_image"]=>
  array(6) {
    ["name"]=>
    array(3) {
      [0]=>
      string(23) "desk-g5b22c4658_640.jpg"
      [1]=>
      string(0) ""
      [2]=>
      string(0) ""
    }
    ["full_path"]=>
    array(3) {
      [0]=>
      string(23) "desk-g5b22c4658_640.jpg"
      [1]=>
      string(0) ""
      [2]=>
      string(0) ""
    }
    ["type"]=>
    array(3) {
      [0]=>
      string(10) "image/jpeg"
      [1]=>
      string(0) ""
      [2]=>
      string(0) ""
    }
    ["tmp_name"]=>
    array(3) {
      [0]=>
      string(14) "/tmp/php2OloNm"
      [1]=>
      string(0) ""
      [2]=>
      string(0) ""
    }
    ["error"]=>
    array(3) {
      [0]=>
      int(0)
      [1]=>
      int(4)
      [2]=>
      int(4)
    }
    ["size"]=>
    array(3) {
      [0]=>
      int(45741)
      [1]=>
      int(0)
      [2]=>
      int(0)
    }
  }
}


なんとかして、次のように加工する。

array(1) {
  ["up_image"]=>
  array(6) {
    ["name"]=>
    array(3) {
      [0]=>
      string(23) "desk-g5b22c4658_640.jpg"
    }
    ["tmp_name"]=>
    array(3) {
      [0]=>
      string(14) "/tmp/php2OloNm"
    }
    ["size"]=>
    array(3) {
      [0]=>
      int(45741)
    }
  }
}

ここまで省エネ化したい。

期待のものができた。

array(3) {
  ["name"]=>
  array(1) {
    [1]=>
    string(42) "high-angle-desk-assortment-with-laptop.jpg"
  }
  ["tmp_name"]=>
  array(1) {
    [1]=>
    string(14) "/tmp/phpqTSdgO"
  }
  ["size"]=>
  array(1) {
    [1]=>
    int(461496)
  }
}

使用したコード。

foreach ($_FILES['up_image'] as $parent_key => $child_array){

	if($parent_key !== 'full_path' && $parent_key !== 'type' && $parent_key !== 'error'){

		$up_image_array[$parent_key] = array_filter($child_array);

	}
}

さてここからどうしようか。
うーん。
0:00 2023/09/12

Discussion