こんにちは。お世話になっております。
タイトルにあるように、フォームの中に入力されたデータを配列として、POSTするようなものを作成しました。
こんな感じ。
<p>ファイル</p>
<input name="fl[]" type="file" size="50"><br>
<input name="fl[]" type="file" size="50"><br>
<input name="fl[]" type="file" size="50"><br>
<p>キーワード</p>
<input type="text" name="keyword[]" size="18"><br>
<input type="text" name="keyword[]" size="18"><br>
<input type="text" name="keyword[]" size="18"><br>
このフォームは、ファイルをアップロードし、かつ各ファイル毎に関連するキーワードを入力・登録させるためのものですが、データをPOSTしたとき、ファイルもキーワードも配列としているので、ファイル1段目とキーワード1段目。ファイル2段目とキーワード2段目・・・といった形で配列に格納されるものと思っておりましたが、ファイルがローカル上の同じフォルダ内にあるものに限っては、配列への格納順が保たれるのですが、違うフォルダからアップロードさせると、配列への格納順が保たれないことに気付きました。
そもそも、上記のようなフォームの作成は誤っているものなのか?
それとも、このような場合、違う形式でのフォームを作成すべきなのか?などなど・・
経験の乏しい私には解決策が見出せずに、今回投函させていただいた次第です。
お忙しい中恐縮ですが、アドバイスなど頂戴出来れば幸いです。
宜しくお願い致します。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>どのような形式でデータを受取るのでしょうか?
具体的にやってみると自明ですが、PHP側では序数のついた配列に
おさめられます。hoge[0]、hoge[1]、hoge[2]、という名前でわたした
場合、性質上hoge[]、hoge[]、hoge[]と渡すのと同じ結果になるはずです。
それをhoge[aaa]、hoge[bbb]、hoge[ccc]などにするとそういう連想配列に
なります。
>配列っぽくする必要ないという認識で宜しかったでしょうか?
そこは考え方しだいですね・・・
だいたいそのような場合、PHP側では配列としてあつかったほうが
処理はしやすいです。たいていhoge[]のようにデータを渡す場合は、
処理的にはforeachなどのループ処理になりますので、任意の名前で
hoge1、hoge2、hoge3のようにするとループするにも追加処理が発生します。
こんばんは。早々のお返事をありがとう御座います。
yambejpさんからのアドバイスを踏まえ、ちょっと見直してみようと思います。
改めご質問するかも知れませんが、解決するまで、このままにさせていただきます。
以上、取り急ぎご挨拶までに・・。
ありがとう御座いました。
No.1
- 回答日時:
よく、配列としてPOSTされていると勘違いをされている方がいますが、
配列っぽい名前でPOSTされているだけなので、もう少し明示的に
名前を指定すればよいでしょう、たとえばこんな風・・・
<input type="text" name="keyword[0]" size="18"><br>
<input type="text" name="keyword[1]" size="18"><br>
<input type="text" name="keyword[2]" size="18"><br>
この回答への補足
補足から失礼します。
ちょっと考えてみたのですが、今回、name="keyword[0]" といった形でご指導いただきましたが、質問にある“ファイルのデータが配列に格納されたとき、状況によってインデックス一が変わる”ということも、ファイル用フォームも、name="fl[0]"とった形で設定すれば宜しいということになるんでしょうか?
また、name="fl[0]"というのも、単にname="fl1"、name="fl2"、name="fl3"と、各フォームも、“[]”と、配列っぽくする必要ないという認識で宜しかったでしょうか?
yambejpさんへ
こんにちは。お世話になっております。早速の対応をありがとう御座います!
> 配列っぽい名前でPOSTされているだけなので、
ふむふむ・・なんとなく仰りたいことが分かるような気がしますが、要はあくまでname属性であり、配列ではない、という認識で宜しいのでしょうか?
ところで、先に投函した際に記述したフォームですが、この場合、POSTされた側に、print_r($keyword);とすると、$keywordには配列データがあることが確認出来るかと思いますが、今回、yambejpさんのアドバイスのように、
<input type="text" name="keyword[0]" size="18"><br>
<input type="text" name="keyword[1]" size="18"><br>
<input type="text" name="keyword[2]" size="18"><br
とした場合、POSTされる側からして、どのような形式でデータを受取るのでしょうか?
質問ばかりのようですが、ちょっと頭を整理したいと思いますので・・。
以上、お忙しい中恐縮ですが、宜しくお願い申し上げます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
String だと「 ByRef引数の型が...
-
foreachのなかで次のキーを参照...
-
$_SESSIONに二次元配列を使える...
-
postgresql関数をつかったレコ...
-
配列一致(要素順番は違うが内容...
-
file_existsでファイル名の部分...
-
CSVデータのn番目だけの値を取...
-
PHPでcsvファイルデータ内の一...
-
配列をループでたくさん宣言し...
-
チェックボックス複数選択 mys...
-
fgetsで取り込んだ文字をexplod...
-
行列
-
C言語 最大値と最小値を求めて...
-
cakephpでのトランザクション処...
-
エラーメッセージ(無効な間接...
-
C言語の配列をPush(追加)する...
-
CArrayの要素としてCStringArra...
-
バイナリファイルの内容を、そ...
-
C言語でCSVファイルの行数を読...
-
PHPでCSVを出力するさいに、ル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列をループでたくさん宣言し...
-
$_SESSIONに二次元配列を使える...
-
String だと「 ByRef引数の型が...
-
foreachのなかで次のキーを参照...
-
file_existsでファイル名の部分...
-
PHPのカッコ[ ]の使い方について
-
postgresql関数をつかったレコ...
-
multiple属性のPOSTを配列で受...
-
PHPとMySQLの高速化
-
Smartyのテンプレートからjavas...
-
漢字のソートについて
-
配列一致(要素順番は違うが内容...
-
ネストが深い時のforeachはどう...
-
PHPで配列をPOSTデータで送った...
-
PHP 配列の添字に変数は使えない?
-
PHP 多次元配列変数のデータ受...
-
テキストの処理について
-
レンタルサーバでMYSQLに...
-
PHPにてクラスを配列にすること...
-
配列を回すとき、最後の要素だ...
おすすめ情報