PHPの質問です!フォームから2つのファイルを同時にアップロードし、フォームデータをDBに追記をしたいのですが上手くいきません。アップロードの処理を繰り返す構文と配列になった変数の取出しができていないのが原因かと思われます。(それ以前の問題かもしれませんが…)素人がPHPのサンプルをつぎはぎにしてできたコードは以下の通りです。申し訳ありませんが、どなたかご教授を願えますか?よろしくお願いします!


コードはここからです>>>>http://www.impression.fm/code.html

回答の条件
  • URL必須
  • 1人5回まで
  • 13歳以上
  • 登録:2010/06/09 18:21:09
  • 終了:2010/06/09 21:38:24

回答(4件)

id:Bombastus No.1

ホーエンハイム回答回数409ベストアンサー獲得回数522010/06/09 18:34:43

ポイント100pt

$_FILES["image"]["tmp_name"]の扱いに問題があるかと思われます。

PHPの冒頭部分を下記のようにしてみてください。

if (is_uploaded_file(@$_FILES["image"]["tmp_name"][0])) {
    for ($i = 0; $i < 2; $i++) {
        $finfo = pathinfo($_FILES["image"]["name"][$i]);
        $ext = $finfo["extension"][$i];
        $imgae[$i] = $save_dir.$_FILES["image"]["name"][$i];  
        $det_enc = mb_detect_encoding($string, $enc_disp . ", " . $enc_file);
        if ($det_enc and $det_enc != $enc_file) 
            $image[$i] = mb_convert_encoding($image[$i], $enc_file, $det_enc);
        @copy($_FILES["image"]["tmp_name"][$i], $image[$i]);
    }

id:akeyto

返信ありがとうございます!

早速コピーして再編集してみましたが、ページが表示されませんでした。$imageに格納された変数は$image、$image2と振り分ける構文はなくても動くのでしょうか?

申し訳ありませんが、もう一度、ご教授を願います。

再編集した構文は以下のとおりです。 http://www.impression.fm/code.html

2010/06/09 20:01:25
id:ko8820 No.2

ko8820回答回数1221ベストアンサー獲得回数692010/06/09 18:35:25

ポイント30pt

まずは、ファイル1つアップロードするものをつくり

DBには格納しないで、サーバー側にファイルに出力するものを作成して

動作確認できてから

少しずつ拡張していく

http://q.hatena.ne.jp/answer

id:akeyto

返信ありがとうございます!

ファイルを1つアップロードする方法は、なんとか可能になりましたが…

拡張方法がつかめず仕舞いです。。。何か方法をご存知でしたら、ご教授ください!よろしくお願いします。

再編集した構文は以下のとおりです。 http:/www.impression.fm/code.html

2010/06/09 20:07:01
id:koriki-kozou No.3

koriki-kozou回答回数480ベストアンサー獲得回数792010/06/09 19:05:14

ポイント30pt

動かさずに整形だけして確認してます


(1)動かない原因

if (is_uploaded_file(@$_FILES["image"]["tmp_name"])) {

に対する閉じ括弧が無いのが問題だと思うけど


(2)その他、今後問題となりそうな部分

(a)@ でエラーをスルーしてしまうと、どこが悪いか判らなくなる

エラーが起こる前提のプログラムは破綻する

 issetで変数の存在を事前にチェックをする

 or die

などにしたほうがいい

http://jp2.php.net/manual/ja/function.isset.php

(b)インデントは入れる

HTMLのソースを見てもインデント(字下げ)が無いように見えるのだけど、もしもインデント(字下げ)を入れていないならば面倒でも入れたほうがいい

先ほど見つけたのだけど、コピペするだけで整形してくれるオンラインサービスもあるみたい

http://codeassembly.com/examples/beautifier.php

(c)行が分かれる場合は面倒でもインデントと {かっこ}を使うほうが見やすくなる

if ($det_enc and $det_enc != $enc_file) {
    $image[$i] = mb_convert_encoding($image[$i], $enc_file, $det_enc);
}
id:akeyto

返信ありがとうございます!整形&修正してみます!!

2010/06/09 20:14:50
id:doropon No.4

回答回数94ベストアンサー獲得回数162010/06/09 20:15:17

ポイント50pt

1の方の仰る$_FILES["image"]["tmp_name"]の扱いの問題です。

var_dump($_FILES)

などとしてみると、

渡されてきている中身をみることができます。

複数の指定なのでこういうことが起きるのですが、

地味に2つ目のボックスのみでファイルを指定すると、

["tmp_name"][0]

では動かなかったりします。

渡されているハッシュの構造と、渡ってきたものの中身をみて確認していくことが、

この先つまずいても解決できるようになると思います。

デバッガを使ったりしていくと、またレベルが上がりますので、

いろいろお試しください。

http://q.hatena.ne.jp/1276075267

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません