Torihaji's Growth Diary

Little by little, no hurry.

学習日記 20230909

6:47 2023/09/09
おはようございます。  
さて、今日は、画像編集の続きからやりましょうか。  
昨日は削除のところまではできたので、今日は投稿の差し替えをやろうか。  

まずやるべきことは、input画像 formを 3つ作る。  
それを$FILESでもらってきたとき、複数の$FILESはどうなっているのかを調べる。  
それによって、$FILESから取得する処理を考える。  
おっと、その前に、実際にテーブルへアップロードする前に  
確認画面を表示させないと。  
と、またその前に、  
jqueryでやるんだった。  
ためしにやってみよう。  
そこまでをまずは、やろう。  
スタート!!  

jquerycdn使い方はどうだっけ。  
進むと思っていたのに躓いた。  
くそ。  

jsのパスがあっていなかった。  
cyberduck上は、jsフォルダ直下にいると思っていたのに、  
同階層にいやがった。  
そらむりだ。  
だー、くそ。こんなことで時間を無駄にした。  
もう。

もう何回目だ。  
一旦機能面を実装しよう。  
見た目に走ると、きりがない。  

まずは投稿の差し替え機能!!  
それをやる!!  
POSTさせて、確認画面表示させずに、もうDBに挿入させよう。  

復習もかねて。  
htmlの input="file" name="image"において、画像をアップロードした場合、  
php側ではスーパーグローバル変数$_FILES['image']  
に格納される(実物はサーバのtmpフォルダ)。    
しかし、複数アップロードした場合は、  name="image"と配列にしないと、  
$_FILESには最後に投稿した1枚分のデータしか入らないので注意。  
name="image
" にすると  
$_FILES['image']['name']の下に  
アップロードした枚数分、データが格納される。  

一旦、午前の部終了。
9:02 2023/09/09

 

15:00 2023/09/09
午後の部開始。
まずは$_FILES問題。  
値を入れていなくても、POSTすれば、空要素の配列が行ってしまう問題。  
ファイルをアップロードしなければ、 nullになると思っていた。  

どう判断しようか。  
空要素が入っている。  
値が入っているインデックスまでcountするような処理を入れる。  

まずPOSTされてきた空要素含む$FILESを加工する。  
空要素でない、配列のみを取り出す処理を加える。  
無加工の$FILESは、input要素のname属性で記述した値をキーにもつ  
連想配列である。  その連想配列1の中には、 tmpnameやname、
などさらに5つのキーを持つ、配列2が格納されている。  
今回は2回foreachをかませて、  
配列2の各値が空要素でなかったら、  
新しく作った配列に追加する、という方針でいこう。  
その際、新しく作った配列に使用するキー名は  
$FILESと同じものを使用する。  

キー名がerrorのところだけ、ファイルがアップロードされていない、というエラーコードが格納されて、  
期待とは逆の挙動を示してしまう。  

アップロードしないフォームがあった場合、空要素を含む$FILESとなるので  
countしても実際の投稿件数がわからない。  
そのため、空要素を除いた新しい配列を作成する処理を加える。  
ただ$_FILES['up_image']['error']のみエラーコードの値(4)がセットされ、  
期待する挙動を示さないので、その箇所だけ工夫する。  

これで、
画像合計 = 追加or差し替える投稿件数 - 削除する件数 が 0より大きく、投稿上限より低ければいい。  
嘘。現在の投稿が持っている画像件数を考慮するのを忘れていた。  


うまくいった。  
これをクリアしたら、編集処理に進めるようにしよう。  

一旦、終了。夜。  
18:39 2023/09/09

20:14 2023/09/09  
じゃあ本日最後の部。  
sprintfの書式を忘れた。  
sprintf(string $format, 当てはめるもの)  

ユーザはどういう行動をとるか。  
1.タイトル、コンテンツのみ修正。(NO$_FILES)  
2.1+画像削除のみ(NO$_FILES)  
3.1+画像追加のみ($_FILES)  

まあ、いいや、まず動くものを作ろう。    

とりあえず、$_SESSIONに入れたいものを格納できた。  

くっそ。行けると思ったのに、詰まったな。  

22:27 2023/09/09