みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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”を使ったりと、断片的には知識はありますが、
体系的に理解できません・・・

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

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

どうぞ、どうぞよろしくお願い致します!!

投稿日時 - 2008-04-07 01:19:51

QNo.3928449

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

これでどうかな

*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を追加するなり応用でいかがでしょう。

投稿日時 - 2008-04-08 11:16:47

ANo.1

これは、PHPの質問ですね。

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

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

具体的なコーディングは、参考URLを見てください。
$_file php でググれば、その他にも出てきますよ。

参考URL:http://www.standpower.com/php_up.html

投稿日時 - 2008-04-07 04:52:21

お礼

すみません・・・たしかにPHPの項目ですね・・( ̄□ ̄|||)

とても参考になりました。

投稿日時 - 2008-04-08 16:20:25

あなたにオススメの質問