🐕

学習日記 20230913

2023/09/13に公開

6:49 2023/09/13

えー、昨日の$_FILESの中身を分ける問題ですが、
やはり<input type="file" name="image[]">のように
nameをimage[]で配列にするやり方に戻しました。

投稿画像の合計枚数をカウントするときに、不便だったからです。

if(array_sum($_FILES['up_image']['size'])){

	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);

		}
	}

	$up_image_count = count($up_image_array['name']);
}

これでファイルがアップロードされていたら、$up_image_countが0以外になるはずです。
7:23 2023/09/13

22:11 2023/09/13

これを何十周しているだろうか。
画像の差し替えをどうやったらいいだろう。
1枚の時はどうすればいいだろうか。
まず、1つ削除チェックボックスを入れる。
form1から画像をアップロードする。
画像枚数合計をチェックする。

ああああああ。
どうしよう。

何が一番困っている。
投稿もできる。削除もできる。
ただ、投稿に1枚の画像がすでにあるとき、1枚目の投稿フォームから画像を投稿しようとすると
既にあるのでできない、とかの差し替えをどう表現していけばいいかわからない。

たとえば、3枚の画像があって、2枚目を差し替えたいとき、
既にある2枚目の画像にチェックを入れて、
2枚目用の投稿フォームから画像をアップロードする。

その後の処理をしっかり言語化すると。

まず、postされた時点で、削除チェックボックスには
削除予定の画像番号が振られている。

この画像番号はその投稿内において、何番目の画像であるかを表している。
そして、画像番号は一時的に配列に格納される。
そしてその配列要素をcountする。

次に2枚目のフォームからアップロードされた画像について。
input要素の2枚目フォームに指定したnameで$_FILESに格納される。

そして、2枚目のフォームからアップロードしたよ、という判別として、
!empty($_FILES['2枚目のname']['name'])
を行い、あれば、
カウントを+1する。

ここまで終了したら、
まず画像枚数合計のチェックに入る。
次に投稿画像の合計サイズのチェックに入る。

この2つでエラーが無かったら
初めに画像の削除を行う。
DBへのdelete操作を行う。
次に投稿画像をDBへinsertする。

で完成かな。
これで一回作ってみよう。
やっぱりフォーム分けた方がいいんじゃない?

とりあえず、フォームを分けた。

えーと、1枚目の投稿フォームから画像が投稿できる条件は、
既にある1枚目に削除チェックがされている時のみ、か?
そうだね。多分。

また今日が終わった。
しぶといですね、この人、
23:22 2023/09/13

Discussion