ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:noguri999 PHPを使って、1ページ内で新規レコードと画像アップロードしたいのですが・・・
困り度:
  • すぐに回答を!
PHP4、MySQL4初心者です。

今回、会員名簿のDBをつくり、PHPを使って、管理者が新規会員(レコード)を登録できるようにプログラミングしています。

フィールドは、「ID」「名前」「住所」「コメント」等の数字や文字データばかりでしたが、今回会員の写真(jpg)データも新規会員登録画面で一緒に登録できるようにして欲しいと要望があり、色々調べておりますが四苦八苦しております・・・

基本的な構造としましては・・・
HTMLファイルにformタグを使って、入力してもらったデータをpostで飛ばして、別ファイル(php)でsql文を書いて、insertしている形です。

その際に一緒に画像も、sbumitする際に所定のフォルダにアップロードして、そのファイル名をimg_id.jpg みたいな形で接頭語とidをくっつけて、作成して、その画像ファイル名をさらに、DBのフィールド”img_name”に登録したいのです。

画像はBLOBでDBにアップではなく、あくまでFTPで後で入って処理しやすいように、public以下のフォルダ内に特定のフォルダを作成してそこにアップしたいと思います。

1ページ以内で処理するということで、かなり困っていますが、いい方法はないでしょうか・・・?

みなさん!
どうかお知恵をお貸しくださいませ!!

ちなみに現在できている登録のコードはこちらです。

-------------(HTML)-------------------------------------
<html>
<body>
<h2>新規会員登録</h2>
<form action="insert.php" method="post">

■会員名 :<input type="text" name="input_name" /><br>
■住 所 :<input type="text" name="input_addr" /><br>
■コメント:<input type="text" name="input_comm" /><br>

<input type="submit" value="-- 登録する --" />
</form>
</body>
</html>
-------------(HTML)-------------------------------------

-------------(PHP:insert.php)--------------------------
<?
$db = mysql_connect("localhost","ユーザー名","パスワード");

mysql_select_db("データベース名");

$query = "set NAMES euc";
$result = mysql_query($query);

// ここで、HTMLフォームの中のinputタグに対応したデータを取得

$name= $_POST["input_name"];
$addr= $_POST["input_addr"];
$comm= $_POST["input_comm"];

$query = "insert into テーブル名(name,addr,comm) values ('$name','$addr','$comm')";
$result = mysql_query($query);

mysql_close($db);
?>

<html>
</head>
<body>

<h2>新規会員登録</h2>
<p>データ登録完了</p>

</body>
</html>
-------------(PHP)--------------------------------------

phpで画像をアップロードするときは formの中に
”enctype=\"multipart/form-data”を入れたり、
”move_uploaded_file”を使ったりと、断片的には知識はありますが、
体系的に理解できません・・・

どなたか、アドバイス頂けましたら幸いです。

あるいは、解説してあるサイトや、フリーのサンプルスクリプト等教えて頂けましたら助かります・・!

どうぞ、どうぞよろしくお願い致します!!
質問投稿日時:08/04/07 01:19
質問番号:3928449
この質問に対する回答は締め切られました。
最新から表示回答順に表示

回答

 

回答者:Rebe これでどうかな

*HTML---------------------
<form action="insert.php" method="post" enctype="multipart/form-data">
画像:<input type='file' name='image_file'><input type='submit' value='アップロード' name='OK'>
--------------------------
*PHP----------------------
if( $_POST[ "OK" ] != "" ){
$_POST[ "OK" ] = "";

// アップロード画像保存用フォルダ
$imgdir = "./img/upload/";

// 画像ファイルのエラーチェック
$err_msg = Image_Check( $_FILES['image_file']['name'] );

// 問題が無ければ画像保存
if ($err_msg == "") {
$image_name = $id . ".jpg";
move_uploaded_file($_FILES['image_file']['tmp_name'], $imgdir . $image_name);
}

function Image_Check($chk_photo) {
if ($chk_photo == "") {
$err_msg = "送信ファイル名が未入力です。";
}
if ($chk_photo != "") {
if ( (strpos($chk_photo, ".jpg") != 0) ||
(strpos($chk_photo, ".jpeg") != 0) ||
(strpos($chk_photo, ".JPG") != 0) ||
(strpos($chk_photo, ".JPEG") != 0) || ) {
} else {
$err_msg = "送信できる画像はJPGのみです。";
}
}
return $err_msg;
}

あとは拡張子を判別させるなり、画像情報を取得してエラー吐くなり画像情報のDBを追加するなり応用でいかがでしょう。
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:08/04/08 11:16
回答番号:No.2
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

 

回答者:masa6272 これは、PHPの質問ですね。

PHPに限らず、画像アップの時は、multipart/form-dataを指定します。これは、フォームデータの中に文字以外のデータを一緒に送るときに、必要です。どこからが、バイナリーデータかなどを、送信データの中に含めます。
PHPは、これを自動的に解析して、プログラムですぐ使えるように、準備してくれますので、かえって理屈が分かりにくくなっていますね。

PHPでは、画像(画像には限りませんが)などのアップロードされたファイルを、一時的にファイルシステムに格納し、その情報を$_FILEに入れます。この一時的なファイルは、PHPプログラム終了時には、削除されますので、プログラムの中で、自分の管理する恒久的なディレクトリに保存する必要があります。

具体的なコーディングは、参考URLを見てください。
$_file php でググれば、その他にも出てきますよ。
種類:回答
どんな人:専門家
自信:自信あり
回答日時:08/04/07 04:52
回答番号:No.1
参考URL: http://www.standpower.com/php_up.html
この回答へのお礼すみません・・・たしかにPHPの項目ですね・・( ̄□ ̄|||)

とても参考になりました。
 
最新から表示回答順に表示