2012-04-28 8 views
0

私は、基本的なクライアントプロファイルに使用される既存のmySQLデータベースを持っています。私は各レコードごとに画像を追加する必要があります。フォーム経由で既存のmySQLに写真をアップロードする方法

私はレコードを作成するための入力とテキストエリアを持つフォームを持っています。写真のフィールドはブロブですが、既存のフォームでアップロードを作成するにはどうすればよいですか?どこから始めるべきですか?

これを簡単に行うことができますか?

ありがとうございました。

エリック

+0

によって彼らのすべての画像を表示することができます。これがデフォルトの方法です。 Ajax *はファイル転送に* [1]を使用できません。私はあなたがMySQLを使用してうれしいですが、javascriptはMySQL(addonsなし)と直接通信しません。私のポイントは次のとおりです。サーバー側の言語が必要です。あなたはPHPを使用していますか? '[1] - この機能を実現するためのハッキング可能なメソッドがありますが、現時点でサポートするデフォルトのコアメソッドはありません。 ' – Ohgodwhy

+0

はい、私はPHPを使用しています。私はすでにinsert.phpスクリプトを使ってフォームを使ってレコードを挿入しています。写真のアップロードを既存のスクリプトに組み込むことはできますか? – Erik

答えて

1

私はより良い方法は、画像を格納するためのMySQL DBにブロブを使用するよりもプロファイルごとに画像をアップロードすることだと思います。あなたはファイルをアップロードするためのcopyまたはmove_uploaded_file PHP関数をチェックすることができます。後で必要に応じてそのイメージのサイズを変更できます。 pictuteフィールドをblobからvarcharに変更する必要があります。

ありがとうございました。

+0

アップロード処理にはjavascriptまたはjqueryが必要ですか?何とか私はinsert.phpスクリプトを実行するために提出する前にファイルを準備する必要があります。 – Erik

+0

イメージフィールドが必須の場合は、常にjavascript/jqueryの検証を使用できます。あなたは常にあなたがページを送信してイメージ名を取得します。次にその名前をdbに挿入します。 –

0

パフォーマンス上の理由から、写真をmySqlのblobとしてアップロードすることはありません。代わりに、画像へのパスをmySqlにアップロードし、アップロードクラス(これはhttp://www.verot.net/php_class_upload.htmのようなもの)を使用して画像をサーバーにアップロードします。既存の入力を追加し、フォームタグの最後に "enctype =" multipart/form-data ""を追加して(form enctype = "multipart/form-data" method = "post")、クラスを実装してからあなたの妥当性チェックは、POSTのチェックで、ユーザーがファイルを追加してデータベースに正常に更新されるようにします。

PHP:

if(isset($_POST['upload'])) 
{ 
include_once('class.upload.php'); 
if($_FILES['photo']['size'][0] != 0) //check to see if photo is empty{ 

    //place existing code for data upload here but add photo filepath here 

    $handle = new Upload($file); 
    if ($handle->uploaded) { //if upload was successful 
     $handle->file_new_name_body = $file['name']; 
     $handle->Process("./photos/"); 
    } 
} 

HTML:

既存の写真のために
<form name="form" id="form" action="form.php" enctype="multipart/form-data" method="post"> 
<input type="file" id="photo" name="photo" accept="gif|jpg|jpeg|png"/>    
<button type="submit" class="button" name="upload" id="upload">Upload</button> 

、ちょうどdefault.pngとして彼らのプロフィールの写真を持っており、上記と同じことを行い、更新フォームにそれらを指示。うまくいくはずです。私はテーブルのようなものが列をユーザーと呼ばれているされない何

+0

MySQLで画像を保存しないことで、ここで避けようとしているセキュリティリスクを尋ねることはできますか? – Lock

+0

私は、セキュリティ上の問題ではなくパフォーマンス上の問題を意味しました。 – OneSneakyMofo

1

image_idと呼ばれ、その後、別のテーブルには、列iduser_idfileimages_usersと呼ばれます。私はユーザーが自分のイメージをアップロードできるPHPフォームを持っています。フォームはファイル名の名前を変更します(例:mypicture.jpg、しかし拡張子はそのまま)、images_usersテーブルの次の行IDに変更します。

$getnewimageid = mysql_query("SELECT id FROM images_users ORDER BY id DESC LIMIT 1", $connection); 
$rownewimageid = mysql_fetch_assoc($getnewimageid); 
$new_image_id = $rownewimageid['id']; 
$new_image_id = ($new_image_id + 1); 

形式のファイル拡張子を決定し、その後$new_image_file = "$new_image_id.$extension"

を設定するので、ファイルが$ new_image_id.jpg(EXにmypicture.jpgから名前を変更します:102。jpg);

(私はちょうど開始する方法を説明しようとしている、それは実際にそれを行う方法の説明はありません知っている)

次にフォームは、画像を保存し、画像を割り当てるために2つのMySQLのクエリを行いますユーザー

INSERT INTO images_users (id, user_id, file) VALUES ($new_image_id, $user_id, $new_file_name) 

UPDATE users SET image_id = $new_image_id 

に続いて、後で簡単に特定のユーザーのために表示するためにどのようなファイルrefenceことができます。 images_usersテーブルに複数の行(user_id =そのユーザID)があることで、複数のイメージを持つこともできます。あなたが画像をアップロードしたい場合は、 `は`のを使用する必要があり、

SELECT * FROM images_users WHERE user_id = $user_id 

など

関連する問題